libmicrohttpd.vapi 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. [CCode (cheader_filename = "microhttpd.h")]
  2. namespace MHD {
  3. [CCode (cname = "enum MHD_ValueKind", cprefix = "MHD_")]
  4. public enum ValueKind {
  5. RESPONSE_HEADER_KIND,
  6. HEADER_KIND,
  7. COOKIE_KIND,
  8. POSTDATA_KIND,
  9. GET_ARGUMENT_KIND,
  10. FOOTER_KIND
  11. }
  12. [CCode (cname = "enum MHD_RequestTerminationCode", cprefix = "MHD_REQUEST_TERMINATED_")]
  13. public enum RequestTerminationCode {
  14. COMPLETED_OK,
  15. WITH_ERROR,
  16. TIMEOUT_REACHED,
  17. DAEMON_SHUTDOWN,
  18. READ_ERROR,
  19. CLIENT_ABORT
  20. }
  21. [CCode (cname = "enum MHD_ResponseMemoryMode", cprefix = "MHD_")]
  22. public enum ResponseMemoryMode {
  23. RESPMEM_PERSISTENT,
  24. RESPMEM_MUST_FREE,
  25. RESPMEM_MUST_COPY
  26. }
  27. [CCode (cname = "MHD_CONTENT_READER_END_OF_STREAM")]
  28. public const ssize_t CONTENT_READER_END_OF_STREAM;
  29. [CCode (cname = "MHD_CONTENT_READER_END_WITH_ERROR")]
  30. public const ssize_t CONTENT_READER_END_WITH_ERROR;
  31. [CCode (cname = "MHD_USE_SELECT_INTERNALLY")]
  32. public const uint USE_SELECT_INTERNALLY;
  33. [CCode (cname = "MHD_USE_THREAD_PER_CONNECTION")]
  34. public const uint USE_THREAD_PER_CONNECTION;
  35. [CCode (cname = "MHD_USE_DEBUG")]
  36. public const uint USE_DEBUG;
  37. [CCode (cname = "MHD_ALLOW_SUSPEND_RESUME")]
  38. public const uint ALLOW_SUSPEND_RESUME;
  39. [CCode (cname = "MHD_OPTION_END")]
  40. public const int OPTION_END;
  41. [CCode (cname = "MHD_OPTION_NOTIFY_COMPLETED")]
  42. public const int OPTION_NOTIFY_COMPLETED;
  43. [SimpleType]
  44. [CCode (cname = "struct MHD_Connection*")]
  45. public struct Connection {}
  46. [CCode (cname = "int", cprefix = "MHD_")]
  47. public enum Result {
  48. YES = 1,
  49. NO = 0
  50. }
  51. [Compact]
  52. [CCode (cname = "struct MHD_Response", free_function = "MHD_destroy_response")]
  53. public class Response {
  54. [CCode (cname = "MHD_create_response_from_buffer")]
  55. public Response.from_buffer (size_t size, [CCode(array_length=false)] uint8[] buffer, ResponseMemoryMode mode);
  56. [CCode (cname = "MHD_create_response_from_callback")]
  57. public Response.from_callback (uint64 size, size_t block_size, ContentReaderCallback crc, void* crc_cls, ContentReaderFreeCallback? crfc);
  58. [CCode (cname = "MHD_add_response_header")]
  59. public int add_header (string header, string content);
  60. }
  61. [Compact]
  62. [CCode (cname = "struct MHD_Daemon", free_function = "MHD_stop_daemon")]
  63. public class Daemon {
  64. [CCode (cname = "MHD_start_daemon")]
  65. public static Daemon start (uint flags, uint16 port,
  66. AcceptPolicyCallback? apc,
  67. AccessHandlerCallback dh,
  68. ...);
  69. }
  70. [CCode (instance_pos = 0)]
  71. public delegate int AcceptPolicyCallback (void* cls, void* addr, uint addrlen);
  72. [CCode (instance_pos = 0)]
  73. public delegate int AccessHandlerCallback (Connection connection,
  74. string? url, string? method, string? version,
  75. string? upload_data, [CCode(array_length=false)] size_t* upload_data_size,
  76. void** con_cls);
  77. [CCode (has_target = false)]
  78. public delegate ssize_t ContentReaderCallback (void* cls, uint64 pos, char* buf, size_t max);
  79. [CCode (has_target = false, cname = "MHD_ContentReaderFreeCallback")]
  80. public delegate void ContentReaderFreeCallback (void* cls);
  81. [CCode (cname = "MHD_queue_response")]
  82. public int queue_response (Connection connection, uint status_code, Response response);
  83. [CCode (cname = "MHD_suspend_connection")]
  84. public int suspend_connection (Connection connection);
  85. [CCode (cname = "MHD_resume_connection")]
  86. public int resume_connection (Connection connection);
  87. [CCode (cname = "MHD_lookup_connection_value")]
  88. public unowned string? lookup_connection_value (Connection connection, ValueKind kind, string key);
  89. [CCode (has_target = false)]
  90. public delegate Result KeyValueIterator (void* cls, ValueKind kind, string key, string? value);
  91. [CCode (has_target = false, cname = "MHD_RequestCompletedCallback")]
  92. public delegate void RequestCompletedCallback (void* cls, Connection connection, void** con_cls, RequestTerminationCode toe);
  93. [CCode (cname = "MHD_get_connection_values")]
  94. public int get_connection_values (Connection connection, ValueKind kind, KeyValueIterator? iterator, void* iterator_cls = null);
  95. [CCode (cname = "enum MHD_ConnectionInfoType", cprefix = "MHD_CONNECTION_INFO_")]
  96. public enum ConnectionInfoType {
  97. CIPHER_ALGO,
  98. PROTOCOL,
  99. CLIENT_ADDRESS,
  100. GNUTLS_SESSION,
  101. GNUTLS_CLIENT_CERT,
  102. DAEMON,
  103. CONNECTION_FD,
  104. SOCKET_CONTEXT,
  105. CONNECTION_SUSPENDED,
  106. CONNECTION_TIMEOUT,
  107. REQUEST_HEADER_SIZE,
  108. HTTP_STATUS
  109. }
  110. [CCode (cname = "union MHD_ConnectionInfo", has_type_id = false)]
  111. public struct ConnectionInfo {
  112. [CCode (cname = "cipher_algorithm")]
  113. public int cipher_algorithm;
  114. [CCode (cname = "protocol")]
  115. public int protocol;
  116. [CCode (cname = "client_cert")]
  117. public void* client_cert;
  118. [CCode (cname = "tls_session")]
  119. public void* tls_session;
  120. [CCode (cname = "daemon")]
  121. public Daemon* daemon;
  122. [CCode (cname = "connect_fd")]
  123. public int connect_fd;
  124. [CCode (cname = "socket_context")]
  125. public void* socket_context;
  126. [CCode (cname = "suspended")]
  127. public int suspended;
  128. [CCode (cname = "connection_timeout")]
  129. public uint connection_timeout;
  130. [CCode (cname = "client_addr")]
  131. public void* client_addr;
  132. [CCode (cname = "header_size")]
  133. public size_t header_size;
  134. [CCode (cname = "http_status")]
  135. public uint http_status;
  136. }
  137. [CCode (cname = "MHD_get_connection_info")]
  138. public unowned ConnectionInfo? get_connection_info (Connection connection, ConnectionInfoType info_type);
  139. }