Unicode C
Unicode C
MedTunnel: Send Message Text Only
See more MedTunnel Examples
Demonstrates the MedTunnel SendMessage method to send a message to one or more recipients.Chilkat Unicode C Downloads
#include <C_CkHttpW.h>
#include <C_CkHttpRequestW.h>
#include <C_CkHttpResponseW.h>
#include <C_CkStringBuilderW.h>
#include <C_CkJsonObjectW.h>
void ChilkatSample(void)
{
BOOL success;
HCkHttpW http;
HCkHttpRequestW req;
HCkHttpResponseW resp;
HCkStringBuilderW sbResponseBody;
HCkJsonObjectW jResp;
int respStatusCode;
int ReturnCode;
const wchar_t *ReturnCodeText;
const wchar_t *Data;
HCkJsonObjectW jsonData;
const wchar_t *UserName;
int AccountId;
const wchar_t *AccountName;
const wchar_t *AccountTitle;
const wchar_t *FirstName;
const wchar_t *LastName;
const wchar_t *LastSentOn;
int SendCount;
BOOL IsFavorite;
int Id;
int FromUserId;
int FromMailBoxId;
int FromUserType;
const wchar_t *FromUserName;
const wchar_t *FromUserFullName;
const wchar_t *FromUserAccountName;
const wchar_t *FromUserAccountTitle;
int ToUserId;
int ToUserType;
const wchar_t *ToUserMailboxId;
const wchar_t *ToUserName;
const wchar_t *ToUserFullName;
const wchar_t *EmailAddress;
const wchar_t *Password;
const wchar_t *Subject;
const wchar_t *PatientMedTunnelId;
const wchar_t *Body;
const wchar_t *DateReceived;
const wchar_t *DisplayDateReceived;
int ViewCount;
const wchar_t *ViewedOn;
int AttachmentCount;
int Status;
int ParentMessageId;
int DistributionListId;
const wchar_t *DistributionListName;
const wchar_t *BodyHistory;
const wchar_t *ReadReceiptCallbackUrl;
BOOL SendGlobalNotifications;
int i;
int count_i;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http = CkHttpW_Create();
// Implements the following CURL command:
// curl https://server.medtunnel.com/MedTunnelMsg/api/Message/SendMessage -X POST -k
// -F "ApplicationId=yourApplicationId" -F "LocationId=yourLocationId"
// -F "MedTunnelId=yourMedTunnelId" -F "MedTunnelPassword=yourMedTunnelPassword"
// -F "To=recipientsMedTunnelId"
// -F "Body=Test of SendMessage"
// Use the following online tool to generate HTTP code from a CURL command
// Convert a cURL Command to HTTP Source Code
req = CkHttpRequestW_Create();
CkHttpRequestW_putHttpVerb(req,L"POST");
CkHttpRequestW_putPath(req,L"/MedTunnelMsg/api/Message/SendMessage");
CkHttpRequestW_putContentType(req,L"multipart/form-data");
CkHttpRequestW_AddParam(req,L"ApplicationId",L"yourApplicationId");
CkHttpRequestW_AddParam(req,L"LocationId",L"yourLocationId");
CkHttpRequestW_AddParam(req,L"MedTunnelId",L"yourMedTunnelId");
CkHttpRequestW_AddParam(req,L"MedTunnelPassword",L"yourMedTunnelPassword");
CkHttpRequestW_AddParam(req,L"To",L"recipientsMedTunnelId");
CkHttpRequestW_AddParam(req,L"Body",L"Test");
resp = CkHttpResponseW_Create();
success = CkHttpW_HttpSReq(http,L"server.medtunnel.com",443,TRUE,req,resp);
if (success == FALSE) {
wprintf(L"%s\n",CkHttpW_lastErrorText(http));
CkHttpW_Dispose(http);
CkHttpRequestW_Dispose(req);
CkHttpResponseW_Dispose(resp);
return;
}
sbResponseBody = CkStringBuilderW_Create();
CkHttpResponseW_GetBodySb(resp,sbResponseBody);
jResp = CkJsonObjectW_Create();
CkJsonObjectW_LoadSb(jResp,sbResponseBody);
CkJsonObjectW_putEmitCompact(jResp,FALSE);
wprintf(L"Response Body:\n");
wprintf(L"%s\n",CkJsonObjectW_emit(jResp));
respStatusCode = CkHttpResponseW_getStatusCode(resp);
wprintf(L"Response Status Code = %d\n",respStatusCode);
if (respStatusCode >= 400) {
wprintf(L"Response Header:\n");
wprintf(L"%s\n",CkHttpResponseW_header(resp));
wprintf(L"Failed.\n");
CkHttpW_Dispose(http);
CkHttpRequestW_Dispose(req);
CkHttpResponseW_Dispose(resp);
CkStringBuilderW_Dispose(sbResponseBody);
CkJsonObjectW_Dispose(jResp);
return;
}
// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)
// {
// "ReturnCode": 1,
// "ReturnCodeText": "Success",
// "Data": "{\"Id\":989432,\"FromUserId\":36990,\"FromMailBoxId\":36965, ... \"SendGlobalNotifications\":false}"
// }
// 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 = CkJsonObjectW_IntOf(jResp,L"ReturnCode");
ReturnCodeText = CkJsonObjectW_stringOf(jResp,L"ReturnCodeText");
Data = CkJsonObjectW_stringOf(jResp,L"Data");
// Load the Data into another JSON object and parse..
jsonData = CkJsonObjectW_Create();
CkJsonObjectW_Load(jsonData,Data);
CkJsonObjectW_putEmitCompact(jsonData,FALSE);
wprintf(L"%s\n",CkJsonObjectW_emit(jsonData));
// {
// "Id": 989436,
// "FromUserId": 36990,
// "FromMailBoxId": 36965,
// "FromUserType": 0,
// "FromUserName": "...",
// "FromUserFullName": "...",
// "FromUserAccountName": "...",
// "FromUserAccountTitle": "...",
// "ToUserId": 36990,
// "ToUserType": 1,
// "ToUserMailboxId": "36965",
// "ToUserName": "...",
// "ToUserFullName": "...",
// "EmailAddress": "",
// "Password": "",
// "Subject": "",
// "PatientMedTunnelId": "",
// "Body": "Test",
// "DateReceived": "4/29/2021 2:29:18 PM",
// "DisplayDateReceived": "04/29/2021 2:29 PM",
// "ViewCount": 0,
// "ViewedOn": "",
// "AttachmentCount": 0,
// "AttachmentNames": [
// ],
// "AllRecipients": [
// {
// "Id": 989436,
// "UserName": "...",
// "AccountId": 0,
// "AccountName": "...",
// "AccountTitle": "",
// "FirstName": "...",
// "LastName": "...",
// "EmailAddress": "",
// "LastSentOn": "",
// "SendCount": 0,
// "IsFavorite": false
// }
// ],
// "Status": 1,
// "ParentMessageId": 989436,
// "DistributionListId": 0,
// "DistributionListName": "",
// "BodyHistory": "",
// "ReadReceiptCallbackUrl": null,
// "SendGlobalNotifications": false
// }
//
// Chilkat functions returning "const char *" return a pointer to temporary internal memory owned and managed by Chilkat.
// See this example explaining how this memory should be used: const char * functions.
Id = CkJsonObjectW_IntOf(jsonData,L"Id");
FromUserId = CkJsonObjectW_IntOf(jsonData,L"FromUserId");
FromMailBoxId = CkJsonObjectW_IntOf(jsonData,L"FromMailBoxId");
FromUserType = CkJsonObjectW_IntOf(jsonData,L"FromUserType");
FromUserName = CkJsonObjectW_stringOf(jsonData,L"FromUserName");
FromUserFullName = CkJsonObjectW_stringOf(jsonData,L"FromUserFullName");
FromUserAccountName = CkJsonObjectW_stringOf(jsonData,L"FromUserAccountName");
FromUserAccountTitle = CkJsonObjectW_stringOf(jsonData,L"FromUserAccountTitle");
ToUserId = CkJsonObjectW_IntOf(jsonData,L"ToUserId");
ToUserType = CkJsonObjectW_IntOf(jsonData,L"ToUserType");
ToUserMailboxId = CkJsonObjectW_stringOf(jsonData,L"ToUserMailboxId");
ToUserName = CkJsonObjectW_stringOf(jsonData,L"ToUserName");
ToUserFullName = CkJsonObjectW_stringOf(jsonData,L"ToUserFullName");
EmailAddress = CkJsonObjectW_stringOf(jsonData,L"EmailAddress");
Password = CkJsonObjectW_stringOf(jsonData,L"Password");
Subject = CkJsonObjectW_stringOf(jsonData,L"Subject");
PatientMedTunnelId = CkJsonObjectW_stringOf(jsonData,L"PatientMedTunnelId");
Body = CkJsonObjectW_stringOf(jsonData,L"Body");
DateReceived = CkJsonObjectW_stringOf(jsonData,L"DateReceived");
DisplayDateReceived = CkJsonObjectW_stringOf(jsonData,L"DisplayDateReceived");
ViewCount = CkJsonObjectW_IntOf(jsonData,L"ViewCount");
ViewedOn = CkJsonObjectW_stringOf(jsonData,L"ViewedOn");
AttachmentCount = CkJsonObjectW_IntOf(jsonData,L"AttachmentCount");
Status = CkJsonObjectW_IntOf(jsonData,L"Status");
ParentMessageId = CkJsonObjectW_IntOf(jsonData,L"ParentMessageId");
DistributionListId = CkJsonObjectW_IntOf(jsonData,L"DistributionListId");
DistributionListName = CkJsonObjectW_stringOf(jsonData,L"DistributionListName");
BodyHistory = CkJsonObjectW_stringOf(jsonData,L"BodyHistory");
ReadReceiptCallbackUrl = CkJsonObjectW_stringOf(jsonData,L"ReadReceiptCallbackUrl");
SendGlobalNotifications = CkJsonObjectW_BoolOf(jsonData,L"SendGlobalNotifications");
i = 0;
count_i = CkJsonObjectW_SizeOfArray(jsonData,L"AttachmentNames");
while (i < count_i) {
CkJsonObjectW_putI(jsonData,i);
i = i + 1;
}
i = 0;
count_i = CkJsonObjectW_SizeOfArray(jsonData,L"AllRecipients");
while (i < count_i) {
CkJsonObjectW_putI(jsonData,i);
Id = CkJsonObjectW_IntOf(jsonData,L"AllRecipients[i].Id");
UserName = CkJsonObjectW_stringOf(jsonData,L"AllRecipients[i].UserName");
AccountId = CkJsonObjectW_IntOf(jsonData,L"AllRecipients[i].AccountId");
AccountName = CkJsonObjectW_stringOf(jsonData,L"AllRecipients[i].AccountName");
AccountTitle = CkJsonObjectW_stringOf(jsonData,L"AllRecipients[i].AccountTitle");
FirstName = CkJsonObjectW_stringOf(jsonData,L"AllRecipients[i].FirstName");
LastName = CkJsonObjectW_stringOf(jsonData,L"AllRecipients[i].LastName");
EmailAddress = CkJsonObjectW_stringOf(jsonData,L"AllRecipients[i].EmailAddress");
LastSentOn = CkJsonObjectW_stringOf(jsonData,L"AllRecipients[i].LastSentOn");
SendCount = CkJsonObjectW_IntOf(jsonData,L"AllRecipients[i].SendCount");
IsFavorite = CkJsonObjectW_BoolOf(jsonData,L"AllRecipients[i].IsFavorite");
i = i + 1;
}
CkHttpW_Dispose(http);
CkHttpRequestW_Dispose(req);
CkHttpResponseW_Dispose(resp);
CkStringBuilderW_Dispose(sbResponseBody);
CkJsonObjectW_Dispose(jResp);
CkJsonObjectW_Dispose(jsonData);
}