You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by se...@apache.org on 2008/03/17 17:43:32 UTC

svn commit: r637966 - in /webservices/axis2/trunk/c: include/axis2_http_accept_record.h src/core/transport/http/common/Makefile.am src/core/transport/http/common/http_accept_record.c

Author: senaka
Date: Mon Mar 17 09:43:24 2008
New Revision: 637966

URL: http://svn.apache.org/viewvc?rev=637966&view=rev
Log:
Adding axis2_http_accept_record to assist "Accept-*" headers

Added:
    webservices/axis2/trunk/c/include/axis2_http_accept_record.h
    webservices/axis2/trunk/c/src/core/transport/http/common/http_accept_record.c
Modified:
    webservices/axis2/trunk/c/src/core/transport/http/common/Makefile.am

Added: webservices/axis2/trunk/c/include/axis2_http_accept_record.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/include/axis2_http_accept_record.h?rev=637966&view=auto
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_http_accept_record.h (added)
+++ webservices/axis2/trunk/c/include/axis2_http_accept_record.h Mon Mar 17 09:43:24 2008
@@ -0,0 +1,117 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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_ACCEPT_RECORD_H
+#define AXIS2_HTTP_ACCEPT_RECORD_H
+
+/**
+ * @defgroup axis2_http_accept_record HTTP Accept record
+ * @ingroup axis2_core_trans_http
+ * @{
+ */
+
+/**
+ * @file axis2_http_accept_record.h
+ * @brief Axis2 HTTP Accept record
+ */
+
+#include <axis2_const.h>
+#include <axis2_defines.h>
+#include <axutil_env.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+    /** Type name for struct axis2_http_accept_record */
+    typedef struct axis2_http_accept_record axis2_http_accept_record_t;
+
+    /**
+     * Gets quality factor of accept record
+     * @param accept_record pointer to accept record
+     * @param env pointer to environment struct
+     * @return quality factor between 0 and 1 (1 meaning maximum
+     * and 0 meaning minimum)
+     */
+    AXIS2_EXTERN float AXIS2_CALL
+    axis2_http_accept_record_get_quality_factor(
+        const axis2_http_accept_record_t * accept_record,
+        const axutil_env_t * env);
+
+    /**
+     * Gets name of accept record
+     * @param accept_record pointer to accept record
+     * @param env pointer to environment struct
+     * @return name of accept record
+     */
+    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+    axis2_http_accept_record_get_name(
+        const axis2_http_accept_record_t * accept_record,
+        const axutil_env_t * env);
+
+    /**
+     * Gets level of accept record
+     * @param accept_record pointer to accept record
+     * @param env pointer to environment struct
+     * @return level of accept record (1 meaning highest).
+     * A return value of -1 indicates that no level is 
+     * associated.
+     */
+    AXIS2_EXTERN int AXIS2_CALL
+    axis2_http_accept_record_get_level(
+        const axis2_http_accept_record_t * accept_record,
+        const axutil_env_t * env);
+
+    /**
+     * Gets string representation of accept record
+     * @param accept_record pointer to accept record
+     * @param env pointer to environment struct
+     * @return created accept record string
+     */
+    AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+    axis2_http_accept_record_to_string(
+        axis2_http_accept_record_t * accept_record,
+        const axutil_env_t * env);
+
+    /**
+     * Frees accept record
+     * @param accept_record pointer to accept record
+     * @param env pointer to environment struct
+     */
+    AXIS2_EXTERN void AXIS2_CALL
+    axis2_http_accept_record_free(
+        axis2_http_accept_record_t * accept_record,
+        const axutil_env_t * env);
+
+    /**
+     * Creates accept record
+     * @param env pointer to environment struct
+     * @param str pointer to str
+     * @return created accept record
+     */
+    AXIS2_EXTERN axis2_http_accept_record_t *AXIS2_CALL
+    axis2_http_accept_record_create(
+        const axutil_env_t * env,
+        const axis2_char_t * str);
+
+    /** @} */
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* AXIS2_HTTP_ACCEPT_RECORD_H */

Modified: webservices/axis2/trunk/c/src/core/transport/http/common/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/transport/http/common/Makefile.am?rev=637966&r1=637965&r2=637966&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/transport/http/common/Makefile.am (original)
+++ webservices/axis2/trunk/c/src/core/transport/http/common/Makefile.am Mon Mar 17 09:43:24 2008
@@ -9,6 +9,7 @@
                                   http_simple_request.c\
                                   http_simple_response.c\
                                   http_status_line.c\
