#ifndef DISABLE_NETWORK #ifndef __xmlrpc_h_ #define __xmlrpc_h_ #include #include #include #include #include #include #include #define INSERT(KEY,VALUE) insert(std::pair(KEY,VALUE)) class eXMLRPCVariant { std::map *_struct; std::vector *_array; __s32 *_i4; bool *_boolean; eString *_string; double *_double; // QDateTime *_datetime; // QByteArray *_base64; void zero(); public: eXMLRPCVariant(std::map *_struct); eXMLRPCVariant(std::vector *_array); eXMLRPCVariant(__s32 *_i4); eXMLRPCVariant(bool *_boolean); eXMLRPCVariant(eString *_string); eXMLRPCVariant(double *_double); // eXMLRPCVariant(QDateTime *_datetime); // eXMLRPCVariant(QByteArray *_base64); eXMLRPCVariant(const eXMLRPCVariant &c); ~eXMLRPCVariant(); std::map *getStruct(); std::vector *getArray(); __s32 *getI4(); bool *getBoolean(); eString *getString(); double *getDouble(); // QDateTime *getDatetime(); // QByteArray *getBase64(); void toXML(eString &); }; class eXMLRPCResponse: public eHTTPDataSource { XMLTreeParser parser; eString result; int size; int wptr; int doCall(); public: eXMLRPCResponse(eHTTPConnection *c); ~eXMLRPCResponse(); int doWrite(int); void haveData(void *data, int len); }; void xmlrpc_initialize(eHTTPD *httpd); void xmlrpc_addMethod(eString methodName, int (*)(std::vector&, ePtrList&)); void xmlrpc_fault(ePtrList &res, int faultCode, eString faultString); int xmlrpc_checkArgs(eString args, std::vector&, ePtrList &res); class eHTTPXMLRPCResolver: public eHTTPPathResolver { public: eHTTPXMLRPCResolver(); eHTTPDataSource *getDataSource(eString request, eString path, eHTTPConnection *conn); }; #endif #endif //DISABLE_NETWORK