Esempio n. 1
0
/** @brief test uri 
 *  * create URI and get the values of it's components  
 *   */
void test_uri(axutil_env_t *env)
{   
    axis2_char_t * uri_str = "http://*****:*****@example.com:80/foo?bar#item5";
    axis2_char_t * host = "home.netscape.com:443";
    axis2_char_t * uri_str_base = "http://*****:*****@example.com:80/foo?bar";
    axis2_char_t * scheme_str = "http";
    axutil_uri_t * base = NULL;
    axutil_uri_t * hostinfo = NULL;
    axutil_uri_t * uri = NULL;
    axutil_uri_t * clone = NULL;
    axutil_uri_t * rel = NULL;
    axis2_port_t scheme_port;
    axis2_port_t port;
	axis2_char_t * str;

    hostinfo = axutil_uri_parse_hostinfo(env,host);
    CUT_ASSERT_PTR_NOT_EQUAL(hostinfo, NULL, 0);
    
    scheme_port = axutil_uri_port_of_scheme(scheme_str); 
    CUT_ASSERT_INT_NOT_EQUAL(scheme_port, 0, 0);
    
    uri = axutil_uri_parse_string(env,uri_str);    
    CUT_ASSERT_PTR_NOT_EQUAL(uri, NULL, 0);
    str = axutil_uri_get_protocol(uri,env);
	CUT_ASSERT_STR_EQUAL(str, "http", 0);
    port = axutil_uri_get_port(uri,env);
    CUT_ASSERT_INT_EQUAL(port, 80, 0);
    str = axutil_uri_get_path(uri,env);
	CUT_ASSERT_STR_EQUAL(str, "/foo", 0);
    str = axutil_uri_get_host(uri,env);
	CUT_ASSERT_STR_EQUAL(str, "example.com", 0);

    base = axutil_uri_parse_string(env,uri_str_base);
    CUT_ASSERT_PTR_NOT_EQUAL(base, NULL, 0);
	if (base)
    {
        str = axutil_uri_to_string(base,env,0);
		CUT_ASSERT_STR_EQUAL(str, "http://*****:*****@example.com/foo?bar", 0);
    }

    clone = axutil_uri_clone(uri,env);
    CUT_ASSERT_PTR_NOT_EQUAL(clone, NULL, 0);
	if (clone)
    {
        str = axutil_uri_to_string(clone,env,0);
		CUT_ASSERT_STR_EQUAL(str, "http://*****:*****@example.com/foo?bar#item5", 0);
        axutil_uri_free(clone,env);
   }
    
    rel = axutil_uri_resolve_relative(env,base,uri);
    CUT_ASSERT_PTR_NOT_EQUAL(rel, NULL, 0);
	if (rel)
    {
        str = axutil_uri_to_string(rel,env,0);
		CUT_ASSERT_STR_EQUAL(str, "http://*****:*****@example.com/foo?bar#item5", 0);
    }
    
    axutil_uri_free(uri,env);
}
Esempio n. 2
0
AXIS2_EXTERN int AXIS2_CALL
axutil_url_get_port(
    axutil_url_t *url,
    const axutil_env_t *env)
{
    AXIS2_ENV_CHECK(env, -1);
    AXIS2_PARAM_CHECK(env->error, url, -1);
    if(!url->port)
    {
        return axutil_uri_port_of_scheme(url->protocol);
    }

    return url->port;
}
Esempio n. 3
0
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axutil_url_set_host(
    axutil_url_t *url,
    const axutil_env_t *env,
    axis2_char_t *host)
{
    AXIS2_PARAM_CHECK(env->error, host, AXIS2_FAILURE);

    if(url->host)
    {
        AXIS2_FREE(env->allocator, url->host);
    }
    url->host = axutil_strdup(env, host);

    if(url->server)
    {
        AXIS2_FREE(env->allocator, url->server);
        url->server = NULL;
    }

    if(url->host)
    {
        axis2_ssize_t len;
        axis2_char_t port_str[11];
        axis2_bool_t print_port = AXIS2_FALSE;

        len = axutil_strlen(url->host);
        if(url->port != 0
                && (!url->protocol || url->port != axutil_uri_port_of_scheme(url->protocol)))
        {
            print_port = AXIS2_TRUE;
            sprintf(port_str, "%d", url->port);
            len += axutil_strlen(port_str) + 1; /* +1 is for ':' */
        }

        url->server = (axis2_char_t *)AXIS2_MALLOC(env->allocator, len + 1);
        sprintf(url->server, "%s%s%s",
                url->host,
                (print_port) ? ":" : "",
                (print_port) ? port_str : "");
    }

    return AXIS2_SUCCESS;
}
Esempio n. 4
0
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
axutil_url_to_external_form(
    axutil_url_t *url,
    const axutil_env_t *env)
{
    axis2_char_t *external_form = NULL;
    axis2_ssize_t len = 0;
    axis2_char_t port_str[11];
    axis2_bool_t print_port = AXIS2_FALSE;
    AXIS2_PARAM_CHECK(env->error, url, NULL);

    if(!url->protocol)
        return NULL;

    if(url->port != 0 && url->port != axutil_uri_port_of_scheme(url->protocol))
    {
        print_port = AXIS2_TRUE;
        sprintf(port_str, "%d", url->port);
        len += axutil_strlen(port_str) + 1; /* +1 is for ':' */
    }

    len += axutil_strlen(url->protocol) + 6;

    if(url->host)
        len += axutil_strlen(url->host);

    if(url->path)
        len += axutil_strlen(url->path);

    if(url->query)
        len += axutil_strlen(url->query);

    external_form = (axis2_char_t *)AXIS2_MALLOC(env->allocator, len + 1);
    sprintf(external_form, "%s://%s%s%s%s%s",
            url->protocol,
            (url->host) ? url->host : "",
            (print_port) ? ":" : "",
            (print_port) ? port_str : "",
            (url->path) ? url->path : "",
            (url->query) ? url->query : "");

    return external_form;
}
Esempio n. 5
0
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
axutil_url_get_server(
    axutil_url_t *url,
    const axutil_env_t *env)
{
    axis2_ssize_t len = 0;
    axis2_char_t port_str[11];
    axis2_bool_t print_port = AXIS2_FALSE;
    AXIS2_ENV_CHECK(env, NULL);
    AXIS2_PARAM_CHECK(env->error, url, NULL);

    if(!url->server && !url->host)
        return NULL;
    else if(!url->host)
    {
        AXIS2_FREE(env->allocator, url->server);
        url->server = NULL;
        return NULL;
    }
    else if(url->server)
        return url->server;

    len += axutil_strlen(url->host);
    if(url->port != 0
            && (!url->protocol || url->port != axutil_uri_port_of_scheme(url->protocol)))
    {
        print_port = AXIS2_TRUE;
        sprintf(port_str, "%d", url->port);
        len += axutil_strlen(port_str) + 1; /* +1 is for ':' */
    }

    url->server = (axis2_char_t *)AXIS2_MALLOC(env->allocator, len + 1); /* +1 is for '/0' */
    sprintf(url->server, "%s%s%s",
            url->host,
            (print_port) ? ":" : "",
            (print_port) ? port_str : "");

    return url->server;
}
Esempio n. 6
0
/** @brief test uri 
 *  * create URI and get the values of it's components  
 *   */
