1#include <stdio.h>
2#include "xpl_HTTP.h"
3#include "dmConnection.h"
4#include "dmStringUtil.h"
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10
11static DmBrwConnector *stDmBrwConnector = NULL;
12
13XPL_HTTP_HANDLE_T XPL_HTTP_Open(CPCHAR url,
14                                CPCHAR ConRef,
15                                XPL_ADDR_TYPE_T addrType,
16                                XPL_HTTP_RET_STATUS_T * result)
17{
18    if(stDmBrwConnector == NULL)
19    {
20        stDmBrwConnector = DmBrwCreateConnector();
21
22        if ( stDmBrwConnector == NULL )
23        {
24            if ( result )
25                *result = XPL_HTTP_RET_FAIL;
26            return XPL_HTTP_HANDLE_INVALID;
27        }
28    }
29
30
31    XPL_HTTP_RET_STATUS_T res;
32    res = stDmBrwConnector->Open(url, ConRef, (UINT32)addrType);
33    if ( res == XPL_HTTP_RET_SUCCESS )
34    {
35        if ( result )
36           *result = res;
37        return (XPL_HTTP_HANDLE_T)stDmBrwConnector;
38    }
39    else
40    {
41        if ( result )
42            *result = XPL_HTTP_RET_FAIL;
43        return XPL_HTTP_HANDLE_INVALID;
44    }
45}
46
47
48XPL_HTTP_RET_STATUS_T XPL_HTTP_SetUrl(XPL_HTTP_HANDLE_T handler,
49                                      CPCHAR url,
50                                      CPCHAR ConRef,
51                                      XPL_ADDR_TYPE_T addrType)
52{
53    DmBrwConnector * brwConnector = (DmBrwConnector*)handler;
54    if ( brwConnector != stDmBrwConnector )
55        return XPL_HTTP_RET_BADARGUMENT;
56
57    return brwConnector->SetUrl(url, ConRef, (UINT32)addrType);
58}
59
60XPL_HTTP_RET_STATUS_T XPL_HTTP_SetRequestMethod(XPL_HTTP_HANDLE_T handler, XPL_HTTP_METHOD_T method)
61{
62    DmBrwConnector* brwConnector = (DmBrwConnector*)handler;
63    if ( brwConnector != stDmBrwConnector )
64        return XPL_HTTP_RET_BADARGUMENT;
65
66    return brwConnector->SetRequestMethod(method);
67}
68
69
70XPL_HTTP_RET_STATUS_T
71XPL_HTTP_SetRequestProperty(XPL_HTTP_HANDLE_T handler, CPCHAR buffer)
72{
73     DmBrwConnector* brwConnector = (DmBrwConnector*)handler;
74    if ( brwConnector != stDmBrwConnector )
75        return XPL_HTTP_RET_BADARGUMENT;
76
77    return brwConnector->SetRequestProperty((CPCHAR)"header_start", buffer);
78}
79
80XPL_HTTP_RET_STATUS_T XPL_HTTP_Send(XPL_HTTP_HANDLE_T handler, CPCHAR data, UINT32 size)
81{
82    DmBrwConnector* brwConnector = (DmBrwConnector*)handler;
83    if ( brwConnector != stDmBrwConnector )
84        return XPL_HTTP_RET_BADARGUMENT;
85
86    return brwConnector->Send(data,size);
87}
88
89UINT32 XPL_HTTP_GetResponseLength(XPL_HTTP_HANDLE_T handler)
90{
91    DmBrwConnector* brwConnector = (DmBrwConnector*)handler;
92    if ( brwConnector != stDmBrwConnector )
93        return XPL_HTTP_RET_BADARGUMENT;
94
95    return brwConnector->GetResponseLength();
96}
97
98XPL_HTTP_RET_STATUS_T XPL_HTTP_GetResponse(XPL_HTTP_HANDLE_T handler, char * data, UINT32 size)
99{
100    DmBrwConnector* brwConnector = (DmBrwConnector*)handler;
101    if ( brwConnector != stDmBrwConnector )
102        return XPL_HTTP_RET_BADARGUMENT;
103
104    return brwConnector->GetResponse(data,size);
105}
106
107
108XPL_HTTP_RET_STATUS_T XPL_HTTP_GetHeaderField(XPL_HTTP_HANDLE_T handler, CPCHAR field, char **value)
109{
110    DmBrwConnector* brwConnector = (DmBrwConnector*)handler;
111    if ( brwConnector != stDmBrwConnector )
112        return XPL_HTTP_RET_BADARGUMENT;
113
114    DMString strValue;
115    SYNCML_DM_RET_STATUS_T ret=brwConnector->GetHeaderField(field,strValue);
116    DmStrcpy(*value, strValue.c_str());
117    return (XPL_HTTP_RET_STATUS_T)ret;
118}
119
120XPL_HTTP_CODE_T XPL_HTTP_GetResponseCode(XPL_HTTP_HANDLE_T handler)
121{
122    DmBrwConnector* brwConnector = (DmBrwConnector*)handler;
123    if ( brwConnector != stDmBrwConnector )
124        return XPL_HTTP_RET_BADARGUMENT;
125
126    return brwConnector->GetResponseCode();
127}
128
129XPL_HTTP_RET_STATUS_T XPL_HTTP_Close(XPL_HTTP_HANDLE_T handler)
130{
131    DmBrwConnector* brwConnector = (DmBrwConnector*)handler;
132    if ( brwConnector != stDmBrwConnector )
133        return XPL_HTTP_RET_BADARGUMENT;
134
135    brwConnector->Close();
136
137    DmBrwDestroyConnector(brwConnector);
138    stDmBrwConnector = NULL;
139    return XPL_HTTP_RET_SUCCESS;
140}
141
142XPL_HTTP_RET_STATUS_T XPL_HTTP_CloseReq(XPL_HTTP_HANDLE_T handler)
143{
144    DmBrwConnector* brwConnector = (DmBrwConnector*)handler;
145    if ( brwConnector != stDmBrwConnector )
146        return XPL_HTTP_RET_BADARGUMENT;
147
148    return brwConnector->CloseReq();
149}
150
151
152XPL_HTTP_RET_STATUS_T XPL_HTTP_DowloadByFile(XPL_HTTP_HANDLE_T handler, CPCHAR file_name)
153{
154    return XPL_HTTP_RET_NOT_SUPPORTED;
155
156}
157
158
159XPL_HTTP_RET_STATUS_T XPL_HTTP_DownloadByBuffer(XPL_HTTP_HANDLE_T handler, UINT8 * buffer, UINT32 size)
160{
161    return XPL_HTTP_RET_NOT_SUPPORTED;
162
163}
164
165XPL_HTTP_RET_STATUS_T
166XPL_HTTP_GetRespHeader(XPL_HTTP_HANDLE_T handler, char ** header)
167{
168    return XPL_HTTP_RET_NOT_SUPPORTED;
169}
170
171XPL_HTTP_RET_STATUS_T
172XPL_HTTP_GetType(XPL_HTTP_HANDLE_T handler, char ** content_type)
173{
174    return XPL_HTTP_RET_NOT_SUPPORTED;
175
176}
177
178#ifdef __cplusplus
179}
180#endif
181
182