1 Star 7 Fork 6

zentel / libghttps

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
ghttp.h 5.79 KB
一键复制 编辑 原始数据 按行查看 历史
zentel 提交于 2016-10-26 15:29 . 使用krypton库无需链接openssl库
/*
* ghttp.h -- A public interface to common http functions
* Created: Christopher Blizzard <blizzard@appliedtheory.com>, 21-Aug-1998
*
* Copyright (C) 1998 Free Software Foundation
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef GHTTP_H
#define GHTTP_H
#include "ghttp_constants.h"
#include <time.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
typedef struct _ghttp_request ghttp_request;
typedef enum ghttp_type_tag
{
ghttp_type_get = 0,
ghttp_type_options,
ghttp_type_head,
ghttp_type_post,
ghttp_type_put,
ghttp_type_delete,
ghttp_type_trace,
ghttp_type_connect,
ghttp_type_propfind,
ghttp_type_proppatch,
ghttp_type_mkcol,
ghttp_type_copy,
ghttp_type_move,
ghttp_type_lock,
ghttp_type_unlock
} ghttp_type;
typedef enum ghttp_sync_mode_tag
{
ghttp_sync = 0,
ghttp_async
} ghttp_sync_mode;
typedef enum ghttp_status_tag
{
ghttp_error = -1,
ghttp_not_done,
ghttp_done
} ghttp_status;
typedef enum ghttp_proc_tag
{
ghttp_proc_none = 0,
ghttp_proc_request,
ghttp_proc_response_hdrs,
ghttp_proc_response
} ghttp_proc;
typedef struct ghttp_current_status_tag
{
ghttp_proc proc; /* what's it doing? */
int bytes_read; /* how many bytes have been read? */
int bytes_total; /* how many total */
} ghttp_current_status;
/* create a new request object */
ghttp_request *
ghttp_request_new(void);
/* delete a current request object */
void
ghttp_request_destroy(ghttp_request *a_request);
/* Validate a uri
* This will return -1 if a uri is invalid
*/
int
ghttp_uri_validate(char *a_uri);
/* Set a uri in a request
* This will return -1 if the uri is invalid
*/
int
ghttp_set_uri(ghttp_request *a_request, char *a_uri);
/* Set a proxy for a request
* This will return -1 if the uri is invalid
*/
int
ghttp_set_proxy(ghttp_request *a_request, char *a_uri);
/* Set a request type
* This will return -1 if the request type is invalid or
* unsupported
*/
int
ghttp_set_type(ghttp_request *a_request, ghttp_type a_type);
/* Set the body.
* This will return -1 if the request type doesn't support it
*/
int
ghttp_set_body(ghttp_request *a_request, char *a_body, int a_len);
/* Set whether or not you want to use sync or async mode.
*/
int
ghttp_set_sync(ghttp_request *a_request,
ghttp_sync_mode a_mode);
/* Prepare a request.
* Call this before trying to process a request or if you change the
* uri.
*/
int
ghttp_prepare(ghttp_request *a_request);
/* Set the chunk size
* You might want to do this to optimize for different connection speeds.
*/
void
ghttp_set_chunksize(ghttp_request *a_request, int a_size);
/* Set a random request header
*/
void
ghttp_set_header(ghttp_request *a_request,
const char *a_hdr, const char *a_val);
/* Process a request
*/
ghttp_status
ghttp_process(ghttp_request *a_request);
/* Get the status of a request
*/
ghttp_current_status
ghttp_get_status(ghttp_request *a_request);
/* Flush the received data (so far) into the response body. This is
* useful for asynchronous requests with large responses: you can
* periodically flush the response buffer and parse the data that's
* arrived so far.
*/
void
ghttp_flush_response_buffer(ghttp_request *a_request);
/* Get the value of a random response header
*/
const char *
ghttp_get_header(ghttp_request *a_request,
const char *a_hdr);
/* Get the list of headers that were returned in the response. You
must free the returned string values. This function will return 0
on success, -1 on some kind of error. */
int
ghttp_get_header_names(ghttp_request *a_request,
char ***a_hdrs, int *a_num_hdrs);
/* Abort a currently running request. */
int
ghttp_close(ghttp_request *a_request);
/* Clean a request
*/
void
ghttp_clean(ghttp_request *a_request);
/* Get the socket associated with a particular connection
*/
int
ghttp_get_socket(ghttp_request *a_request);
/* get the return entity body
*/
char *
ghttp_get_body(ghttp_request *a_request);
/* get the returned length
*/
int
ghttp_get_body_len(ghttp_request *a_request);
/* Get an error message for a request that has failed.
*/
const char *
ghttp_get_error(ghttp_request *a_request);
/* Parse a date string that is one of the standard
* date formats
*/
time_t
ghttp_parse_date(char *a_date);
/* Return the status code.
*/
int
ghttp_status_code(ghttp_request *a_request);
/* Return the reason phrase.
*/
const char *
ghttp_reason_phrase(ghttp_request *a_request);
/* Set your username/password pair
*/
int
ghttp_set_authinfo(ghttp_request *a_request,
const char *a_user,
const char *a_pass);
/* Set your username/password pair for proxy
*/
int
ghttp_set_proxy_authinfo(ghttp_request *a_request,
const char *a_user,
const char *a_pass);
/* Attempt to enable SSL for this request.
* If gnome-http was built without SSL support, this always returns -1.
*/
int ghttp_enable_ssl(ghttp_request *a_request);
/* Disable SSL for this request. (This is the default.)
* If gnome-http was built without SSL support, this always returns -1.
*/
int ghttp_disable_ssl(ghttp_request *a_request);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* GHTTP_H */
C
1
https://gitee.com/zentel/libghttps.git
git@gitee.com:zentel/libghttps.git
zentel
libghttps
libghttps
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891