axis2_status_t test_uri(axutil_env_t *env)
{   
    axis2_char_t * uri_str = "http://*****:*****@example.com:80/foo?bar#item5";
    axis2_char_t * host = "home.netscape.com:443";
    axis2_char_t * uri_str_base = "http://*****:*****@example.com:80/foo?bar";
    axis2_char_t * scheme_str = "http";
    axutil_uri_t * base = NULL;
    axutil_uri_t * hostinfo = NULL;
    axutil_uri_t * uri = NULL;
    axutil_uri_t * clone = NULL;
    axutil_uri_t * rel = NULL;
    axis2_char_t * protocol = NULL;
    axis2_char_t * server = NULL;
    axis2_char_t * path = NULL;
    axis2_port_t scheme_port;
    axis2_port_t port;

    hostinfo = axutil_uri_parse_hostinfo(env,host);
    if(hostinfo)
    {
        printf("The host information of uri is %s\n",axutil_uri_to_string(hostinfo,env,0));
    }
    else
    {
        printf("Test hostinfo faild\n");
    } 
    
    scheme_port = axutil_uri_port_of_scheme(scheme_str); 
    if(scheme_port)
    {
        printf("port of scheme is %u\n", scheme_port);
    }
    else
    {
        printf("Test port failed\n");
    }
    
    uri = axutil_uri_parse_string(env,uri_str);    
    if(uri)
    {
        printf("The uri is %s\n",axutil_uri_to_string(uri,env,0));
        axutil_uri_free(uri, env);
    }
    else     
    { 
         return AXIS2_FAILURE;
    }

    base = axutil_uri_parse_string(env,uri_str_base);
    if(base)
    {
         printf("The base of uri is %s\n",axutil_uri_to_string(base,env,0));
    }
    else 
    {
       printf("Test base failed\n");
    }

    clone = axutil_uri_clone(uri,env);
    if(clone)
    {
        printf("The clone of uri is %s\n",axutil_uri_to_string(clone,env,0));
        axutil_uri_free(clone,env);
    }
    else
    {
        printf("Test clone failed");
    }
    
    rel = axutil_uri_resolve_relative(env,base,clone);
    if(rel)
    {
        printf("The resolved relative uri is %s\n",axutil_uri_to_string(rel,env,0));
    }
    else
    {
        printf("Test resolve relative failed");
    }
    
    protocol = axutil_uri_get_protocol(uri,env);
    if (!protocol)
    {
        axutil_uri_free(uri,env);
        return AXIS2_FAILURE;
    }
    
    server = axutil_uri_get_server(uri,env);
    if (!server)
    {
        axutil_uri_free(uri,env);
        return AXIS2_FAILURE;
    }
    
    port = axutil_uri_get_port(uri,env);
    if (!port)
    {
        axutil_uri_free(uri,env);
        return AXIS2_FAILURE;
    }
    
    path = axutil_uri_get_path(uri,env);
    if (!path)
    {
        axutil_uri_free(uri,env);
        return AXIS2_FAILURE;
    }
   
    printf("The protocol is %s\n",protocol);
    printf("The server is %s \n",server);
    printf("The port is %u \n",port);
    printf("The path is %s\n",path); 
    axutil_uri_free(uri,env);
    return AXIS2_SUCCESS;
}