require 'json'
require 'base64'
# Let's imagine that your web server received a POST request with this body:
request_body =
"[
{
\"meta\": {
\"account\": \"AccountExample\",
\"event\": \"track\"
},
\"payload\": {
\"id\": 342656641079967767,
\"id_str\": \"342656641079967767\",
\"asset\": \"359551XXXXX6317\",
\"recorded_at\": \"2012-08-03T14:25:25Z\",
\"received_at\": \"2012-08-03T14:26:28Z\",
\"loc\": [
2.36687,
48.78354
],
\"fields\": {
\"GPS_SPEED\": {
\"b64_value\": \"AAAAKg==\"
}
}
}
}
]"
def deserialize_json(json)
return JSON.parse(json)
end
# Decode an integer field provided in base64
def decode_b64_integer(b64_integer)
return Base64.decode64(b64_integer).unpack('l>').first; # Handles bitsign conversion.
end
def extract_gps_speed(event)
for field, data in event['payload']['fields']
if field == 'GPS_SPEED'
b64_value = data['b64_value']
decoded_value = decode_b64_integer(b64_value)
puts "Decoded value: #{decoded_value}"
km_h = decoded_value.to_f / 1000 * 1.852
puts "Speed: #{km_h} / h"
end
end
end
events = deserialize_json(request_body)
for event in events do
if event['meta']['event'] == 'track'
extract_gps_speed(event)
end
end
require 'json'
require 'base64'
# Let's imagine that your web server received a POST request with this body:
request_body =
"[
{
\"meta\": {
\"account\": \"AccountExample\",
\"event\": \"track\"
},
\"payload\": {
\"id\": 342656641079967767,
\"id_str\": \"342656641079967767",
\"asset\": \"359551XXXXX6317\",
\"recorded_at\": \"2012-08-03T14:25:25Z\",
\"received_at\": \"2012-08-03T14:26:28Z\",
\"loc\": [
2.36687,
48.78354
],
\"fields\": {
\"GPS_SPEED\": {
\"b64_value\": \"AAAAKg==\"
}
}
}
}
]"
events = JSON.parse(request_body)
events.each do |event|
next if event['meta']['event'] != 'track'
event['payload']['fields'].each do |field, data|
if field == 'GPS_SPEED'
b64_value = data['b64_value']
decoded_value = Base64.decode64(b64_value).unpack('l>').first.to_i(2)
puts "Decoded value: #{decoded_value}"
km_h = decoded_value.to_f / 1000 * 1.852
puts "Speed: #{km_h} / h"
end
end
end