module Fluent::Plugin::EverySenseProxy
Public Instance Methods
create_session()
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 54 def create_session return @session_key if valid_session? @session_req ||= create_session_request session_res = @https.request(@session_req) return nil if !error_handler(session_res, 'create_session failed.') @session_key = JSON.parse(session_res.body)["session_key"] @session_expires_in = Time.now + 60 * 60 * 12 # assuming time out in a half day end
create_session_request()
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 47 def create_session_request session_req = Net::HTTP::Post.new(@uri + '/session') session_req.body = {login_name: @login_name, password: @password}.to_json session_req.content_type = 'application/json' session_req end
delete_session()
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 67 def delete_session return if !valid_session? del_session_res = @https.request(delete_session_request) error_handler(del_session_res, 'delete_session failed.') end
delete_session_request()
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 63 def delete_session_request Net::HTTP::Delete.new(@uri + "/session/#{@session_key}") end
error_handler(response, message)
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 26 def error_handler(response, message) if response.code != "200" log.error error: message log.debug "code: #{response.code}" log.debug "message: #{response.message}" log.debug "body: #{response.body}" return false end return true end
get_messages()
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 126 def get_messages if !valid_session? return nil if create_session.nil? log.debug "session #{@session_key} created." end get_messages_res = @https.get(get_messages_request) return nil if !error_handler(get_messages_res,"get_messages failed.") log.debug "get_message: #{get_messages_res.body}" get_messages_res.body end
get_messages_params()
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 96 def get_messages_params params = { session_key: @session_key, from: @from, to: @to, limit: @limit } if !@device_id.nil? return params elsif !@recipe_id.nil? return params.merge({keep: @keep, inline: @inline, format: @format}) else raise ConfigError, "device_id or recipe_id must be specified." end end
get_messages_request()
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 112 def get_messages_request from = Time.parse(@from) to = from + @interval to = Time.now if to > Time.now @to = to.iso8601 get_messages_req = @uri + target_path get_messages_req.query = URI.encode_www_form(get_messages_params) log.debug "#{get_messages_req}?#{get_messages_req.query}" # currently time window is automatically updated #@from = Time.now.iso8601 @from = @to get_messages_req end
put_message(message)
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 80 def put_message(message) log.debug "put_message: #{message}" put_message_res = @https.request(put_message_request(message)) error_handler(put_message_res, "put_message: '#{message}' failed.") end
put_message_request(message)
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 73 def put_message_request(message) put_message_req = Net::HTTP::Post.new(@uri + "/device_data/#{@device_id}") put_message_req.body = message put_message_req.content_type = "application/#{@format}" put_message_req end
shutdown_proxy()
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 20 def shutdown_proxy log.debug "shutdown_proxy #{@session_key}" delete_session @https.finish() if @https.active? end
start_proxy()
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 11 def start_proxy log.debug "start everysense proxy #{@url}" @uri = URI.parse(@url) @https = Net::HTTP.new(@uri.host, @uri.port) @https.use_ssl = (@uri.scheme == 'https') @session_key = nil end
target_path()
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 86 def target_path if !@device_id.nil? return "/device_data/#{@device_id}" elsif !@recipe_id.nil? return "/recipe_data/#{@recipe_id}.#{@format}" else raise Fluent::ConfigError, "device_id or recipe_id must be specified." end end
valid_session?()
click to toggle source
# File lib/fluent/plugin/everysense_proxy.rb, line 37 def valid_session? # TODO validate @session_key using EverySense API if !@session_key.nil? if Time.now < @session_expires_in return true end end return false end