class Wialon::Sdk
Attributes
base_url[RW]
default_params[RW]
host[RW]
is_development[RW]
session_id[RW]
user_id[RW]
Public Class Methods
new(is_development = false, scheme = 'https', host = 'hst-api.wialon.com', port = 0, session_id = '', extra_params = {})
click to toggle source
# File lib/wialon.rb, line 10 def initialize(is_development = false, scheme = 'https', host = 'hst-api.wialon.com', port = 0, session_id = '', extra_params = {}) self.is_development = is_development self.session_id = session_id self.host = host self.default_params = {} self.default_params.replace(extra_params) if port < 0 raise SdkException.new('Invalid port, must be greater than 0') elsif port.to_i > 0 self.base_url = "#{scheme}://#{host}:#{port}" else self.base_url = "#{scheme}://#{host}" end self.base_url += '/wialon/ajax.html?' self.user_id = 0 end
Public Instance Methods
get_session_id()
click to toggle source
# File lib/wialon.rb, line 81 def get_session_id return self.session_id end
login(token)
click to toggle source
# File lib/wialon.rb, line 63 def login(token) result = self.token_login({ token: token }) self.user_id = result['user']['id'] self.session_id = result['eid'] return result end
logout()
click to toggle source
# File lib/wialon.rb, line 72 def logout self.core_logout return nil end
reverse_geocoding(latitude, longitude, flags=1255211008)
click to toggle source
# File lib/wialon.rb, line 30 def reverse_geocoding(latitude, longitude, flags=1255211008) coordinates = JSON.generates({latitude: latitude, longitude: longitude}) url = "https://geocode-maps.wialon.com/#{self.host}/gis_geocode?coords=[#{coordinates}]&flags=#{flags}&uid=#{self.user_id}" if self.is_development self.debug_printer("Method: Reverse geocoding service\nURL: #{url}") end begin uri = URI.parse(url) rescue Exception => e raise SdkException.new("Internal error: #{e}") end request = Net::HTTP::Post.new(uri) begin response = Net::HTTP.start(uri.hostname, uri.port, { use_ssl: uri.scheme == 'https' }) do |http| http.request(request) end rescue Exception => e raise SdkException.new("Internal error: #{e}") end begin response = JSON.parse(response.body) rescue Exception => e raise SdkException.new("Internal error: #{e}") end return response[0] end
set_session_id(session_id)
click to toggle source
# File lib/wialon.rb, line 77 def set_session_id(session_id) self.session_id = session_id end
Protected Instance Methods
call(method_name, args)
click to toggle source
# File lib/wialon.rb, line 86 def call(method_name, args) svc = '' if method_name.to_s == 'unit_group_update_units' svc = 'unit_group/update_units' else svc = method_name.to_s.sub('_', '/') end begin parameters = JSON.generate(args) rescue Exception => e raise SdkException.new("Internal error: #{e}") end parameters = { svc: svc, params: parameters, sid: self.session_id } url = "#{self.base_url}svc=#{parameters[:svc]}¶ms=#{parameters[:params]}&sid=#{parameters[:sid]}" if self.is_development self.debug_printer("Method: #{svc}\nParameters: #{parameters}\nURL: #{url}") end begin uri = URI.parse(url) rescue Exception => e raise SdkException.new("Internal error: #{e}") end request = Net::HTTP::Post.new(uri) request.set_form_data( 'svc' => parameters[:svc], 'params' => parameters[:params], 'sid' => parameters[:sid] ) begin response = Net::HTTP.start(uri.hostname, uri.port, { use_ssl: uri.scheme == 'https' }) do |http| http.request(request) end rescue Exception => e raise SdkException.new("Internal error: #{e}") end begin response = JSON.parse(response.body) rescue Exception => e raise SdkException.new("Internal error: #{e}") end if response.class == Hash if !response['error'].nil? if response['error'] != 0 raise Wialon::Error.new(response['error'].to_i, (response['reason'].nil? ? '' : response['reason'])) end end end return response end
debug_printer(message)
click to toggle source
# File lib/wialon.rb, line 149 def debug_printer(message) puts "*******" * 10 puts "#{message}" puts "*******" * 10 end
method_missing(method_name, *args)
click to toggle source
# File lib/wialon.rb, line 155 def method_missing(method_name, *args) return self.call(method_name, args.count == 0 ? {} : args[0]) end