Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
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 Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.Http,
Chilkat.StringBuilder,
Chilkat.HttpResponse,
Chilkat.JsonObject;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
http: THttp;
json: TJsonObject;
sbRequestBody: TStringBuilder;
resp: THttpResponse;
sbResponseBody: TStringBuilder;
jResp: TJsonObject;
respStatusCode: Integer;
ReturnCode: Integer;
ReturnCodeText: string;
Data: string;
jsonData: TJsonObject;
token: string;
begin
success := False;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http := THttp.Create;
// 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"
// }
json := TJsonObject.Create;
json.UpdateString('MedTunnelId','yourMedTunnelId@yourGroup');
json.UpdateString('Password','yourPassword');
json.UpdateString('ApplicationId','yourApplicationId');
json.UpdateString('LocationId','yourLocationId');
json.UpdateString('ExpirationInMinutes','50');
http.SetRequestHeader('Content-Type','application/json');
sbRequestBody := TStringBuilder.Create;
json.EmitSb(sbRequestBody);
resp := THttpResponse.Create;
success := http.HttpSb('PUT','https://server.medtunnel.com/MedTunnelSvc/api/Authenticate/LoginUser',sbRequestBody,'utf-8','application/json',resp);
if (success = False) then
begin
WriteLn(http.LastErrorText);
Exit;
end;
sbResponseBody := TStringBuilder.Create;
resp.GetBodySb(sbResponseBody);
jResp := TJsonObject.Create;
jResp.LoadSb(sbResponseBody);
jResp.EmitCompact := False;
WriteLn('Response Body:');
WriteLn(jResp.Emit());
respStatusCode := resp.StatusCode;
WriteLn('Response Status Code = ' + respStatusCode);
if (respStatusCode >= 400) then
begin
WriteLn('Response Header:');
WriteLn(resp.Header);
WriteLn('Failed.');
Exit;
end;
// 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
ReturnCode := jResp.IntOf('ReturnCode');
ReturnCodeText := jResp.StringOf('ReturnCodeText');
Data := jResp.StringOf('Data');
// Load the Data into another JSON object and parse..
jsonData := TJsonObject.Create;
jsonData.Load(Data);
jsonData.EmitCompact := False;
WriteLn(jsonData.Emit());
// 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"
// }
token := jsonData.StringOf('Token');
WriteLn('Token: ' + token);
http.Free;
json.Free;
sbRequestBody.Free;
resp.Free;
sbResponseBody.Free;
jResp.Free;
jsonData.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.