/////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// #include "sakeRequestInternal.h" #include "sakeRequest.h" /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // Rate Record static SAKEStartRequestResult SAKE_CALL sakeiRateRecordValidateInput(SAKERequest request) { SAKERateRecordInput *input = (SAKERateRecordInput *)request->mInput; // check the tableid if(!input->mTableId) return SAKEStartRequestResult_BAD_TABLEID; return SAKEStartRequestResult_SUCCESS; } static SAKEStartRequestResult SAKE_CALL sakeiRateRecordFillSoapRequest(SAKERequest request) { SAKERateRecordInput *input = (SAKERateRecordInput *)request->mInput; // write the table id gsXmlWriteStringElement(request->mSoapRequest, GSI_SAKE_SERVICE_NAMESPACE, "tableid", input->mTableId); // write the recordid gsXmlWriteIntElement(request->mSoapRequest, GSI_SAKE_SERVICE_NAMESPACE, "recordid", (gsi_u32)input->mRecordId); // write the rating gsXmlWriteIntElement(request->mSoapRequest, GSI_SAKE_SERVICE_NAMESPACE, "rating", (gsi_u32)input->mRating); return SAKEStartRequestResult_SUCCESS; } static SAKERequestResult sakeiRateRecordProcessSoapResponse(SAKERequest request) { SAKERateRecordOutput *output = (SAKERateRecordOutput *)request->mOutput; if(gsi_is_false(gsXmlReadChildAsInt(request->mSoapResponse, "numRatings", &output->mNumRatings)) || gsi_is_false(gsXmlReadChildAsFloat(request->mSoapResponse, "averageRating", &output->mAverageRating))) { return SAKERequestResult_MALFORMED_RESPONSE; } return SAKERequestResult_SUCCESS; } SAKEStartRequestResult SAKE_CALL sakeiStartRateRecordRequest(SAKERequest request) { static SAKEIRequestInfo info = { sizeof(SAKERateRecordOutput), SAKEI_FUNC_NAME_STRINGS("RateRecord"), sakeiRateRecordValidateInput, sakeiRateRecordFillSoapRequest, sakeiRateRecordProcessSoapResponse }; return sakeiStartRequest(request, &info); } /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // Get Record Limit static SAKEStartRequestResult SAKE_CALL sakeiGetRecordLimitValidateInput(SAKERequest request) { SAKEGetRecordLimitInput *input = (SAKEGetRecordLimitInput *)request->mInput; // check the tableid if(!input->mTableId) return SAKEStartRequestResult_BAD_TABLEID; return SAKEStartRequestResult_SUCCESS; } static SAKEStartRequestResult SAKE_CALL sakeiGetRecordLimitFillSoapRequest(SAKERequest request) { SAKEGetRecordLimitInput *input = (SAKEGetRecordLimitInput *)request->mInput; // write the table id gsXmlWriteStringElement(request->mSoapRequest, GSI_SAKE_SERVICE_NAMESPACE, "tableid", input->mTableId); return SAKEStartRequestResult_SUCCESS; } static SAKERequestResult sakeiGetRecordLimitProcessSoapResponse(SAKERequest request) { SAKEGetRecordLimitOutput *output = (SAKEGetRecordLimitOutput *)request->mOutput; if(gsi_is_false(gsXmlReadChildAsInt(request->mSoapResponse, "limitPerOwner", &output->mLimitPerOwner)) || gsi_is_false(gsXmlReadChildAsInt(request->mSoapResponse, "numOwned", &output->mNumOwned))) { return SAKERequestResult_MALFORMED_RESPONSE; } return SAKERequestResult_SUCCESS; } SAKEStartRequestResult SAKE_CALL sakeiStartGetRecordLimitRequest(SAKERequest request) { static SAKEIRequestInfo info = { sizeof(SAKEGetRecordLimitOutput), SAKEI_FUNC_NAME_STRINGS("GetRecordLimit"), sakeiGetRecordLimitValidateInput, sakeiGetRecordLimitFillSoapRequest, sakeiGetRecordLimitProcessSoapResponse }; return sakeiStartRequest(request, &info); } /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // Get Record Count static SAKEStartRequestResult SAKE_CALL sakeiGetRecordCountValidateInput(SAKERequest request) { SAKEGetRecordCountInput *input = (SAKEGetRecordCountInput *)request->mInput; // check the tableid if(!input->mTableId) return SAKEStartRequestResult_BAD_TABLEID; return SAKEStartRequestResult_SUCCESS; } static SAKEStartRequestResult SAKE_CALL sakeiGetRecordCountFillSoapRequest(SAKERequest request) { SAKEGetRecordCountInput *input = (SAKEGetRecordCountInput *)request->mInput; // write the table id gsXmlWriteStringElement(request->mSoapRequest, GSI_SAKE_SERVICE_NAMESPACE, "tableid", input->mTableId); // write the filter if(input->mFilter != NULL) gsXmlWriteTStringElement(request->mSoapRequest, GSI_SAKE_SERVICE_NAMESPACE, "filter", input->mFilter); // write the cache flag gsXmlWriteIntElement(request->mSoapRequest, GSI_SAKE_SERVICE_NAMESPACE, "cacheFlag", (gsi_u32)input->mCacheFlag); return SAKEStartRequestResult_SUCCESS; } static SAKERequestResult sakeiGetRecordCountProcessSoapResponse(SAKERequest request) { SAKEGetRecordCountOutput *output = (SAKEGetRecordCountOutput *)request->mOutput; if(gsi_is_false(gsXmlReadChildAsInt(request->mSoapResponse, "count", &output->mCount))) { return SAKERequestResult_MALFORMED_RESPONSE; } return SAKERequestResult_SUCCESS; } SAKEStartRequestResult SAKE_CALL sakeiStartGetRecordCountRequest(SAKERequest request) { static SAKEIRequestInfo info = { sizeof(SAKEGetRandomRecordOutput), SAKEI_FUNC_NAME_STRINGS("GetRecordCount"), sakeiGetRecordCountValidateInput, sakeiGetRecordCountFillSoapRequest, sakeiGetRecordCountProcessSoapResponse }; return sakeiStartRequest(request, &info); }