1 #ifndef DISABLE_NETWORK
11 #include <lib/base/estring.h>
12 #include <lib/base/eptrlist.h>
13 #include <lib/system/httpd.h>
15 #define INSERT(KEY,VALUE) insert(std::pair<eString, eXMLRPCVariant*>(KEY,VALUE))
21 std::map
<eString
,eXMLRPCVariant
*> *_struct
;
22 std::vector
<eXMLRPCVariant
> *_array
;
27 // QDateTime *_datetime;
28 // QByteArray *_base64;
31 enum XMLRPCType
{ STRUCT
, ARRAY
, I4
, BOOLEAN
, STRING
, DOUBLE
};
32 eXMLRPCVariant(std::map
<eString
,eXMLRPCVariant
*> *_struct
);
33 eXMLRPCVariant(std::vector
<eXMLRPCVariant
> *_array
);
34 eXMLRPCVariant(__s32
*_i4
);
35 eXMLRPCVariant(bool *_boolean
);
36 eXMLRPCVariant(eString
*_string
);
37 eXMLRPCVariant(double *_double
);
38 // eXMLRPCVariant(QDateTime *_datetime);
39 // eXMLRPCVariant(QByteArray *_base64);
40 eXMLRPCVariant(const eXMLRPCVariant
&c
);
43 std::map
<eString
,eXMLRPCVariant
*> *getStruct();
44 std::vector
<eXMLRPCVariant
> *getArray();
49 // inline QDateTime *getDatetime();
50 // inline QByteArray *getBase64();
52 void toXML(eString
&);
56 XMLRPCType
getType() { return type
; }
59 inline eXMLRPCVariant::eXMLRPCVariant(std::map
<eString
,eXMLRPCVariant
*> *__struct
)
60 :_struct(__struct
), type( STRUCT
)
64 inline eXMLRPCVariant::eXMLRPCVariant(std::vector
<eXMLRPCVariant
> *__array
)
65 :_array( __array
), type( ARRAY
)
69 inline eXMLRPCVariant::eXMLRPCVariant(__s32
*__i4
)
74 inline eXMLRPCVariant::eXMLRPCVariant(bool *__boolean
)
75 :_boolean(__boolean
), type(BOOLEAN
)
79 inline eXMLRPCVariant::eXMLRPCVariant(eString
*__string
)
80 :_string(__string
), type(STRING
)
84 inline eXMLRPCVariant::eXMLRPCVariant(double *__double
)
85 :_double(__double
), type(DOUBLE
)
89 /*inline eXMLRPCVariant::eXMLRPCVariant(QDateTime *__datetime)
90 :_datetime(__datetime), type(DATETIME)
94 /*inline eXMLRPCVariant::eXMLRPCVariant(QByteArray *__base64)
95 :_base64(__base64), type(BASE64)
99 inline std::map
<eString
,eXMLRPCVariant
*> *eXMLRPCVariant::getStruct()
104 inline std::vector
<eXMLRPCVariant
> *eXMLRPCVariant::getArray()
109 inline __s32
*eXMLRPCVariant::getI4()
114 inline bool *eXMLRPCVariant::getBoolean()
119 inline eString
*eXMLRPCVariant::getString()
124 inline double *eXMLRPCVariant::getDouble()
129 /*inline QDateTime *eXMLRPCVariant::getDatetime()
134 /*inline QByteArray *eXMLRPCVariant::getBase64()
139 class eXMLRPCResponse
: public eHTTPDataSource
141 XMLTreeParser parser
;
147 eXMLRPCResponse(eHTTPConnection
*c
);
151 void haveData(void *data
, int len
);
154 void xmlrpc_initialize(eHTTPD
*httpd
);
155 void xmlrpc_addMethod(eString methodName
, int (*)(std::vector
<eXMLRPCVariant
>&, ePtrList
<eXMLRPCVariant
>&));
156 void xmlrpc_fault(ePtrList
<eXMLRPCVariant
> &res
, int faultCode
, eString faultString
);
157 int xmlrpc_checkArgs(eString args
, std::vector
<eXMLRPCVariant
>&, ePtrList
<eXMLRPCVariant
> &res
);
159 class eHTTPXMLRPCResolver
: public eHTTPPathResolver
162 eHTTPXMLRPCResolver();
163 eHTTPDataSource
*getDataSource(eString request
, eString path
, eHTTPConnection
*conn
);
168 #endif //DISABLE_NETWORK