wialon 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/wialon.rb +131 -0
  3. metadata +44 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 37bef448770643db031153bab5ad33b5ad30dd25
4
+ data.tar.gz: c0a2ab27ecf772c15a91c2e49fb94542d0469cba
5
+ SHA512:
6
+ metadata.gz: 5a951cf4cb4e809f4a47e0b4fc46eee9f4a798b0a72639871c8ecde142518540a08a5dc476ab45b703987ca8f23d916404d565f0c4ac6ed50c0041a44b87b101
7
+ data.tar.gz: 94eb30173c3b297ee419b78ff920ec75d8b95acf1c956b04cdfda5e4f18de296aac65bfbde05e620b8ea9bf77af4dca8a916e6505cbecd0cf3259cc2878c7c33
@@ -0,0 +1,131 @@
1
+ class Wialon
2
+ require 'json'
3
+ require 'net/http'
4
+ require 'uri'
5
+
6
+ # Variables
7
+ attr_accessor :sid, :base_api_url, :default_params, :uid, :host, :scheme
8
+
9
+ # Class constructor
10
+ def initialize(scheme = 'https', host = 'hst-api.wialon.com', port = '', sid = '', extra_params = {})
11
+ self.sid = ''
12
+ self.scheme = scheme
13
+ self.default_params = {}
14
+ self.default_params.replace(extra_params)
15
+ self.host = host
16
+ self.base_api_url = "#{scheme}://#{host}#{((port.length > 0) ? ":" + port.to_s : "")}/wialon/ajax.html?"
17
+ self.uid = ''
18
+ end
19
+
20
+ def get_address(lat, lon)
21
+ uri = URI.parse('https://geocode-maps.wialon.com/' + self.host + '/gis_geocode?coords=[' + JSON.generate({"lon": lon,"lat": lat}) + ']&flags=1255211008&uid=' + self.uid.to_s)
22
+ request = Net::HTTP::Post.new(uri)
23
+ req_options = { use_ssl: uri.scheme == self.scheme }
24
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
25
+ http.request(request)
26
+ end
27
+ return JSON.parse(response.body)[0]
28
+ end
29
+
30
+ def get_coordinates(string)
31
+ string = string.split(" ").join(" ")
32
+ from = "ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž"
33
+ to = "AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz"
34
+ string = string.tr(from,to)
35
+
36
+ uri = URI.parse('https://search-maps.wialon.com/' + self.host + '/gis_searchintelli?phrase=' + string + '&count=1&indexFrom=0&uid=' + self.uid.to_s)
37
+ request = Net::HTTP::Post.new(uri)
38
+ req_options = { use_ssl: uri.scheme == self.scheme }
39
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
40
+ http.request(request)
41
+ end
42
+
43
+ return JSON.parse(response.body)
44
+ end
45
+
46
+ # RemoteAPI request performer
47
+ # action: RemoteAPI command name
48
+ # args: JSON string with request parameters
49
+ def call(action, args)
50
+ # Set local variable with base url
51
+ url = self.base_api_url
52
+
53
+ # Set params
54
+ params = {'svc': action.to_s.sub('_', '/'), 'params': JSON.generate(args), 'sid': self.sid}
55
+
56
+ # Replacing global params with local params
57
+ all_params = self.default_params.replace(params)
58
+
59
+ # Initializing string
60
+ str = ""
61
+ # Params each cycle with index
62
+ all_params.each do |slug, param|
63
+ # If string length is upper to 0, include "&" to include all params
64
+ if str.length > 0
65
+ str += "&"
66
+ end
67
+ str += slug.to_s + "=" + param
68
+ end
69
+
70
+ # Curl request
71
+ puts url + str
72
+ uri = URI.parse(url + str)
73
+
74
+ request = Net::HTTP::Post.new(uri)
75
+
76
+ req_options = { use_ssl: uri.scheme == self.scheme }
77
+
78
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
79
+ http.request(request)
80
+ end
81
+
82
+ response = JSON.parse(response.body)
83
+
84
+ return response
85
+ end
86
+
87
+ def login(token)
88
+ data = {token: token}
89
+ result = self.token_login(data)
90
+ if !result['eid'].nil?
91
+ self.sid = result['eid']
92
+ end
93
+
94
+ if !result['user']['id'].nil?
95
+ self.uid = result['user']['id']
96
+ end
97
+
98
+ puts "Here"
99
+ return result
100
+ end
101
+
102
+ def logout
103
+ result = self.core_logout()
104
+ if result.empty? && result['error'] == 0
105
+ self.sid = ""
106
+ end
107
+ return result
108
+ end
109
+
110
+ # Unknonwn methods handler
111
+ def method_missing(name, *args)
112
+ puts "#{name}"
113
+ return self.call(name, ((args.count === 0) ? '{}' : args[0]))
114
+ end
115
+
116
+ private
117
+ # SID setter
118
+ def set_sid(sid)
119
+ self.sid = sid
120
+ end
121
+
122
+ # SID getter
123
+ def get_sid
124
+ return self.sid
125
+ end
126
+
127
+ # Update extra parameters
128
+ def update_extra_params(params)
129
+ self.default_params.replace(params)
130
+ end
131
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wialon
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Kenny Mochizuki
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-12-13 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Wialon class for Wialon Remote API
14
+ email: kenny.mochiuki@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/wialon.rb
20
+ homepage: http://rubygems.org/gems/wialon-ruby
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.6.13
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Wialon Remote API Gem
44
+ test_files: []