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