18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * http_client - HTTP client 38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2009, Jouni Malinen <j@w1.fi> 48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license. 6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details. 78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef HTTP_CLIENT_H 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define HTTP_CLIENT_H 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct http_client; 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum http_client_event { 158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt HTTP_CLIENT_FAILED, 168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt HTTP_CLIENT_TIMEOUT, 178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt HTTP_CLIENT_OK, 188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt HTTP_CLIENT_INVALID_REPLY, 198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtchar * http_client_url_parse(const char *url, struct sockaddr_in *dst, 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char **path); 238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct http_client * http_client_addr(struct sockaddr_in *dst, 248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpabuf *req, size_t max_response, 258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void (*cb)(void *ctx, 268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct http_client *c, 278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum http_client_event event), 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void *cb_ctx); 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct http_client * http_client_url(const char *url, 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpabuf *req, size_t max_response, 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void (*cb)(void *ctx, 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct http_client *c, 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt enum http_client_event event), 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void *cb_ctx); 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid http_client_free(struct http_client *c); 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct wpabuf * http_client_get_body(struct http_client *c); 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtchar * http_client_get_hdr_line(struct http_client *c, const char *tag); 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtchar * http_link_update(char *url, const char *base); 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* HTTP_CLIENT_H */ 41