1cb93a386Sopenharmony_ci/* Feel free to use this example code in any way
2cb93a386Sopenharmony_ci   you see fit (Public Domain) */
3cb93a386Sopenharmony_ci
4cb93a386Sopenharmony_ci#include <sys/types.h>
5cb93a386Sopenharmony_ci#ifndef _WIN32
6cb93a386Sopenharmony_ci#include <sys/select.h>
7cb93a386Sopenharmony_ci#include <sys/socket.h>
8cb93a386Sopenharmony_ci#else
9cb93a386Sopenharmony_ci#include <winsock2.h>
10cb93a386Sopenharmony_ci#endif
11cb93a386Sopenharmony_ci#include <microhttpd.h>
12cb93a386Sopenharmony_ci#include <stdio.h>
13cb93a386Sopenharmony_ci
14cb93a386Sopenharmony_ci#define PORT 8888
15cb93a386Sopenharmony_ci
16cb93a386Sopenharmony_ci
17cb93a386Sopenharmony_cistatic int
18cb93a386Sopenharmony_ciprint_out_key (void *cls, enum MHD_ValueKind kind, const char *key,
19cb93a386Sopenharmony_ci               const char *value)
20cb93a386Sopenharmony_ci{
21cb93a386Sopenharmony_ci  printf ("%s: %s\n", key, value);
22cb93a386Sopenharmony_ci  return MHD_YES;
23cb93a386Sopenharmony_ci}
24cb93a386Sopenharmony_ci
25cb93a386Sopenharmony_ci
26cb93a386Sopenharmony_cistatic int
27cb93a386Sopenharmony_cianswer_to_connection (void *cls, struct MHD_Connection *connection,
28cb93a386Sopenharmony_ci                      const char *url, const char *method,
29cb93a386Sopenharmony_ci                      const char *version, const char *upload_data,
30cb93a386Sopenharmony_ci                      size_t *upload_data_size, void **con_cls)
31cb93a386Sopenharmony_ci{
32cb93a386Sopenharmony_ci  printf ("New %s request for %s using version %s\n", method, url, version);
33cb93a386Sopenharmony_ci
34cb93a386Sopenharmony_ci  MHD_get_connection_values (connection, MHD_HEADER_KIND, print_out_key,
35cb93a386Sopenharmony_ci                             NULL);
36cb93a386Sopenharmony_ci
37cb93a386Sopenharmony_ci  return MHD_NO;
38cb93a386Sopenharmony_ci}
39cb93a386Sopenharmony_ci
40cb93a386Sopenharmony_ci
41cb93a386Sopenharmony_ciint
42cb93a386Sopenharmony_cimain ()
43cb93a386Sopenharmony_ci{
44cb93a386Sopenharmony_ci  struct MHD_Daemon *daemon;
45cb93a386Sopenharmony_ci
46cb93a386Sopenharmony_ci  daemon = MHD_start_daemon (MHD_USE_SELECT_INTERNALLY, PORT, NULL, NULL,
47cb93a386Sopenharmony_ci                             &answer_to_connection, NULL, MHD_OPTION_END);
48cb93a386Sopenharmony_ci  if (NULL == daemon)
49cb93a386Sopenharmony_ci    return 1;
50cb93a386Sopenharmony_ci
51cb93a386Sopenharmony_ci  (void) getchar ();
52cb93a386Sopenharmony_ci
53cb93a386Sopenharmony_ci  MHD_stop_daemon (daemon);
54cb93a386Sopenharmony_ci  return 0;
55cb93a386Sopenharmony_ci}
56