Sample code for 30+ languages & platforms
Ruby

MedTunnel: Send Message with File Attachment

See more MedTunnel Examples

Demonstrates the MedTunnel SendMessage method to send a message with a file attachment to one or more recipients.

Chilkat Ruby Downloads

Ruby
require 'chilkat'

success = false

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

http = Chilkat::CkHttp.new()

# 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"
#         -F "file1=@qa_data/jpg/starfish.jpg"

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

req = Chilkat::CkHttpRequest.new()
req.put_HttpVerb("POST")
req.put_Path("/MedTunnelMsg/api/Message/SendMessage")
req.put_ContentType("multipart/form-data")

req.AddParam("ApplicationId","yourApplicationId")
req.AddParam("LocationId","yourLocationId")
req.AddParam("MedTunnelId","yourMedTunnelId")
req.AddParam("MedTunnelPassword","yourMedTunnelPassword")
req.AddParam("To","recipientsMedTunnelId")
req.AddParam("Body","Test")

success = req.AddFileForUpload2("file1","qa_data/jpg/starfish.jpg","application/octet-stream")

req.AddHeader("Expect","100-continue")

resp = Chilkat::CkHttpResponse.new()
success = http.HttpSReq("server.medtunnel.com",443,true,req,resp)
if (success == false)
    print http.lastErrorText() + "\n";
    exit
end

sbResponseBody = Chilkat::CkStringBuilder.new()
resp.GetBodySb(sbResponseBody)
jResp = Chilkat::CkJsonObject.new()
jResp.LoadSb(sbResponseBody)
jResp.put_EmitCompact(false)

print "Response Body:" + "\n";
print jResp.emit() + "\n";

respStatusCode = resp.get_StatusCode()
print "Response Status Code = " + respStatusCode.to_s() + "\n";
if (respStatusCode >= 400)
    print "Response Header:" + "\n";
    print resp.header() + "\n";
    print "Failed." + "\n";
    exit
end

# 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 = jResp.IntOf("ReturnCode")
ReturnCodeText = jResp.stringOf("ReturnCodeText")
Data = jResp.stringOf("Data")

# Load the Data into another JSON object and parse..
jsonData = Chilkat::CkJsonObject.new()
jsonData.Load(Data)
jsonData.put_EmitCompact(false)
print jsonData.emit() + "\n";

# {
#   "Id": 989448,
#   "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:48:22 PM",
#   "DisplayDateReceived": "04/29/2021  2:48 PM",
#   "ViewCount": 0,
#   "ViewedOn": "",
#   "AttachmentCount": 1,
#   "AttachmentNames": [
#     {
#       "MessageId": 989448,
#       "Id": 424857,
#       "Name": "starfish.jpg.35910fe9-4118-414c-a845-4d092ca6e784",
#       "DisplayName": "starfish.jpg",
#       "Size": 6229,
#       "WasViewed": false,
#       "ViewedOn": "",
#       "ViewCount": 0,
#       "Location": "Default"
#     }
#   ],
#   "AllRecipients": [
#     {
#       "Id": 989448,
#       "UserName": "...",
#       "AccountId": 0,
#       "AccountName": "...",
#       "AccountTitle": "",
#       "FirstName": "...",
#       "LastName": "...",
#       "EmailAddress": "",
#       "LastSentOn": "",
#       "SendCount": 0,
#       "IsFavorite": false
#     }
#   ],
#   "Status": 0,
#   "ParentMessageId": 989448,
#   "DistributionListId": 0,
#   "DistributionListName": "",
#   "BodyHistory": "",
#   "ReadReceiptCallbackUrl": null,
#   "SendGlobalNotifications": false
# }

Id = jsonData.IntOf("Id")
FromUserId = jsonData.IntOf("FromUserId")
FromMailBoxId = jsonData.IntOf("FromMailBoxId")
FromUserType = jsonData.IntOf("FromUserType")
FromUserName = jsonData.stringOf("FromUserName")
FromUserFullName = jsonData.stringOf("FromUserFullName")
FromUserAccountName = jsonData.stringOf("FromUserAccountName")
FromUserAccountTitle = jsonData.stringOf("FromUserAccountTitle")
ToUserId = jsonData.IntOf("ToUserId")
ToUserType = jsonData.IntOf("ToUserType")
ToUserMailboxId = jsonData.stringOf("ToUserMailboxId")
ToUserName = jsonData.stringOf("ToUserName")
ToUserFullName = jsonData.stringOf("ToUserFullName")
EmailAddress = jsonData.stringOf("EmailAddress")
Password = jsonData.stringOf("Password")
Subject = jsonData.stringOf("Subject")
PatientMedTunnelId = jsonData.stringOf("PatientMedTunnelId")
Body = jsonData.stringOf("Body")
DateReceived = jsonData.stringOf("DateReceived")
DisplayDateReceived = jsonData.stringOf("DisplayDateReceived")
ViewCount = jsonData.IntOf("ViewCount")
ViewedOn = jsonData.stringOf("ViewedOn")
AttachmentCount = jsonData.IntOf("AttachmentCount")
Status = jsonData.IntOf("Status")
ParentMessageId = jsonData.IntOf("ParentMessageId")
DistributionListId = jsonData.IntOf("DistributionListId")
DistributionListName = jsonData.stringOf("DistributionListName")
BodyHistory = jsonData.stringOf("BodyHistory")
ReadReceiptCallbackUrl = jsonData.stringOf("ReadReceiptCallbackUrl")
SendGlobalNotifications = jsonData.BoolOf("SendGlobalNotifications")
i = 0
count_i = jsonData.SizeOfArray("AttachmentNames")
while i < count_i
    jsonData.put_I(i)
    MessageId = jsonData.IntOf("AttachmentNames[i].MessageId")
    Id = jsonData.IntOf("AttachmentNames[i].Id")
    Name = jsonData.stringOf("AttachmentNames[i].Name")
    DisplayName = jsonData.stringOf("AttachmentNames[i].DisplayName")
    Size = jsonData.IntOf("AttachmentNames[i].Size")
    WasViewed = jsonData.BoolOf("AttachmentNames[i].WasViewed")
    ViewedOn = jsonData.stringOf("AttachmentNames[i].ViewedOn")
    ViewCount = jsonData.IntOf("AttachmentNames[i].ViewCount")
    Location = jsonData.stringOf("AttachmentNames[i].Location")
    i = i + 1
end
i = 0
count_i = jsonData.SizeOfArray("AllRecipients")
while i < count_i
    jsonData.put_I(i)
    Id = jsonData.IntOf("AllRecipients[i].Id")
    UserName = jsonData.stringOf("AllRecipients[i].UserName")
    AccountId = jsonData.IntOf("AllRecipients[i].AccountId")
    AccountName = jsonData.stringOf("AllRecipients[i].AccountName")
    AccountTitle = jsonData.stringOf("AllRecipients[i].AccountTitle")
    FirstName = jsonData.stringOf("AllRecipients[i].FirstName")
    LastName = jsonData.stringOf("AllRecipients[i].LastName")
    EmailAddress = jsonData.stringOf("AllRecipients[i].EmailAddress")
    LastSentOn = jsonData.stringOf("AllRecipients[i].LastSentOn")
    SendCount = jsonData.IntOf("AllRecipients[i].SendCount")
    IsFavorite = jsonData.BoolOf("AllRecipients[i].IsFavorite")
    i = i + 1
end