Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Amazon SP-API Create FeedSee more Amazon SP-API ExamplesCreates a feed. Amazon returns a feedDocumentId value, encryption details, and a URL for uploading the feed contents. For more information, see https://developer-docs.amazon.com/sp-api/docs/feeds-api-v2020-09-04-use-case-guide
IncludeFile "CkStringBuilder.pb" IncludeFile "CkAuthAws.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkRest.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. authAws.i = CkAuthAws::ckCreate() If authAws.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkAuthAws::setCkAccessKey(authAws, "AWS_ACCESS_KEY") CkAuthAws::setCkSecretKey(authAws, "AWS_SECRET_KEY") CkAuthAws::setCkServiceName(authAws, "execute-api") ; Use the region that is correct for your needs. CkAuthAws::setCkRegion(authAws, "eu-west-1") rest.i = CkRest::ckCreate() If rest.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkRest::ckConnect(rest,"sellingpartnerapi-eu.amazon.com",443,1,1) If success = 0 Debug CkRest::ckLastErrorText(rest) CkAuthAws::ckDispose(authAws) CkRest::ckDispose(rest) ProcedureReturn EndIf success = CkRest::ckSetAuthAws(rest,authAws) ; Load the previously obtained LWA access token. ; See Fetch SP-API LWA Access Token jsonToken.i = CkJsonObject::ckCreate() If jsonToken.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/sp_api_lwa_token.json") If success = 0 Debug "Failed to load LWA access token." CkAuthAws::ckDispose(authAws) CkRest::ckDispose(rest) CkJsonObject::ckDispose(jsonToken) ProcedureReturn EndIf ; Add the x-amz-access-token request header. lwa_token.s = CkJsonObject::ckStringOf(jsonToken,"access_token") jsonReq.i = CkJsonObject::ckCreate() If jsonReq.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckUpdateString(jsonReq,"contentType","text/tab-separated-values; charset=UTF-8") sbRequest.i = CkStringBuilder::ckCreate() If sbRequest.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckEmitSb(jsonReq,sbRequest) CkRest::ckClearAllQueryParams(rest) CkRest::ckClearAllHeaders(rest) CkRest::ckAddHeader(rest,"x-amz-access-token",lwa_token) sbResponse.i = CkStringBuilder::ckCreate() If sbResponse.i = 0 Debug "Failed to create object." ProcedureReturn EndIf path.s = "/feeds/2021-06-30/documents" success = CkRest::ckFullRequestSb(rest,"POST",path,sbRequest,sbResponse) If success = 0 Debug CkRest::ckLastErrorText(rest) CkAuthAws::ckDispose(authAws) CkRest::ckDispose(rest) CkJsonObject::ckDispose(jsonToken) CkJsonObject::ckDispose(jsonReq) CkStringBuilder::ckDispose(sbRequest) CkStringBuilder::ckDispose(sbResponse) ProcedureReturn EndIf ; Examine the response status. statusCode.i = CkRest::ckResponseStatusCode(rest) Debug "statusCode: " + Str(statusCode) If statusCode <> 201 Debug "Response status text: " + CkRest::ckResponseStatusText(rest) Debug "Response body: " Debug CkStringBuilder::ckGetAsString(sbResponse) Debug "Failed." CkAuthAws::ckDispose(authAws) CkRest::ckDispose(rest) CkJsonObject::ckDispose(jsonToken) CkJsonObject::ckDispose(jsonReq) CkStringBuilder::ckDispose(sbRequest) CkStringBuilder::ckDispose(sbResponse) ProcedureReturn EndIf Debug CkStringBuilder::ckGetAsString(sbResponse) ; If successful, gets a JSON response such as the following: ; { ; "feedDocumentId": "3d4e42b5-1d6e-44e8-a89c-2abfca0625bb", ; "url": "https://d34o8swod1owfl.cloudfront.net/Feed_101__POST_PRODUCT_DATA_.xml" ; } ; Use this online tool to generate parsing code from sample JSON: ; Generate Parsing Code from JSON json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckLoadSb(json,sbResponse) feedDocumentId.s = CkJsonObject::ckStringOf(json,"feedDocumentId") url.s = CkJsonObject::ckStringOf(json,"url") ; Save the JSON to a file for the example that constructs the XML feed and uploads.. success = CkJsonObject::ckWriteFile(json,"qa_data/json/sp_api_feed_upload_info.json") Debug "Success!" CkAuthAws::ckDispose(authAws) CkRest::ckDispose(rest) CkJsonObject::ckDispose(jsonToken) CkJsonObject::ckDispose(jsonReq) CkStringBuilder::ckDispose(sbRequest) CkStringBuilder::ckDispose(sbResponse) CkJsonObject::ckDispose(json) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.