+                                  http_accept_record.c\
                                   http_response_writer.c\
                                   simple_http_svr_conn.c\
                                   http_worker.c

Added: webservices/axis2/trunk/c/src/core/transport/http/common/http_accept_record.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/transport/http/common/http_accept_record.c?rev=637966&view=auto
==============================================================================
--- webservices/axis2/trunk/c/src/core/transport/http/common/http_accept_record.c (added)
+++ webservices/axis2/trunk/c/src/core/transport/http/common/http_accept_record.c Mon Mar 17 09:43:24 2008
@@ -0,0 +1,156 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+#include <axis2_http_accept_record.h>
+#include <axutil_string.h>
+#include <axutil_types.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+struct axis2_http_accept_record
+{
+    axis2_char_t *name;
+    float quality;
+    int level;
+    axis2_char_t *record;
+};
+
+AXIS2_EXTERN axis2_http_accept_record_t *AXIS2_CALL
+axis2_http_accept_record_create(
+    const axutil_env_t * env,
+    const axis2_char_t * str)
+{
+    axis2_char_t *tmp_accept_record = NULL;
+    axis2_char_t *tmp = NULL;
+    axis2_http_accept_record_t *accept_record = NULL;
+    float quality = 0.0;
+    int level = -1;
+    axis2_char_t *name = NULL;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    AXIS2_PARAM_CHECK(env->error, str, NULL);
+
+    tmp_accept_record = (axis2_char_t *) axutil_strdup(env, str);
+    if (!tmp_accept_record)
+    {
+        return NULL;
+    }
+
+    accept_record = (axis2_http_accept_record_t *) AXIS2_MALLOC
+        (env->allocator, sizeof(axis2_http_accept_record_t));
+
+    if (!accept_record)
+    {
+        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+    }
+
+    accept_record->record = axutil_strtrim(env, tmp_accept_record, " ,");
+
+    tmp = strchr(tmp_accept_record, 'q');
+    if (tmp)
+    {
+        *tmp = '\0';
+        tmp = axutil_strtrim(env, tmp, " =;");
+        if (tmp)
+        {
+            sscanf(tmp, "%f", &quality);
+            AXIS2_FREE(env->allocator, tmp);
+        }
+    }
+    tmp = strstr(tmp_accept_record, "level");
+    if (tmp)
+    {
+        *tmp = '\0';
+        tmp = axutil_strtrim(env, tmp, " =;");
+        if (tmp)
+        {
+            sscanf(tmp, "%d", &level);
+            AXIS2_FREE(env->allocator, tmp);
+        }
+    }
+    tmp = axutil_strtrim(env, tmp_accept_record, " ;");
+    if (tmp)
+    {
+        name = tmp;
+    }
+
+    if (!name || quality > 1.0 || quality < 0.0)
+    {
+        axis2_http_accept_record_free(accept_record, env);
+        return NULL;
+    }
+
+    accept_record->name = name;
+    accept_record->quality = quality;
+    accept_record->level = level;
+
+    AXIS2_FREE(env->allocator, tmp_accept_record);
+    return accept_record;
+}
+
+AXIS2_EXTERN void AXIS2_CALL
+axis2_http_accept_record_free(
+    axis2_http_accept_record_t * accept_record,
+    const axutil_env_t * env)
+{
+    AXIS2_ENV_CHECK(env, void);
+
+    if (accept_record->name)
+    {
+        AXIS2_FREE(env->allocator, accept_record->name);
+    }
+    if (accept_record->record)
+    {
+        AXIS2_FREE(env->allocator, accept_record->record);
+    }
+    AXIS2_FREE(env->allocator, accept_record);
+    return;
+}
+
+AXIS2_EXTERN float AXIS2_CALL
+axis2_http_accept_record_get_quality_factor(
+    const axis2_http_accept_record_t * accept_record,
+    const axutil_env_t * env)
+{
+    return accept_record->quality;
+}
+
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+axis2_http_accept_record_get_name(
+    const axis2_http_accept_record_t * accept_record,
+    const axutil_env_t * env)
+{
+    return accept_record->name;
+}
+
+AXIS2_EXTERN int AXIS2_CALL
+axis2_http_accept_record_get_level(
+    const axis2_http_accept_record_t * accept_record,
+    const axutil_env_t * env)
+{
+    return accept_record->level;
+}
+
+AXIS2_EXTERN axis2_char_t *AXIS2_CALL
+axis2_http_accept_record_to_string(
+    axis2_http_accept_record_t * accept_record,
+    const axutil_env_t * env)
+{
+    return accept_record->record;
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org