Zig
Zig
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 Zig Downloads
const std = @import("std");
const chilkat = @import("chilkat");
pub fn main(init: std.process.Init) !void {
const alloc = init.arena.allocator();
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
const http = try chilkat.Http.init();
defer http.deinit();
// 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"
// }
const json = try chilkat.JsonObject.init();
defer json.deinit();
json.updateString("MedTunnelId", "yourMedTunnelId@yourGroup") catch {};
json.updateString("Password", "yourPassword") catch {};
json.updateString("ApplicationId", "yourApplicationId") catch {};
json.updateString("LocationId", "yourLocationId") catch {};
json.updateString("ExpirationInMinutes", "50") catch {};
http.setRequestHeader("Content-Type", "application/json");
const sb_request_body = try chilkat.StringBuilder.init();
defer sb_request_body.deinit();
json.emitSb(sb_request_body) catch {};
const resp = try chilkat.HttpResponse.init();
defer resp.deinit();
http.httpSb("PUT", "https://server.medtunnel.com/MedTunnelSvc/api/Authenticate/LoginUser", sb_request_body, "utf-8", "application/json", resp) catch {
std.debug.print("{s}\n", .{try http.getLastErrorText(alloc)});
return;
};
const sb_response_body = try chilkat.StringBuilder.init();
defer sb_response_body.deinit();
resp.getBodySb(sb_response_body) catch {};
const j_resp = try chilkat.JsonObject.init();
defer j_resp.deinit();
j_resp.loadSb(sb_response_body) catch {};
j_resp.setEmitCompact(false);
std.debug.print("Response Body:\n", .{});
std.debug.print("{s}\n", .{try j_resp.emit(alloc)});
const resp_status_code = resp.getStatusCode();
std.debug.print("Response Status Code = {d}\n", .{resp_status_code});
if (resp_status_code >= 400) {
std.debug.print("Response Header:\n", .{});
std.debug.print("{s}\n", .{try resp.getHeader(alloc)});
std.debug.print("Failed.\n", .{});
return;
}
// 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
_ = j_resp.intOf("ReturnCode");
_ = try j_resp.stringOf(alloc, "ReturnCodeText");
const data = try j_resp.stringOf(alloc, "Data");
// Load the Data into another JSON object and parse..
const json_data = try chilkat.JsonObject.init();
defer json_data.deinit();
json_data.load(data) catch {};
json_data.setEmitCompact(false);
std.debug.print("{s}\n", .{try json_data.emit(alloc)});
// 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"
// }
const token = try json_data.stringOf(alloc, "Token");
std.debug.print("Token: {s}\n", .{token});
}