libmicrohttpd.vapi 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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_USE_SELECT_INTERNALLY")]
  28. public const uint USE_SELECT_INTERNALLY;
  29. [CCode (cname = "MHD_USE_THREAD_PER_CONNECTION")]
  30. public const uint USE_THREAD_PER_CONNECTION;
  31. [CCode (cname = "MHD_USE_DEBUG")]
  32. public const uint USE_DEBUG;
  33. [CCode (cname = "MHD_ALLOW_SUSPEND_RESUME")]
  34. public const uint ALLOW_SUSPEND_RESUME;
  35. [CCode (cname = "MHD_OPTION_END")]
  36. public const int OPTION_END;
  37. [SimpleType]
  38. [CCode (cname = "struct MHD_Connection*")]
  39. public struct Connection {}
  40. [CCode (cname = "int", cprefix = "MHD_")]
  41. public enum Result {
  42. YES = 1,
  43. NO = 0
  44. }
  45. [Compact]
  46. [CCode (cname = "struct MHD_Response", free_function = "MHD_destroy_response")]
  47. public class Response {
  48. [CCode (cname = "MHD_create_response_from_buffer")]
  49. public Response.from_buffer (size_t size, [CCode(array_length=false)] uint8[] buffer, ResponseMemoryMode mode);
  50. [CCode (cname = "MHD_add_response_header")]
  51. public int add_header (string header, string content);
  52. }
  53. [Compact]
  54. [CCode (cname = "struct MHD_Daemon", free_function = "MHD_stop_daemon")]
  55. public class Daemon {
  56. [CCode (cname = "MHD_start_daemon")]
  57. public static Daemon start (uint flags, uint16 port,
  58. AcceptPolicyCallback? apc,
  59. AccessHandlerCallback dh,
  60. ...);
  61. }
  62. [CCode (instance_pos = 0)]
  63. public delegate int AcceptPolicyCallback (void* cls, void* addr, uint addrlen);
  64. [CCode (instance_pos = 0)]
  65. public delegate int AccessHandlerCallback (Connection connection,
  66. string? url, string? method, string? version,
  67. string? upload_data, [CCode(array_length=false)] size_t* upload_data_size,
  68. void** con_cls);
  69. [CCode (cname = "MHD_queue_response")]
  70. public int queue_response (Connection connection, uint status_code, Response response);
  71. [CCode (cname = "MHD_suspend_connection")]
  72. public int suspend_connection (Connection connection);
  73. [CCode (cname = "MHD_resume_connection")]
  74. public int resume_connection (Connection connection);
  75. [CCode (cname = "MHD_lookup_connection_value")]
  76. public unowned string? lookup_connection_value (Connection connection, ValueKind kind, string key);
  77. [CCode (has_target = false)]
  78. public delegate Result KeyValueIterator (void* cls, ValueKind kind, string key, string? value);
  79. [CCode (cname = "MHD_get_connection_values")]
  80. public int get_connection_values (Connection connection, ValueKind kind, KeyValueIterator? iterator, void* iterator_cls = null);
  81. [CCode (cname = "enum MHD_ConnectionInfoType", cprefix = "MHD_CONNECTION_INFO_")]
  82. public enum ConnectionInfoType {
  83. CIPHER_ALGO,
  84. PROTOCOL,
  85. CLIENT_ADDRESS,
  86. GNUTLS_SESSION,
  87. GNUTLS_CLIENT_CERT,
  88. DAEMON,
  89. CONNECTION_FD,
  90. SOCKET_CONTEXT,
  91. CONNECTION_SUSPENDED,
  92. CONNECTION_TIMEOUT,
  93. REQUEST_HEADER_SIZE,
  94. HTTP_STATUS
  95. }
  96. [CCode (cname = "union MHD_ConnectionInfo", has_type_id = false)]
  97. public struct ConnectionInfo {
  98. [CCode (cname = "cipher_algorithm")]
  99. public int cipher_algorithm;
  100. [CCode (cname = "protocol")]
  101. public int protocol;
  102. [CCode (cname = "client_cert")]
  103. public void* client_cert;
  104. [CCode (cname = "tls_session")]
  105. public void* tls_session;
  106. [CCode (cname = "daemon")]
  107. public Daemon* daemon;
  108. [CCode (cname = "connect_fd")]
  109. public int connect_fd;
  110. [CCode (cname = "socket_context")]
  111. public void* socket_context;
  112. [CCode (cname = "suspended")]
  113. public int suspended;
  114. [CCode (cname = "connection_timeout")]
  115. public uint connection_timeout;
  116. [CCode (cname = "client_addr")]
  117. public void* client_addr;
  118. [CCode (cname = "header_size")]
  119. public size_t header_size;
  120. [CCode (cname = "http_status")]
  121. public uint http_status;
  122. }
  123. [CCode (cname = "MHD_get_connection_info")]
  124. public unowned ConnectionInfo? get_connection_info (Connection connection, ConnectionInfoType info_type);
  125. }