diff options
| author | Merov Linden <merov@lindenlab.com> | 2014-05-05 15:13:48 -0700 | 
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2014-05-05 15:13:48 -0700 | 
| commit | 1a837c5719fa8dded91561a97839d2ed28e87553 (patch) | |
| tree | 5f805b02e95e4a4b24c0711257afc9136a2a01a0 | |
| parent | 9c5d3de013921999b2dfb4994de91ab10308fd6a (diff) | |
DD-22 : WIP : Completed GET and POST listings routes. Refactored the marketplace data code a bit as a result
| -rwxr-xr-x | indra/newview/llinventorybridge.cpp | 2 | ||||
| -rwxr-xr-x | indra/newview/llmarketplacefunctions.cpp | 97 | ||||
| -rwxr-xr-x | indra/newview/llmarketplacefunctions.h | 5 | 
3 files changed, 54 insertions, 50 deletions
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 97646dc949..e9abe6a466 100755 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -3210,7 +3210,7 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action)  	}  	else if ("marketplace_create_listing" == action)  	{ -        LLMarketplaceData::instance().addListing(mUUID); +        LLMarketplaceData::instance().createListing(mUUID);  		return;  	}      else if ("marketplace_disassociate_listing" == action) diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp index d71f328a28..64df5a8396 100755 --- a/indra/newview/llmarketplacefunctions.cpp +++ b/indra/newview/llmarketplacefunctions.cpp @@ -170,13 +170,24 @@ public:              return;          } -        // Extract the info from the Json string : just get the id for the first element in the list -        const int id = root["listings"][0u]["id"].asInt(); -        //Json::Value listings = root["listings"]; -        llinfos << "Merov : Parsed the json, string = " << body << llendl; -        llinfos << "Merov : Parsed the json, id = " << id << llendl; +        // Extract the info from the Json string +        Json::ValueIterator it = root["listings"].begin(); +         +        while (it != root["listings"].end()) +        { +            Json::Value listing = *it; +             +            int listing_id = listing["id"].asInt(); +            bool is_listed = listing["is_listed"].asBool(); +            std::string folder_uuid_string = listing["inventory_info"]["listing_folder_id"].asString(); +            std::string version_uuid_string = listing["inventory_info"]["version_folder_id"].asString(); +             +            LLUUID folder_id(folder_uuid_string); +            LLUUID version_id(version_uuid_string); +            LLMarketplaceData::instance().addListing(folder_id,listing_id,version_id,is_listed); +            it++; +        }      } -      };  class LLSLMCreateListingsResponder : public LLHTTPClient::Responder @@ -211,35 +222,23 @@ public:              return;          } -        // Extract the info from the Json string : just get the id for the first element in the list -        const int id = root["listings"][0u]["id"].asInt(); -        //Json::Value listings = root["listings"]; -        llinfos << "Merov : Parsed the json, string = " << body << llendl; -        llinfos << "Merov : Parsed the json, id = " << id << llendl; -    } - -	virtual void completed(U32 status, const std::string& reason, const LLSD& content) -	{ -		if (isGoodStatus(status)) -		{ -            llinfos << "Merov : completed successful, status = " << status << ", reason = " << reason << ", content = " << content << llendl; -		} -		else -		{ -            llinfos << "Merov : completed with error, status = " << status << ", reason = " << reason << ", content = " << content << llendl; -		} -	} -     -    void completedHeader(U32 status, const std::string& reason, const LLSD& content) -    { -		if (isGoodStatus(status)) -		{ -            llinfos << "Merov : completed header successful, status = " << status << ", reason = " << reason << ", content = " << content << llendl; -		} -		else -		{ -            llinfos << "Merov : completed header with error, status = " << status << ", reason = " << reason << ", content = " << content << llendl; -		} +        // Extract the info from the Json string +        Json::ValueIterator it = root["listings"].begin(); +         +        while (it != root["listings"].end()) +        { +            Json::Value listing = *it; +             +            int listing_id = listing["id"].asInt(); +            bool is_listed = listing["is_listed"].asBool(); +            std::string folder_uuid_string = listing["inventory_info"]["listing_folder_id"].asString(); +            std::string version_uuid_string = listing["inventory_info"]["version_folder_id"].asString(); +             +            LLUUID folder_id(folder_uuid_string); +            LLUUID version_id(version_uuid_string); +            LLMarketplaceData::instance().addListing(folder_id,listing_id,version_id,is_listed); +            it++; +        }      }  };  // SLM Responders End @@ -795,7 +794,7 @@ void LLMarketplaceData::getSLMListings()  	LLHTTPClient::get(getSLMConnectURL("/listings"), new LLSLMListingsResponder(), LLSD());  } -void LLMarketplaceData::postSLMListing(const LLUUID& folder_id) +void LLMarketplaceData::createSLMListing(const LLUUID& folder_id)  {  	LLSD headers = LLSD::emptyMap();  	headers["Accept"] = "application/json"; @@ -811,8 +810,6 @@ void LLMarketplaceData::postSLMListing(const LLUUID& folder_id)      std::string json_str = writer.write(root); -    llinfos << "Merov : postSLMListing, json body = " << json_str << ", size = " << json_str.size() << llendl; -      	// postRaw() takes ownership of the buffer and releases it later.  	size_t size = json_str.size();  	U8 *data = new U8[size]; @@ -851,23 +848,29 @@ void LLMarketplaceData::setSLMStatus(U32 status)  }  // Creation / Deletion -bool LLMarketplaceData::addListing(const LLUUID& folder_id) +bool LLMarketplaceData::createListing(const LLUUID& folder_id)  {      if (isListed(folder_id))      {          // Listing already exists -> exit with error          return false;      } -	mMarketplaceItems[folder_id] = LLMarketplaceTuple(folder_id); -     -    // Post the listing to SLM -    postSLMListing(folder_id); -    // *TODO : Get the listing id from SLM -    // For the moment, we use that wonky test ID generator... -    S32 listing_id = LLMarketplaceData::instance().getTestMarketplaceID(); +    // Post the listing creation request to SLM +    createSLMListing(folder_id); -    setListingID(folder_id,listing_id); +    return true; +} + +bool LLMarketplaceData::addListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed) +{ +    if (isListed(folder_id)) +    { +        // Listing already exists -> exit with error +        return false; +    } +	mMarketplaceItems[folder_id] = LLMarketplaceTuple(folder_id, listing_id, version_id, is_listed); +      update_marketplace_category(folder_id);      gInventory.notifyObservers();      return true; diff --git a/indra/newview/llmarketplacefunctions.h b/indra/newview/llmarketplacefunctions.h index 7f1b6350e8..aa286adcc8 100755 --- a/indra/newview/llmarketplacefunctions.h +++ b/indra/newview/llmarketplacefunctions.h @@ -163,7 +163,7 @@ public:      void initializeSLM(const status_updated_signal_t::slot_type& cb);      void getSLMListings();      //void getSLMListing(); -    void postSLMListing(const LLUUID& folder_id); +    void createSLMListing(const LLUUID& folder_id);      //void modifySLMListing();      //void associateSLMListing(); @@ -174,7 +174,8 @@ public:      bool isVersionFolder(const LLUUID& folder_id); // returns true if folder_id is a Version folder      // Create/Delete Marketplace data set  : each method returns true if the function succeeds, false if error -    bool addListing(const LLUUID& folder_id); +    bool createListing(const LLUUID& folder_id); +    bool addListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed);      bool associateListing(const LLUUID& folder_id, S32 listing_id);      bool deleteListing(const LLUUID& folder_id);  | 
