Sample code for 30+ languages & platforms
Tcl

MedTunnel: Login User

See more MedTunnel Examples

Authenticate and create a session for the User. This gets a user token to be used in the Authorization header for other API calls.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set http [new_CkHttp]

# Implements the following CURL command:

# curl -X PUT -k 
#         -H "Content-Type: application/json" 
#         -d '{        "MedTunnelId":"yourMedTunnelId@yourGroup",
#                         "Password":"yourPassword",
#                         "ApplicationId":"yourApplicationId",
#                         "LocationId":"yourLocationId",
#                         "ExpirationInMinutes":"50"
#                 }'
#         https://server.medtunnel.com/MedTunnelSvc/api/Authenticate/LoginUser

# Use the following online tool to generate HTTP code from a CURL command
# Convert a cURL Command to HTTP Source Code

# Use this online tool to generate code from sample JSON:
# Generate Code to Create JSON

# The following JSON is sent in the request body.

# {
#   "MedTunnelId": "yourMedTunnelId@yourGroup",
#   "Password": "yourPassword",
#   "ApplicationId": "yourApplicationId",
#   "LocationId": "yourLocationId",
#   "ExpirationInMinutes": "50"
# }

set json [new_CkJsonObject]

CkJsonObject_UpdateString $json "MedTunnelId" "yourMedTunnelId@yourGroup"
CkJsonObject_UpdateString $json "Password" "yourPassword"
CkJsonObject_UpdateString $json "ApplicationId" "yourApplicationId"
CkJsonObject_UpdateString $json "LocationId" "yourLocationId"
CkJsonObject_UpdateString $json "ExpirationInMinutes" "50"

CkHttp_SetRequestHeader $http "Content-Type" "application/json"

set sbRequestBody [new_CkStringBuilder]

CkJsonObject_EmitSb $json $sbRequestBody

set resp [new_CkHttpResponse]

set success [CkHttp_HttpSb $http "PUT" "https://server.medtunnel.com/MedTunnelSvc/api/Authenticate/LoginUser" $sbRequestBody "utf-8" "application/json" $resp]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkJsonObject $json
    delete_CkStringBuilder $sbRequestBody
    delete_CkHttpResponse $resp
    exit
}

set sbResponseBody [new_CkStringBuilder]

CkHttpResponse_GetBodySb $resp $sbResponseBody
set jResp [new_CkJsonObject]

CkJsonObject_LoadSb $jResp $sbResponseBody
CkJsonObject_put_EmitCompact $jResp 0

puts "Response Body:"
puts [CkJsonObject_emit $jResp]

set respStatusCode [CkHttpResponse_get_StatusCode $resp]
puts "Response Status Code = $respStatusCode"
if {$respStatusCode >= 400} then {
    puts "Response Header:"
    puts [CkHttpResponse_header $resp]
    puts "Failed."
    delete_CkHttp $http
    delete_CkJsonObject $json
    delete_CkStringBuilder $sbRequestBody
    delete_CkHttpResponse $resp
    delete_CkStringBuilder $sbResponseBody
    delete_CkJsonObject $jResp
    exit
}

# Sample JSON response:
# (Sample code for parsing the JSON response is shown below)

# {
#   "ReturnCode": 1,
#   "ReturnCodeText": "Success",
#   "Data": "{\"UserId\":36990,\"UserTypeId\":1, ... \"UserRole\":\"Account Admin\"}"
# }

# Sample code for parsing the JSON response...
# Use the following online tool to generate parsing code from sample JSON:
# Generate Parsing Code from JSON

set ReturnCode [CkJsonObject_IntOf $jResp "ReturnCode"]
set ReturnCodeText [CkJsonObject_stringOf $jResp "ReturnCodeText"]
set Data [CkJsonObject_stringOf $jResp "Data"]

# Load the Data into another JSON object and parse..
set jsonData [new_CkJsonObject]

CkJsonObject_Load $jsonData $Data
CkJsonObject_put_EmitCompact $jsonData 0
puts [CkJsonObject_emit $jsonData]

# Sample result.

# {
#   "UserId": 36990,
#   "UserTypeId": 1,
#   "UserTypeDesc": "Single Provider",
#   "Token": "MT 730DCA95-2B86-4A91-994E-99995B1A6FC1:9999952A-C6DA-4FB5-83D6-9999E880B4A2:50:/hc3CTWCS0kNMxZXTWR4NQ==:tev2vAToTCrnuyT6rxyCgQ==:sAYcvgPoIfaaCF0+gdeSD1GFcYk=",
#   "MailboxId": 36965,
#   "UserRole": "Account Admin"
# }

set token [CkJsonObject_stringOf $jsonData "Token"]
puts "Token: $token"

delete_CkHttp $http
delete_CkJsonObject $json
delete_CkStringBuilder $sbRequestBody
delete_CkHttpResponse $resp
delete_CkStringBuilder $sbResponseBody
delete_CkJsonObject $jResp
delete_CkJsonObject $jsonData