TODO 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. /* List of interfaces needing reference documentation. -*- c -*- */
  2. /* ne_session.h */
  3. ### DONE: basics
  4. ne_session *ne_session_create(const char *scheme, const char *hostname, int port);
  5. void ne_session_destroy(ne_session *sess);
  6. void ne_close_connection(ne_session *sess);
  7. void ne_session_proxy(ne_session *sess, const char *hostname, int port);
  8. ### DONE: error handling
  9. void ne_set_error(ne_session *sess, const char *format, ...);
  10. const char *ne_get_error(ne_session *sess);
  11. ### DONE: options
  12. void ne_set_useragent(ne_session *sess, const char *product);
  13. void ne_set_expect100(ne_session *sess, int use_expect100);
  14. void ne_set_persist(ne_session *sess, int persist);
  15. void ne_set_read_timeout(ne_session *sess, int timeout);
  16. ### TODO: progress + status callbcacks
  17. void ne_set_progress(ne_session *sess, ne_progress progress, void *userdata);
  18. ### TODO: status callback
  19. typedef enum ne_conn_status;
  20. typedef void (*ne_notify_status)(void *userdata, ne_conn_status status, const char *info);
  21. void ne_set_status(ne_session *sess, ne_notify_status status, void *userdata);
  22. ### DONE: SSL verification
  23. typedef struct ne_ssl_dname;
  24. char *ne_ssl_readable_dname(const ne_ssl_dname *dn);
  25. typedef struct ne_ssl_certificate;
  26. #define NE_SSL_*
  27. typedef int (*ne_ssl_verify_fn)(void *userdata, int failures,
  28. const ne_ssl_certificate *cert);
  29. void ne_ssl_set_verify(ne_session *sess, ne_ssl_verify_fn fn, void *userdata);
  30. ### DONE: SSL server certs
  31. int ne_ssl_load_ca(ne_session *sess, const char *file);
  32. int ne_ssl_load_default_ca(ne_session *sess);
  33. ### TODO: SSL client certs
  34. typedef int (*ne_ssl_keypw_fn)(void *userdata, char *pwbuf, size_t len);
  35. void ne_ssl_keypw_prompt(ne_session *sess, ne_ssl_keypw_fn fn, void *ud);
  36. int ne_ssl_load_pkcs12(ne_session *sess, const char *fn);
  37. int ne_ssl_load_pem(ne_session *sess, const char *certfn, const char *keyfn);
  38. typedef void (*ne_ssl_provide_fn)(void *userdata, ne_session *sess,
  39. const ne_ssl_dname *server);
  40. void ne_ssl_provide_ccert(ne_session *sess, ne_ssl_provide_fn fn, void *userdata);
  41. #ifdef NEON_SSL
  42. SSL_CTX *ne_ssl_get_context(ne_session *sess);
  43. X509 *ne_ssl_server_cert(ne_session *req);
  44. #endif
  45. ### TODO: utility functions
  46. int ne_version_pre_http11(ne_session *sess);
  47. const char *ne_get_server_hostport(ne_session *sess);
  48. const char *ne_get_scheme(ne_session *sess);
  49. void ne_fill_server_uri(ne_session *sess, ne_uri *uri);
  50. /* end of ne_session.h *****************************************/
  51. /* ne_request.h */
  52. ### DONE: request basics
  53. ne_request *ne_request_create(ne_session *sess, const char *method, const char *path);
  54. int ne_request_dispatch(ne_request *req);
  55. void ne_request_destroy(ne_request *req);
  56. ### DONE: request status
  57. const ne_status *ne_get_status(ne_request *req);
  58. ### TODO: request bodies
  59. void ne_set_request_body_buffer(ne_request *req, const char *buf, size_t count);
  60. int ne_set_request_body_fd(ne_request *req, int fd, size_t count);
  61. typedef ssize_t (*ne_provide_body)(void *userdata,
  62. char *buffer, size_t buflen);
  63. void ne_set_request_body_provider(ne_request *req, size_t size,
  64. ne_provide_body provider, void *userdata);
  65. ### TODO: response bodies
  66. typedef int (*ne_accept_response)(void *userdata, ne_request *req, ne_status *st);
  67. int ne_accept_2xx(void *userdata, ne_request *req, ne_status *st);
  68. int ne_accept_always(void *userdata, ne_request *req, ne_status *st);
  69. void ne_add_response_body_reader(ne_request *req, ne_accept_response accpt,
  70. ne_block_reader reader, void *userdata);
  71. ### TODO: response headers
  72. typedef void (*ne_header_handler)(void *userdata, const char *value);
  73. void ne_add_response_header_handler(ne_request *req, const char *name,
  74. ne_header_handler hdl, void *userdata);
  75. void ne_add_response_header_catcher(ne_request *req,
  76. ne_header_handler hdl, void *userdata);
  77. void ne_duplicate_header(void *userdata, const char *value);
  78. void ne_handle_numeric_header(void *userdata, const char *value);
  79. ### DONE: request headers
  80. void ne_add_request_header(ne_request *req, const char *name, const char *value);
  81. void ne_print_request_header(ne_request *req, const char *name, const char *format, ...);
  82. ### TODO: misc
  83. ne_session *ne_get_session(ne_request *req);
  84. ### TODO: caller-pulls request interface
  85. int ne_begin_request(ne_request *req);
  86. int ne_end_request(ne_request *req);
  87. ssize_t ne_read_response_block(ne_request *req, char *buffer, size_t buflen);
  88. ### TODO: hooks
  89. typedef void (*ne_free_hooks)(void *cookie);
  90. typedef void (*ne_create_request_fn)(void *userdata, ne_request *req,
  91. const char *method, const char *path);
  92. void ne_hook_create_request(ne_session *sess, ne_create_request_fn fn, void *userdata);
  93. typedef void (*ne_pre_send_fn)(void *userdata, ne_buffer *header);
  94. void ne_hook_pre_send(ne_session *sess, ne_pre_send_fn fn, void *userdata);
  95. typedef int (*ne_post_send_fn)(void *userdata, const ne_status *status);
  96. void ne_hook_post_send(ne_session *sess, ne_post_send_fn fn, void *userdata);
  97. typedef void (*ne_destroy_fn)(void *userdata);
  98. void ne_hook_destroy_request(ne_session *sess, ne_destroy_fn fn, void *userdata);
  99. void ne_hook_destroy_session(ne_session *sess, ne_destroy_fn fn, void *userdata);
  100. typedef void *(*ne_accessor_fn)(void *userdata);
  101. void ne_hook_session_accessor(ne_session *sess, const char *id, ne_accessor_fn, void *userdata);
  102. void ne_hook_request_accessor(ne_request *req, const char *id, ne_accessor_fn, void *userdata);
  103. void *ne_null_accessor(void *userdata);
  104. void *ne_session_hook_private(ne_session *sess, const char *id);
  105. void *ne_request_hook_private(ne_request *req, const char *id);
  106. /* ne_207.h */
  107. /* ne_acl.h */
  108. /* DONE: ne_alloc.h */
  109. /* DONE: ne_auth.h */
  110. /* ne_basic.h */
  111. /* ne_compress.h */
  112. /* ne_cookies.h */
  113. /* ne_dates.h */
  114. /* ne_locks.h */
  115. /* ne_props.h */
  116. /* ne_redirect.h */
  117. /* ne_socket.h */
  118. /* MOSTLY DONE: ne_string.h */
  119. /* ne_uri.h */
  120. /* ne_utils.h */
  121. /* ne_xml.h */