module SensorStream
require 'Zlib'
Public Class Methods
get_device_by_id(id, key = "")
click to toggle source
# File lib/SensorStream.rb, line 120 def self.get_device_by_id(id, key = "") if key.empty? resp = make_http_get("/api/GetDevice/" + id, {}) else resp = make_http_get("/api/GetDevice/" + id + "?key=" + key, {}) end if (resp.code != "200") puts "Unable to get a response from SensorStream: " + resp.code return nil else json = JSON.parse(resp.body) device = SensorStream::Device.new(id, json["UserName"], json["DeviceName"], json["Description"]) if !key.empty? device.key = key end device.get_streams return device end return nil end
get_devices()
click to toggle source
Reads a list of devices from the server
# File lib/SensorStream.rb, line 79 def self.get_devices() resp = make_http_get("/device.ashx?getdevices="); if (resp.code != "200") return nil; else devices = []; if (resp.body.empty?) return nil end JSON.parse(resp.body).each { |device| devices << SensorStream::Device.new(device["DeviceID"], device["UserName"], device["DeviceName"], device["Description"]) } return devices; end end
get_devices_by_name(name)
click to toggle source
Retreives a device given a device name
# File lib/SensorStream.rb, line 101 def self.get_devices_by_name(name) resp = make_http_get("/api/GetDevices?Dev=" + name, {}) if (resp.code != "200") puts "Unable to get a response from SensorStream: " + resp.code return nil else retDevices = [] JSON.parse(resp.body).each { |device| retDevices << SensorStream::Device.new(device["DeviceID"], device["UserName"], device["DeviceName"], device["Description"]) } return retDevices end return nil end
host_name()
click to toggle source
# File lib/SensorStream.rb, line 17 def self.host_name return @host_name end
host_name=(new_name)
click to toggle source
# File lib/SensorStream.rb, line 13 def self.host_name=(new_name) @host_name = new_name end
make_http_get(request = "", header_dict = {}, timeout = 600, debug = false)
click to toggle source
Internally used to wrap HTTP gets with the required headers
# File lib/SensorStream.rb, line 59 def self.make_http_get(request = "", header_dict = {}, timeout = 600, debug = false) # Ensure that the hostname and port are set self.set_default_server unless !@host_name.nil? uri = URI::HTTPS.new('https', nil, @host_name, @port_number, nil, request, nil, nil, nil); if (debug) puts "GET from #{uri.to_s}" puts "Header: #{header_dict.to_s}" end http = Net::HTTP.new(@host_name, @port_number); http.read_timeout = timeout; # 10 minute timeout http.use_ssl = true retval = http.get(uri.request_uri, header_dict); return retval end
make_http_post(request = "", body_dict = {}, header_dict = {}, timeout = 600, debug = false)
click to toggle source
Internally used to wrap HTTP puts with the requires headers
# File lib/SensorStream.rb, line 36 def self.make_http_post(request = "", body_dict = {}, header_dict = {}, timeout = 600, debug = false) # Ensure that the hostname and port are set self.set_default_server unless !@host_name.nil? # Make sure that, at a minimum, the content type is set in the header header_dict["Content-Type"] = "application/json"; uri = URI::HTTPS.new('https', nil, @host_name, @port_number, nil, request, nil, nil, nil); if (debug) puts "POST to #{uri.to_s}" puts "Header: #{header_dict}" puts "Body: #{JSON.generate(body_dict)}" end http = Net::HTTP.new(@host_name, @port_number); http.read_timeout = timeout; # 10 minute default timeout http.use_ssl = true retval = http.post(uri.request_uri, JSON.generate(body_dict), header_dict); return retval end
port_number()
click to toggle source
# File lib/SensorStream.rb, line 25 def self.port_number return @port_number end
port_number=(new_port)
click to toggle source
# File lib/SensorStream.rb, line 21 def self.port_number=(new_port) @port_number = new_port end
set_default_server()
click to toggle source
Allows the SensorStream
server to be overridden
# File lib/SensorStream.rb, line 30 def self.set_default_server @host_name = "dodeca.coas.oregonstate.edu" @port_number = 443 end