Sha256: 3b9f3ce04b986c65a21f9eaceed27e605f18fb0abdd8df690b0d2451445b610b
Contents?: true
Size: 1.3 KB
Versions: 5
Compression:
Stored size: 1.3 KB
Contents
require_relative 'application_controller' module DeviceTracker # :nodoc: class HeartbeatController < ApplicationController post '/' do begin heartbeat = JSON.parse(request.body.read) rescue JSON::ParserError halt 412, { error: true, message: 'Error parsing payload, check and try again.' }.to_json end # {"heartbeat": {"device_id": "BBCFM003", # "longitude": 53.470096, "latitude": -2.281457}} if valid_heartbeat?(heartbeat) heartbeat = heartbeat['heartbeat'] unid = heartbeat['device_id'].upcase if Device.exists?(unid: unid) device = Device.find_by_unid(unid) Heartbeat.create(longitude: heartbeat['longitude'], latitude: heartbeat['latitude'], device_id: device.id) halt 201, { error: false, message: "Heartbeat for device: #{unid} received." }.to_json else halt 404, { error: true, message: "The device with id: #{unid} doesn't exist." }.to_json end else halt 412, { error: true, message: 'Manformed heartbeat received, so will not be processed.' }.to_json end end end end
Version data entries
5 entries across 5 versions & 1 rubygems