Sample code for 30+ languages & platforms
DataFlex

hotelbeds.com REST API Authentication

See more HTTP Misc Examples

Demonstrates how to calculate the X-Signature header and add to requests sent to api.test.hotelbeds.com.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoDt
    Boolean iBLocalTime
    String sUnixTimeStr
    String sApiKey
    String sSecret
    Handle hoSb
    Handle hoCrypt
    String sSignature
    Handle hoHttp
    String sJsonResponse
    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.

    // This example duplicates the following CURL statement provided in the hotelbeds.com "Getting Started"
    // developer documentation:

    // #!/bin/bash 
    // apiKey="yourApiKey"
    // secret="yourSecret"
    // curl -i \
    //   -X GET \
    //   -H 'Accept:application/json' \
    //   -H 'Api-key:'$apiKey'' \
    //   -H 'X-Signature:'$(echo -n ${apiKey}${secret}$(date +%s)|sha256sum|awk '{ print $1}')'' \
    //   https://api.test.hotelbeds.com/hotel-api/1.0/status

    // The "date + %s" command emits a UNIX date/time number such as 1605548842
    // We need to concatenate the apiKey, secret, and current date/time in UNIX (numeric) time format.
    Get Create (RefClass(cComCkDateTime)) To hoDt
    If (Not(IsComObjectCreated(hoDt))) Begin
        Send CreateComObject of hoDt
    End
    Get ComSetFromCurrentSystemTime Of hoDt To iSuccess
    // Get the UNIX time string in the GMT timezone.
    Move False To iBLocalTime
    Get ComGetAsUnixTimeStr Of hoDt iBLocalTime To sUnixTimeStr
    Showln sUnixTimeStr

    // Use your own API key and secret.  (These are not valid values)
    Move "227b20a2cb705e45f3b0a0944672dc07" To sApiKey
    Move "54dc7ba9e2" To sSecret

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSb
    If (Not(IsComObjectCreated(hoSb))) Begin
        Send CreateComObject of hoSb
    End
    Get ComAppend Of hoSb sApiKey To iSuccess
    Get ComAppend Of hoSb sSecret To iSuccess
    Get ComAppend Of hoSb sUnixTimeStr To iSuccess

    Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt
    If (Not(IsComObjectCreated(hoCrypt))) Begin
        Send CreateComObject of hoCrypt
    End
    Set ComHashAlgorithm Of hoCrypt To "sha256"
    Set ComEncodingMode Of hoCrypt To "hexlower"
    Get ComGetAsString Of hoSb To sTemp1
    Get ComHashStringENC Of hoCrypt sTemp1 To sSignature

    Showln sSignature

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    Send ComSetRequestHeader To hoHttp "Accept" "application/json"
    Send ComSetRequestHeader To hoHttp "Api-key" sApiKey
    Send ComSetRequestHeader To hoHttp "X-Signature" sSignature

    Get ComQuickGetStr Of hoHttp "https://api.test.hotelbeds.com/hotel-api/1.0/status" To sJsonResponse
    Showln sJsonResponse
    Get ComLastStatus Of hoHttp To iTemp1
    Showln iTemp1

    // Sample output:  

    // 1605549542
    // 2146aefb36e7331b3b29aafd7638398ca22e689573224f1a71274d60bd201ec2
    // {"auditData":{"timestamp":"2020-11-16 18:59:02.430"},"status":"OK"}
    // 200


End_Procedure