Module: SensorStream
- Defined in:
- lib/SensorStream.rb
Overview
require ‘Zlib’
Defined Under Namespace
Class Method Summary collapse
- .get_device_by_id(id, key = "") ⇒ Object
-
.get_devices ⇒ Object
Reads a list of devices from the server.
-
.get_devices_by_name(name) ⇒ Object
Retreives a device given a device name.
- .host_name ⇒ Object
- .host_name=(new_name) ⇒ Object
-
.make_http_get(request = "", header_dict = {}, timeout = 600, debug = false) ⇒ Object
Internally used to wrap HTTP gets with the required headers.
-
.make_http_post(request = "", body_dict = {}, header_dict = {}, timeout = 600, debug = false) ⇒ Object
Internally used to wrap HTTP puts with the requires headers.
- .port_number ⇒ Object
- .port_number=(new_port) ⇒ Object
-
.set_default_server ⇒ Object
Allows the SensorStream server to be overridden.
Class Method Details
.get_device_by_id(id, key = "") ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# 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 ⇒ Object
Reads a list of devices from the server
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# 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) ⇒ Object
Retreives a device given a device name
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# 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 ⇒ Object
17 18 19 |
# File 'lib/SensorStream.rb', line 17 def self.host_name return @host_name end |
.host_name=(new_name) ⇒ Object
13 14 15 |
# 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) ⇒ Object
Internally used to wrap HTTP gets with the required headers
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# 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) ⇒ Object
Internally used to wrap HTTP puts with the requires headers
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# 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 ⇒ Object
25 26 27 |
# File 'lib/SensorStream.rb', line 25 def self.port_number return @port_number end |
.port_number=(new_port) ⇒ Object
21 22 23 |
# File 'lib/SensorStream.rb', line 21 def self.port_number=(new_port) @port_number = new_port end |
.set_default_server ⇒ Object
Allows the SensorStream server to be overridden
30 31 32 33 |
# File 'lib/SensorStream.rb', line 30 def self.set_default_server @host_name = "dodeca.coas.oregonstate.edu" @port_number = 443 end |