Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loDt
LOCAL lnBLocalTime
LOCAL lcUnixTimeStr
LOCAL lcApiKey
LOCAL lcSecret
LOCAL loSb
LOCAL loCrypt
LOCAL lcSignature
LOCAL loHttp
LOCAL lcJsonResponse

lnSuccess = 0

* 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.
loDt = CreateObject('Chilkat.CkDateTime')
loDt.SetFromCurrentSystemTime()
* Get the UNIX time string in the GMT timezone.
lnBLocalTime = 0
lcUnixTimeStr = loDt.GetAsUnixTimeStr(lnBLocalTime)
? lcUnixTimeStr

* Use your own API key and secret.  (These are not valid values)
lcApiKey = "227b20a2cb705e45f3b0a0944672dc07"
lcSecret = "54dc7ba9e2"

loSb = CreateObject('Chilkat.StringBuilder')
loSb.Append(lcApiKey)
loSb.Append(lcSecret)
loSb.Append(lcUnixTimeStr)

loCrypt = CreateObject('Chilkat.Crypt2')
loCrypt.HashAlgorithm = "sha256"
loCrypt.EncodingMode = "hexlower"
lcSignature = loCrypt.HashStringENC(loSb.GetAsString())

? lcSignature

loHttp = CreateObject('Chilkat.Http')

loHttp.SetRequestHeader("Accept","application/json")
loHttp.SetRequestHeader("Api-key",lcApiKey)
loHttp.SetRequestHeader("X-Signature",lcSignature)

lcJsonResponse = loHttp.QuickGetStr("https://api.test.hotelbeds.com/hotel-api/1.0/status")
? lcJsonResponse
? STR(loHttp.LastStatus)

* Sample output:  

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

RELEASE loDt
RELEASE loSb
RELEASE loCrypt
RELEASE loHttp