Christian Grothoff 19 سال پیش
والد
کامیت
efc8c3cc53
1فایلهای تغییر یافته به همراه65 افزوده شده و 33 حذف شده
  1. 65 33
      src/include/microhttpd.h

+ 65 - 33
src/include/microhttpd.h

@@ -57,6 +57,11 @@ extern "C" {
 
 #define MHD_NO 0
 
+#define MHD_HTTP_OK 200
+
+#define MHD_HTTP_NOT_FOUND 404
+
+
 /**
  * Options for the MHD daemon.  Note that if neither
  * MHD_USER_THREAD_PER_CONNECTION nor MHD_USE_SELECT_INTERNALLY are
@@ -110,6 +115,39 @@ enum MHD_OPTION {
   MHD_USE_IPv6 = 32,
 };
 
+/**
+ * The MHD_ValueKind specifies the source of
+ * the key-value pairs in the HTTP protocol.
+ */
+enum MHD_ValueKind {
+
+  /**
+   * Response header
+   */
+  MHD_RESPONSE_HEADER_KIND = 0;
+
+  /**
+   * HTTP header
+   */
+  MHD_HEADER_KIND = 1;
+
+  /**
+   * Cookies
+   */
+  MHD_COOKIE_KIND = 2;
+
+  /**
+   * POST data
+   */
+  MHD_POSTDATA_KIND = 4;
+
+  /**
+   * GET (URI) arguments
+   */
+  MHD_GET_ARGUMENT_KIND = 8;
+
+};
+
 struct MHD_Daemon;
 
 struct MHD_Session;
@@ -131,9 +169,9 @@ typedef int
 
 /**
  * A client has requested the given url using the given method ("GET",
- * "PUT" or "POST").  The callback must call MHS callbacks to provide
- * content to give back to the client and return an HTTP status code
- * (i.e. 200 for OK, 404, etc.).
+ * "PUT", "DELETE", "POST", etc).  The callback must call MHS
+ * callbacks to provide content to give back to the client and return
+ * an HTTP status code (i.e. 200 for OK, 404, etc.).
  *
  * @return MHS_YES if the connection was handled successfully,
  *         MHS_NO if the socket must be closed due to a serios
@@ -157,6 +195,7 @@ typedef int
  */
 typedef int
 (*MHD_KeyValueIterator)(void * cls,
+			enum MHD_ValueKind kind,
 			const char * key,
 			const char * value);
 
@@ -239,7 +278,7 @@ int
 MHD_get_fdset(struct MHD_Daemon * daemon,
 	      fd_set * read_fd_set,
 	      fd_set * write_fd_set,
-	      fd_set * exc_fd_set,
+	      fd_set * except_fd_set,
 	      int * max_fd);
 
 /**
@@ -292,42 +331,22 @@ MHD_unregister_handler(struct MHD_Daemon * daemon,
  * @return number of entries iterated over
  */ 
 int
-MHD_get_session_headers(struct MHD_Session * session,
-			MHD_KeyValueIterator * iterator,
-			void * iterator_cls);
+MHD_get_session_values(struct MHD_Session * session,
+		       enum MHD_ValueKind kind,
+		       MHD_KeyValueIterator * iterator,
+		       void * iterator_cls);
 
 /**
- * Get a particular header value.
+ * Get a particular header value.  If multiple
+ * values match the kind, return any one of them.
  *
  * @param key the header to look for
  * @return NULL if no such item was found
  */ 
 const char *
-MHD_lookup_session_header(struct MHD_Session * session,
-			  const char * key);
-
-/**
- * Get all of the form fields from POST.
- *
- * @param iterator callback to call on each header;
- *        maybe NULL (then just count headers)
- * @param iterator_cls extra argument to iterator
- * @return number of entries iterated over
- */ 
-int
-MHD_get_post_items(struct MHD_Session * session,
-		   MHD_KeyValueIterator * iterator,
-		   void * iterator_cls);
-
-/**
- * Get a particular form field from POST.
- *
- * @param key the field to look for
- * @return NULL if no such item was found
- */ 
-const char *
-MHD_lookup_post_item(struct MHD_Session * session,
-		     const char * key);
+MHD_lookup_session_value(struct MHD_Session * session,
+			 enum MHD_ValueKind kind,
+			 const char * key);
 
 /**
  * Queue a response to be transmitted to the client (as soon as
@@ -343,6 +362,7 @@ int
 MHD_queue_response(struct MHD_Session * session,
 		   unsigned int status_code,
 		   struct MHD_Response * response);
+
 	       
 /**
  * Create a response object.  The response object can be extended with
@@ -420,6 +440,18 @@ MHD_get_response_headers(struct MHD_Response * response,
 			 MHD_KeyValueIterator * iterator,
 			 void * iterator_cls);
 
+/**
+ * FIXME-CHRIS
+ * @return -1 if no data uploaded; otherwise number of bytes
+ *            read into buf; 0 for end of transmission
+ */
+int 
+MHD_read_file_upload(struct MHD_Session * session,
+		     void * buf,
+		     size_t len);
+
+
+
 #if 0 /* keep Emacsens' auto-indent happy */
 {
 #endif