{"id":27631170,"url":"https://github.com/setghm/c-http-requests","last_synced_at":"2025-04-23T17:42:47.278Z","repository":{"id":269500994,"uuid":"905942622","full_name":"setghm/c-http-requests","owner":"setghm","description":"HTTP and HTTPS requests library","archived":false,"fork":false,"pushed_at":"2025-04-20T01:28:57.000Z","size":82,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-20T02:27:33.136Z","etag":null,"topics":["c-programming-language","http-client","http-client-cli","multiplatform-library"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/setghm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-19T20:27:55.000Z","updated_at":"2025-04-20T01:29:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"104328e6-e4eb-43eb-98e5-7fda4c8bb473","html_url":"https://github.com/setghm/c-http-requests","commit_stats":null,"previous_names":["setghm/requester","setghm/c-http-requests"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/setghm%2Fc-http-requests","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/setghm%2Fc-http-requests/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/setghm%2Fc-http-requests/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/setghm%2Fc-http-requests/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/setghm","download_url":"https://codeload.github.com/setghm/c-http-requests/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250482953,"owners_count":21437970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-programming-language","http-client","http-client-cli","multiplatform-library"],"created_at":"2025-04-23T17:42:46.735Z","updated_at":"2025-04-23T17:42:47.264Z","avatar_url":"https://github.com/setghm.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"HTTP requests library for the C programming language\n\nFeatures\n\n- Response handling in streams\n- Support for HTTP and HTTPS (depending on OpenSSL)\n- Implementation for a StringMap struct used in HTTP headers list and URL parameters\n- URL parsing\n- Shorthand functions\n\n## Example\n\nGetting your external IP address\n\n[get_external_ip_address.c](examples\\get_external_ip_address.c)\n```c\n#include \u003crequester.h\u003e // \u003c-- This library\n#include \u003cstdio.h\u003e\n\nint main(void) {\n    /*\n        Initialize library.\n    */\n    HttpClient_Init();\n\n    /*\n        Perform the request.\n    */\n    HttpResponse* res = HttpClient_Get(\"https://ifconfig.me/ip\");\n\n    if (res == HTTP_INVALID_RESPONSE) {\n        puts(\"Cannot get your external IP address.\");\n        return -1;\n    }\n\n    char* ip = StreamContent_ReadAsString(res-\u003econtent);\n\n    if (ip != NULL) {\n        puts(ip);\n\n        free(ip);\n    }\n\n    /*\n        Cleanup resources.\n    */\n    HttpResponse_Delete(res);\n    HttpClient_Cleanup();\n\n    return 0;\n}\n```\n\n## HTTP Version support\n\n- HTTP 0.9 (untested)\n- HTTP 1.1 (tested)\n- HTTP 2 and 3 (untested)\n\n## Shorthand functions\n\nUse these functions to avoid creating a HttpRequest struct explicitly.\n\n[http_client_abstractions.h](.\\src\\client\\http_client_abstractions.h)\n```c\nHttpResponse* HttpClient_Get(const char* url);\nHttpResponse* HttpClient_Post(const char* url, const char* data, MIMEType content_type);\nHttpResponse* HttpClient_PostFile(const char* url, const char* file_name, MIMEType content_type);\nHttpResponse* HttpClient_Put(const char* url, const char* data, MIMEType content_type);\nHttpResponse* HttpClient_PutFile(const char* url, const char* file_name, MIMEType content_type);\nHttpResponse* HttpClient_Delete(const char* url);\nHttpResponse* HttpClient_Head(const char* url);\n```\n\n## Request and response structures\n\n[http_request.h](.\\src\\core\\structs\\http_request.h)\n```c\nstruct _HttpResponse {\n    StringMap* headers;\n    StreamContent* content;\n    HttpVersion version;\n    HttpStatus status;\n};\n```\n\n[http_response.h](.\\src\\core\\structs\\http_response.h)\n```c\nstruct _HttpRequest {\n    StringMap* headers;\n    HttpContent* content;\n    URL* url;\n    HttpMethod method;\n    HttpVersion version;\n};\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsetghm%2Fc-http-requests","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsetghm%2Fc-http-requests","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsetghm%2Fc-http-requests/lists"}