Asynchronous HTTP Client - Clojure - To Do

Table of Contents

1 Receive [6/6]    code rel1

1.1 DONE Status Line    rel1

1.2 DONE Headers    rel1

1.3 DONE Body    rel1

Instead of id, pass (ref {}) to callbacks so they have their own STM ref'ed map.

1.4 DONE Implement response promise    rel1

1.5 DONE Consume stream    rel1

1.6 DONE Error function    rel1

2 Send [8/10]    code

2.1 DONE Query parameters    rel1

2.2 DONE Parameters    rel1

2.3 DONE Parameters allowed only on PUT/POST    rel1

2.4 DONE Cookies    rel3

2.4.1 DONE Describe    rel3

2.5 DONE PUT/POST body [3/3]    rel1

2.5.1 DONE Support sending strings    rel1

2.5.2 DONE Support sending map as form encoded data    rel1

2.5.3 DONE Support InputStream body    rel1

2.6 DONE All HTTP verbs [7/7]

2.6.1 DONE GET    rel1

2.6.2 DONE POST    rel1

2.6.3 DONE PUT    rel1

2.6.4 DONE DELETE    rel1

2.6.5 DONE HEAD    rel1

2.6.6 DONE OPTIONS    rel1

2.6.7 DONE Others, once supported by AHC-Java    rel4

2.7 TODO PUT/POST streaming body    rel4

That can be done with clojure.core/add-watch. Watcher in that scenario will grab new content and write it via AHC, or alternatively will clojure.core/send-off to execute IO operation in separate thread.

2.8 DONE Multipart    rel4

2.9 TODO Request queuing

2.10 DONE Authentication    rel3

2.10.1 DONE Test Authentication

3 Configuration [2/2]

3.1 DONE Global configuration of AHC [4/4]    rel4

3.1.1 DONE Branding User-agent    rel3

3.1.2 DONE Connection limiting per host.    rel4

3.1.3 DONE Global proxy.    rel4

3.1.4 DONE Timeout settings    rel4

3.1.4.1 DONE Request timeout    rel4
3.1.4.2 DONE Connection timeout    rel4
3.1.4.3 DONE Idle connection timeout    rel4

3.2 DONE Per request configuration [2/2]    rel4

3.2.1 DONE Proxy configuration    rel3

3.2.2 DONE Timeout    rel4

3.2.2.1 DONE Request timeout    rel4
3.2.2.2 DONE Connection timeout    rel4
3.2.2.3 DONE Idle connection timeout    rel4

4 Tasks [12/12]

4.1 DONE License    rel1

4.2 DONE Cleanup namespaces    rel1

4.2.1 async.http.client

Should contain helper functions to call all HTTP verbs. Default set of call-backs.

4.2.2 async.http.client.request

Lower level of requesting:

  • execute-request
  • prepare-request

4.3 DONE Release 0.1.0    rel1

4.4 DONE Release 0.1.1    rel2

4.5 DONE Release 0.2.0    rel3

Changes:

  • Stream as seq
  • Streams used instead of byte vectors (issue-1)
  • keyworded maps are used in api

4.5.1 DONE Create a changelog    rel3

4.6 DONE Release 0.2.1

Release bumps version of async-http-client to v1.3.2.

4.7 DONE Make tests stand-alone    rel1

Test suite should not fail when there is now hello-www on port 8080.

4.8 DONE Simplify request preparation    rel1

For now fns like GET will call prepare-get that will call prepare-reqeust. I don't think prepare-get is necessary, should be quite fine to only use prepare-request.

4.9 DONE Use last argument as key worded map    rel3

As suggested by Licenser on #clojure here.

4.10 DONE Review documentation    rel3

4.11 DONE Refactoring [1/1]    rel3

4.11.1 DONE Refactor execute-request [2/2]

4.11.1.1 DONE Build checkable promise

To check if promise was delivered use delivered?

4.11.1.2 DONE Unify execute-request and consume-stream interfaces
  • Use new checkable promise for different parts of response
  • Use normal map for response instead of (ref {})
  • Provide helper functions to deal with metadata on response

4.12 DONE Rename to http.async.client    rel3

Date: 2012-05-04 23:06:11 CEST

Author: Hubert Iwaniuk

Org version 7.8.03 with Emacs version 24

Validate XHTML 1.0