Sample code for 30+ languages & platforms
DataFlex

Amazon SP-API Upload Feed

See more Amazon SP-API Examples

Upload a feed document to the feed previously created.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Variant vSbRequestBody
    Handle hoSbRequestBody
    Handle hoJsonFeedInfo
    String sUrl
    Handle hoHttp
    Variant vResp
    Handle hoResp
    String sTemp1
    Integer iTemp1

    Move False To iSuccess

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    // Load your own feed data file.
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbRequestBody
    If (Not(IsComObjectCreated(hoSbRequestBody))) Begin
        Send CreateComObject of hoSbRequestBody
    End
    Get ComLoadFile Of hoSbRequestBody "C:/AAWorkarea/test-despatch-upload.txt" "utf-8" To iSuccess
    If (iSuccess = False) Begin
        Showln "Failed to load test-despatch-upload.txt."
        Procedure_Return
    End

    // The SP-API Create Feed example returned JSON such as this.

    // {
    //   "feedDocumentId": "amzn1.tortuga.4.eu.8fb6f9c4-XXXX-4e7f-824f-XXXXXXXXXXXXX.ZZZZZZZZZZZZZZ",
    //   "url": "https://tortuga-prod-eu.s3-eu-west-1.amazonaws.com/%2FNinetyDays/amzn1.tortuga.4.eu.8fb6f9c4-XXXX-4e7f-824f-XXXXXXXXXXXXX.ZZZZZZZZZZZZZZ?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230222T014944Z&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Expires=300&X-Amz-Credential=XXXXXXXXXXXXXXXXX%2F20230222%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    // }

    // Load the JSON feed file created by this example:  SP-API Create Feed
    Get Create (RefClass(cComChilkatJsonObject)) To hoJsonFeedInfo
    If (Not(IsComObjectCreated(hoJsonFeedInfo))) Begin
        Send CreateComObject of hoJsonFeedInfo
    End
    Get ComLoadFile Of hoJsonFeedInfo "qa_data/json/sp_api_feed_upload_info.json" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoJsonFeedInfo To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Get the pre-signed URL
    Get ComStringOf Of hoJsonFeedInfo "url" To sUrl

    // We can use the Chilkat HTTP object because the URL is pre-signed.
    // We don't need to add our own AWS authentication because it's already in the pre-signed URL,
    // which is only valid for short amount of time.
    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    // NOTE: The string "text/tab-separated-values; charset=UTF-8" must match exactly the contentType specified when creating the feed.
    Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
    If (Not(IsComObjectCreated(hoResp))) Begin
        Send CreateComObject of hoResp
    End
    Get pvComObject of hoSbRequestBody to vSbRequestBody
    Get pvComObject of hoResp to vResp
    Get ComHttpSb Of hoHttp "PUT" sUrl vSbRequestBody "utf-8" "text/tab-separated-values; charset=UTF-8" vResp To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComStatusCode Of hoResp To iTemp1
    Showln "status code = " iTemp1
    Get ComStatusText Of hoResp To sTemp1
    Showln "status text = " sTemp1
    Showln "response body:"
    Get ComBodyStr Of hoResp To sTemp1
    Showln sTemp1


End_Procedure