Subversion Repositories Kolibri OS

Rev

Rev 5621 | Rev 5631 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. //HTTP library
  2. #ifndef INCLUDE_LIBHTTP_H
  3. #define INCLUDE_LIBHTTP_H
  4.  
  5. #ifndef INCLUDE_KOLIBRI_H
  6. #include "../lib/kolibri.h"
  7. #endif
  8.  
  9. #ifndef INCLUDE_DLL_H
  10. #include "../lib/dll.h"
  11. #endif
  12.  
  13. dword libHTTP = #alibHTTP;
  14. char alibHTTP[23] = "/sys/lib/http.obj\0";
  15.  
  16. dword http_lib_init          = #aLib_init;
  17. dword http_get               = #aHTTPget;
  18. dword http_head              = #aHTTPhead;
  19. dword http_post              = #aHTTPpost;
  20. dword http_find_header_field = #aFHF;
  21. dword http_send              = #aHTTPsend;
  22. dword http_receive           = #aHTTPreceive;
  23. dword http_disconnect        = #aHTTPdisconnect;
  24. dword http_free              = #aHTTPfree;
  25. dword uri_escape             = #aURIescape;
  26. dword uri_unescape           = #aURIunescape;
  27. $DD 2 dup 0
  28.  
  29. char aLib_init[9]              = "lib_init\0";
  30. char aHTTPget[4]               = "get\0";
  31. char aHTTPhead[5]              = "head\0";
  32. char aHTTPpost[5]              = "post\0";
  33. char aFHF[18]                  = "find_header_field\0";
  34. char aHTTPsend[5]              = "send\0";
  35. char aHTTPreceive[8]           = "receive\0";
  36. char aHTTPdisconnect[11]       = "disconnect\0";
  37. char aHTTPfree[5]              = "free\0";
  38. char aURIescape[7]             = "escape\0";
  39. char aURIunescape[9]           = "unescape\0";
  40.  
  41. // status flags
  42. #define FLAG_HTTP11             1 << 0
  43. #define FLAG_GOT_HEADER         1 << 1
  44. #define FLAG_GOT_ALL_DATA       1 << 2
  45. #define FLAG_CONTENT_LENGTH     1 << 3
  46. #define FLAG_CHUNKED            1 << 4
  47. #define FLAG_CONNECTED          1 << 5
  48.  
  49. // user flags
  50. #define FLAG_KEEPALIVE          1 << 8
  51. #define FLAG_MULTIBUFF                  1 << 9
  52.  
  53. // error flags
  54. #define FLAG_INVALID_HEADER     1 << 16
  55. #define FLAG_NO_RAM             1 << 17
  56. #define FLAG_SOCKET_ERROR       1 << 18
  57. #define FLAG_TIMEOUT_ERROR      1 << 19
  58. #define FLAG_TRANSFER_FAILED    1 << 20
  59.  
  60. struct  http_msg{
  61.         dword   socket;
  62.         dword   flags;
  63.         dword   write_ptr;
  64.         dword   buffer_length;
  65.         dword   chunk_ptr;
  66.         dword   timestamp;
  67.         dword   status;
  68.         dword   header_length;
  69.                 dword   content_ptr;
  70.         dword   content_length;
  71.         dword   content_received;
  72.         char    http_header;
  73. };
  74.  
  75. :dword file_get_contents(dword url,...)
  76. {
  77.         http_get(url,FLAG_HTTP11,"");
  78. }
  79.  
  80. #endif