/* $Id: GHTTP.xs,v 1.8 2002/03/25 09:24:54 matt Exp $ */ #ifdef __cplusplus extern "C" { #endif #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ghttp.h" #ifdef __cplusplus } #endif MODULE = HTTP::GHTTP PACKAGE = HTTP::GHTTP ghttp_request * _new(CLASS) char * CLASS CODE: RETVAL = ghttp_request_new(); if (RETVAL == NULL) { warn("Unable to allocate ghttp_request"); XSRETURN_UNDEF; } /* sv_bless(RETVAL, gv_stash_pv(CLASS, 1)); */ OUTPUT: RETVAL void DESTROY(self) ghttp_request *self CODE: ghttp_request_destroy(self); int set_uri(self, uri) ghttp_request *self char *uri CODE: if(ghttp_set_uri(self, uri) == ghttp_error) { XSRETURN_UNDEF; } RETVAL = 1; OUTPUT: RETVAL int set_proxy(self, proxy) ghttp_request *self char *proxy CODE: RETVAL = ghttp_set_proxy(self, proxy); OUTPUT: RETVAL void set_header(self, hdr, val) ghttp_request *self const char *hdr const char *val CODE: ghttp_set_header(self, hdr, val); void process_request(self) ghttp_request *self CODE: ghttp_prepare(self); ghttp_process(self); void clean(self) ghttp_request *self CODE: ghttp_clean(self); int prepare(self) ghttp_request *self CODE: RETVAL = ghttp_prepare(self); OUTPUT: RETVAL int process(self) ghttp_request *self PREINIT: ghttp_status process_status; CODE: process_status = ghttp_process(self); if (process_status == ghttp_error) { XSRETURN_UNDEF; } RETVAL = !process_status; OUTPUT: RETVAL const char* get_header(self, hdr) ghttp_request *self const char *hdr CODE: RETVAL = ghttp_get_header(self, hdr); OUTPUT: RETVAL #ifdef HAVE_GHTTP_GET_HEADER_NAMES void get_headers(self) ghttp_request *self PREINIT: char **hdrs; int num_hdrs; int i; PPCODE: if (ghttp_get_header_names(self, &hdrs, &num_hdrs) == -1) { XSRETURN_UNDEF; } EXTEND(SP, num_hdrs); for (i = 0; i < num_hdrs; i++) { PUSHs(sv_2mortal(newSVpv(hdrs[i], 0))); free(hdrs[i]); } #endif int close(self) ghttp_request *self CODE: RETVAL = ghttp_close(self); OUTPUT: RETVAL SV * get_body(self) ghttp_request *self PREINIT: SV* buffer; CODE: buffer = newSVpvn("",0); sv_catpvn(buffer, ghttp_get_body(self), ghttp_get_body_len(self)); RETVAL = buffer; OUTPUT: RETVAL const char * get_error(self) ghttp_request *self CODE: RETVAL = ghttp_get_error(self); OUTPUT: RETVAL int set_authinfo(self, user, pass) ghttp_request *self const char *user const char *pass CODE: RETVAL = ghttp_set_authinfo(self, user, pass); OUTPUT: RETVAL int set_proxy_authinfo(self, user, pass) ghttp_request *self const char *user const char *pass CODE: RETVAL = ghttp_set_proxy_authinfo(self, user, pass); OUTPUT: RETVAL int set_type(self, type) ghttp_request *self int type CODE: RETVAL = ghttp_set_type(self, type); OUTPUT: RETVAL int set_body(self, body) ghttp_request *self SV *body PREINIT: STRLEN len; char * str; CODE: str = SvPV(body, len); RETVAL = ghttp_set_body(self, str, len); OUTPUT: RETVAL int _get_socket(self) ghttp_request *self CODE: RETVAL = ghttp_get_socket(self); OUTPUT: RETVAL void get_status(self) ghttp_request *self PREINIT: int code; const char *reason; PPCODE: code = ghttp_status_code(self); reason = ghttp_reason_phrase(self); EXTEND(SP, 2); PUSHs(sv_2mortal(newSViv(code))); if (reason == NULL) reason="NULL"; PUSHs(sv_2mortal(newSVpv((char*)reason, 0))); void current_status(self) ghttp_request *self PREINIT: ghttp_current_status status; PPCODE: status = ghttp_get_status(self); EXTEND(SP, 3); PUSHs(sv_2mortal(newSViv(status.proc))); PUSHs(sv_2mortal(newSViv(status.bytes_read))); PUSHs(sv_2mortal(newSViv(status.bytes_total))); int set_async(self) ghttp_request *self CODE: RETVAL = ghttp_set_sync(self, ghttp_async); OUTPUT: RETVAL void set_chunksize(self, size) ghttp_request *self int size CODE: ghttp_set_chunksize(self, size); # # CONSTANTS # int METHOD_GET() CODE: RETVAL = ghttp_type_get; OUTPUT: RETVAL int METHOD_OPTIONS() CODE: RETVAL = ghttp_type_options; OUTPUT: RETVAL int METHOD_HEAD() CODE: RETVAL = ghttp_type_head; OUTPUT: RETVAL int METHOD_POST() CODE: RETVAL = ghttp_type_post; OUTPUT: RETVAL int METHOD_PUT() CODE: RETVAL = ghttp_type_put; OUTPUT: RETVAL int METHOD_DELETE() CODE: RETVAL = ghttp_type_delete; OUTPUT: RETVAL int METHOD_TRACE() CODE: RETVAL = ghttp_type_trace; OUTPUT: RETVAL int METHOD_CONNECT() CODE: RETVAL = ghttp_type_connect; OUTPUT: RETVAL int METHOD_PROPFIND() CODE: RETVAL = ghttp_type_propfind; OUTPUT: RETVAL int METHOD_PROPPATCH() CODE: RETVAL = ghttp_type_proppatch; OUTPUT: RETVAL int METHOD_MKCOL() CODE: RETVAL = ghttp_type_mkcol; OUTPUT: RETVAL int METHOD_COPY() CODE: RETVAL = ghttp_type_copy; OUTPUT: RETVAL int METHOD_MOVE() CODE: RETVAL = ghttp_type_move; OUTPUT: RETVAL int METHOD_LOCK() CODE: RETVAL = ghttp_type_lock; OUTPUT: RETVAL int METHOD_UNLOCK() CODE: RETVAL = ghttp_type_unlock; OUTPUT: RETVAL