X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_methods.c;h=0f80c6ce21e3441e3772523953ebf1de35ac689b;hp=1365fcf4c6a15c7630908ecc1e6f91094e3cc6b1;hb=f6108ad70bc06292d0982532f82b77d6e97d7e01;hpb=e93a92c530d8adb0e99682b458edcb05efc7db0d diff --git a/http_methods.c b/http_methods.c index 1365fcf..0f80c6c 100644 --- a/http_methods.c +++ b/http_methods.c @@ -628,6 +628,73 @@ PHP_METHOD(HTTPi_Request, getOptions) } /* }}} */ +/* {{{ proto void HTTPi_Request::unsetOptions() + * + * Unset all options/headers/cookies. + */ +PHP_METHOD(HTTPi_Request, unsetOptions) +{ + getObject(httpi_request_object, obj); + + NO_ARGS; + + FREE_PARR(obj, options); + INIT_PARR(obj, options); +} +/* }}} */ + +/* {{{ proto bool HTTPi_Request::addHeader(array header) + * + * Add (a) request header name/value pair(s). + */ +PHP_METHOD(HTTPi_Request, addHeader) +{ + zval *opts, **headers, *new_headers; + getObject(httpi_request_object, obj); + + if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a/", &new_headers)) { + RETURN_FALSE; + } + + opts = GET_PROP(obj, options); + + if (SUCCESS == zend_hash_find(Z_ARRVAL_P(opts), "headers", sizeof("headers"), (void **) &headers)) { + array_merge(new_headers, *headers); + } else { + zval_add_ref(&new_headers); + add_assoc_zval(opts, "headers", new_headers); + } + + RETURN_TRUE; +} +/* }}} */ + +/* {{{ proto bool HTTPi_Request::addCookie(array cookie) + * + * Add (a) cookie(s). + */ +PHP_METHOD(HTTPi_Request, addCookie) +{ + zval *opts, **cookies, *new_cookies; + getObject(httpi_request_object, obj); + + if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a/", &new_cookies)) { + RETURN_FALSE; + } + + opts = GET_PROP(obj, options); + + if (SUCCESS == zend_hash_find(Z_ARRVAL_P(opts), "cookies", sizeof("cookies"), (void **) &cookies)) { + array_merge(new_cookies, *cookies); + } else { + zval_add_ref(&new_cookies); + add_assoc_zval(opts, "cookies", new_cookies); + } + + RETURN_TRUE; +} +/* }}} */ + /* {{{ proto bool HTTPi_Request::setURL(string url) * * Set the request URL.