blob: 2f79616a61ec2fcaae3539809d864c4334ae2e8e [file] [log] [blame]
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef AXIS2_HTTP_CLIENT_H
#define AXIS2_HTTP_CLIENT_H
/**
* @defgroup axis2_http_client http client
* @ingroup axis2_core_trans_http
* Description
* @{
*/
/**
* @file axis2_http_client.h
* @brief axis2 HTTP Header name:value pair implementation
*/
#include <axis2_const.h>
#include <axis2_defines.h>
#include <axis2_env.h>
#include <axis2_http_simple_response.h>
#include <axis2_http_simple_request.h>
#include <axis2_url.h>
#ifdef __cplusplus
extern "C"
{
#endif
/** Type name for struct axis2_http_client_ops */
typedef struct axis2_http_client_ops axis2_http_client_ops_t;
/** Type name for struct axis2_http_client */
typedef struct axis2_http_client axis2_http_client_t;
/**
* HTTP Client ops struct
* Encapsulator struct for ops of axis2_http_client
*/
struct axis2_http_client_ops
{
/**
* @param client pointer to client
* @param env pointer to environment struct
* @param request pointer to request
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
send)(
axis2_http_client_t *client,
const axis2_env_t *env,
axis2_http_simple_request_t *request);
/**
* @param client pointer to client
* @param env pointer to environment struct
*/
int (AXIS2_CALL *
recieve_header)(
axis2_http_client_t *client,
const axis2_env_t *env);
/**
* @param client pointer to client
* @param env pointer to environment struct
*/
axis2_http_simple_response_t *(AXIS2_CALL *
get_response)(
const axis2_http_client_t *client,
const axis2_env_t *env);
/**
* @param client pointer to client
* @param env pointer to environment struct
* @param url pointer to url
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_url)(
axis2_http_client_t *client,
const axis2_env_t *env,
axis2_url_t *url);
/**
* @param client pointer to client
* @param env pointer to environment struct
*/
axis2_url_t *(AXIS2_CALL *
get_url)(
const axis2_http_client_t *client,
const axis2_env_t *env);
/**
* @param client pointer to client
* @param env pointer to environment struct
* @param timeout_ms
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_timeout)(
axis2_http_client_t *client,
const axis2_env_t *env,
int timeout_ms);
/**
* @param client pointer to client
* @param env pointer to environment struct
*/
int (AXIS2_CALL *
get_timeout)(
const axis2_http_client_t *client,
const axis2_env_t *env);
/**
* @param client pointer to client
* @param env pointer to environment struct
* @param proxy_host pointer to proxy host
* @param proxy_port
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
set_proxy)(
axis2_http_client_t *client,
const axis2_env_t *env,
axis2_char_t *proxy_host,
int proxy_port);
/**
* @param client pointer to client
* @param env pointer to environment struct
*/
axis2_char_t *(AXIS2_CALL *
get_proxy)(
const axis2_http_client_t *client,
const axis2_env_t *env);
axis2_status_t (AXIS2_CALL *
set_dump_input_msg) (
axis2_http_client_t *client,
const axis2_env_t *env,
axis2_bool_t dump_input_msg);
/**
* @param client pointer to client
* @param env pointer to environment struct
* @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
*/
axis2_status_t (AXIS2_CALL *
free)(
axis2_http_client_t *client,
const axis2_env_t *env);
};
/**
* axis2 http client
*/
struct axis2_http_client
{
/** operations of axis2 http client */
axis2_http_client_ops_t *ops;
};
/**
* @param env pointer to environment struct
* @param url pointer to url
*/
AXIS2_EXTERN axis2_http_client_t *AXIS2_CALL
axis2_http_client_create (
const axis2_env_t *env,
axis2_url_t *url);
/**
* Free http_client passed as void pointer. This will be
* cast into appropriate type and then pass the cast object
* into the http_client structure's free method
* @param client
* @param env pointer to environment struct
*/
axis2_status_t AXIS2_CALL
axis2_http_client_free_void_arg (
void *client,
const axis2_env_t *env);
/************************** Start of function macros **************************/
/** Send.
@sa axis2_http_client_ops#send */
#define AXIS2_HTTP_CLIENT_SEND(client, env, request) \
((client)->ops->send(client, env, request))
/** Receive header.
@sa axis2_http_client_ops#receive_header */
#define AXIS2_HTTP_CLIENT_RECIEVE_HEADER(client, env) \
((client)->ops->recieve_header(client, env))
/** Gets the response.
@sa axis2_http_client_ops#get_response */
#define AXIS2_HTTP_CLIENT_GET_RESPONSE(client, env) \
((client)->ops->get_response(client, env))
/** Sets the url.
@sa axis2_http_client_ops#set_url */
#define AXIS2_HTTP_CLIENT_SET_URL(client, env, url) \
((client)->ops->set_url(client, env, url))
/** Gets the url.
@sa axis2_http_client_ops#get_url */
#define AXIS2_HTTP_CLIENT_GET_URL(client, env) \
((client)->ops->get_url(client, env))
/** Sets the timeout.
@sa axis2_http_client_ops#set_timeout */
#define AXIS2_HTTP_CLIENT_SET_TIMEOUT(client, env, timeout) \
((client)->ops->set_timeout(client, env,\
timeout))
/** Gets the timeout.
@sa axis2_http_client_ops#get_timeout */
#define AXIS2_HTTP_CLIENT_GET_TIMEOUT(client, env) \
((client)->ops->get_url(client, env))
/** Sets the proxy.
@sa axis2_http_client_ops#set_proxy */
#define AXIS2_HTTP_CLIENT_SET_PROXY(client, env, proxy_host, proxy_port) \
((client)->ops->set_proxy(client, env,\
proxy_host, proxy_port))
/** Gets the proxy.
@sa axis2_http_client_ops#get_proxy */
#define AXIS2_HTTP_CLIENT_GET_PROXY(client, env) \
((client)->ops->get_proxy(client, env))
/** Set dump_input_msg true.
@sa axis2_http_client_ops#set_dump_input_msg */
#define AXIS2_HTTP_CLIENT_SET_DUMP_INPUT_MSG(client, env, dump_input_msg) \
((client)->ops->set_dump_input_msg(client, env, dump_input_msg))
/** Frees the http client.
@sa axis2_http_client_ops#free */
#define AXIS2_HTTP_CLIENT_FREE(client, env) \
((client)->ops->free(client, env))
/************************** End of function macros ****************************/
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* AXIS2_HTTP_CLIENT_H */