Last active
April 16, 2019 15:29
-
-
Save JoseCage/f94d579f146b1cf6941776034f0371c4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import ballerina/http; | |
import ballerina/log; | |
import ballerina/io; | |
import ballerina/mysql; | |
// The expected fields we will get from DataLogger | |
// And i need to access from payload/request | |
// IMEI | |
// SIMN, | |
// DID; | |
// TIME | |
// auth | |
// group | |
// PID | |
// CHAN | |
// PTYPE | |
// T0 | |
// TS0 | |
// T1 | |
// T2 | |
// TS2 | |
// T3 | |
// TS3 | |
// SIGNAL | |
// Listen from Port 3000 | |
listener http:Listener endpoint = new (3000); | |
# Description | |
@http:ServiceConfig { | |
basePath: "/api" | |
} | |
service Logger on endpoint { | |
@http:ResourceConfig{ | |
path: "/logger", | |
methods: ["POST"] | |
} | |
resource function GetTextPayload(http:Caller caller, http:Request req) { | |
http:Response response = new; | |
var payload = req.getPayloadAsString(); | |
io:println("payload extratecd: " + <string>payload); | |
response.statusCode = 200; | |
response.setContentType("text/plain; charset=utf-8"); | |
response.setPayload(untaint <string>payload); | |
var result = caller->respond(response); | |
if (result is error) { | |
log:printError("error sending response", err = result); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import ballerina/http; | |
import ballerina/log; | |
import ballerina/io; | |
// Data is formatted as: key1=value1;key2=value2 | |
type Logger record { | |
string IMEI = ""; | |
string SIMN =""; | |
string DID =""; | |
string TIME =""; | |
// string auth =""; | |
// string agroup =""; | |
// string PID =""; | |
// string CHAN =""; | |
// string PTYPE =""; | |
string T0 =""; | |
string TS0 =""; | |
string T1 =""; | |
string T2 =""; | |
string TS2 =""; | |
string T3 =""; | |
string TS3 =""; | |
// string SIGNAL =""; | |
}; | |
listener http:Listener endpoint = new (3000); | |
@http:ServiceConfig{ | |
basePath: "/api" | |
} | |
service Datalogger on endpoint{ | |
@http:ResourceConfig{ | |
path: "/logger", | |
methods: ["POST"] | |
} | |
resource function GetTesxtPayload(http:Caller caller, http:Request req){ | |
var payload = req.getTextPayload(); | |
if (payload is string) { | |
Logger|error logg = toRecord(payload); | |
if (logg is Logger) { | |
// Now the fields can be accessed as logg.field | |
string IMEI = logg.IMEI; | |
string SIMN = logg.SIMN; | |
string DID = logg.DID; | |
string TIME = logg.TIME; | |
//string auth = logg.auth; | |
string T0 = logg.T0; | |
string TS0 = logg.TS0; | |
string T1 = logg.T1; | |
string T2 = logg.T2; | |
string TS2 = logg.TS2; | |
string T3 = logg.T3; | |
string TS3 = logg.TS3; | |
//string SIGNAL = logg.SIGNAL; | |
http:Response response = new; | |
response.setContentType("application/json; charset=utf-8"); | |
response.setJsonPayload("IMEI " + untaint logg.IMEI); | |
io:println("IMEI: " + untaint logg.IMEI, " SIMN: " + untaint logg.DID, " T0: " + untaint logg.T0, " T1: " + untaint logg.T1, " T2: " + untaint logg.T2, " TS2: " + untaint logg.TS2, " T3: " + untaint logg.T3, " TS3 " + untaint logg.TS3); | |
var result = caller->respond("Payload received " + untaint logg.IMEI); | |
return; | |
} else { | |
var result = caller->respond(get400Response(logg.reason())); | |
return; | |
} | |
} else { | |
var result = caller->respond(get400Response(payload.reason())); | |
return; | |
} | |
} | |
} | |
function toRecord(string data) returns Logger|error { | |
Logger logg = {}; | |
string[] fields = data.split("&"); | |
foreach var field in fields { | |
string[] keyVal = field.split("="); | |
match keyVal[0] { | |
"IMEI" => logg.IMEI = keyVal[1]; | |
"SIMN" => logg.SIMN = keyVal[1]; | |
"DID" => logg.DID = keyVal[1]; | |
"TIME" => logg.TIME = keyVal[1]; | |
"T0" => logg.T0 = keyVal[1]; | |
"TS0" => logg.TS0 = keyVal[1]; | |
"T1" => logg.T1 = keyVal[1]; | |
"TS1" => logg.TS1 = keyVal[1]; | |
"T2" => logg.T2 = keyVal[1]; | |
"TS2" => logg.TS2 = keyVal[1]; | |
"T3" => logg.T3 = keyVal[1]; | |
"TS3" => logg.TS3 = keyVal[1]; | |
var invalidField => { | |
error e = error("Invalid field: " + invalidField); | |
return e; | |
} | |
} | |
} | |
return logg; | |
} | |
function get400Response(string msg) returns http:Response { | |
http:Response err400 = new; | |
err400.statusCode = 400; | |
err400.setPayload(untaint msg); | |
return err400; | |
} |
Author
JoseCage
commented
Apr 16, 2019
•
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment