wialon 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +5 -5
  2. data/lib/wialon.rb +75 -23
  3. data/lib/wialon_error.rb +39 -0
  4. metadata +10 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 37bef448770643db031153bab5ad33b5ad30dd25
4
- data.tar.gz: c0a2ab27ecf772c15a91c2e49fb94542d0469cba
2
+ SHA256:
3
+ metadata.gz: 4283353117672ce224554a65bdcd7ca86e93f887fb7fd1508d26a0e92334104f
4
+ data.tar.gz: 24d7d1123a83c6f18d526b27b24dfbfc66bb88bdf4aee5cf641c20f903b7b58d
5
5
  SHA512:
6
- metadata.gz: 5a951cf4cb4e809f4a47e0b4fc46eee9f4a798b0a72639871c8ecde142518540a08a5dc476ab45b703987ca8f23d916404d565f0c4ac6ed50c0041a44b87b101
7
- data.tar.gz: 94eb30173c3b297ee419b78ff920ec75d8b95acf1c956b04cdfda5e4f18de296aac65bfbde05e620b8ea9bf77af4dca8a916e6505cbecd0cf3259cc2878c7c33
6
+ metadata.gz: 981599957855829ec11183f33a1c5cb737000fc0ee7d7205b4c7812abf86a51698084b4cf457dd25f8290aa5fc25fb762a972655adb09b3c62b4436ee8925b25
7
+ data.tar.gz: e0f4242e244bf01b6e6ac4ba6d149548fcad2a7c776a662d50c1394065e4f16f19417ecea49e84323225502cff48c4d45d695ce89b890de80f0411d518ece235
data/lib/wialon.rb CHANGED
@@ -4,10 +4,11 @@ class Wialon
4
4
  require 'uri'
5
5
 
6
6
  # Variables
7
- attr_accessor :sid, :base_api_url, :default_params, :uid, :host, :scheme
7
+ attr_accessor :sid, :base_api_url, :default_params, :uid, :host, :scheme, :debug
8
8
 
9
9
  # Class constructor
10
- def initialize(scheme = 'https', host = 'hst-api.wialon.com', port = '', sid = '', extra_params = {})
10
+ def initialize(debug = false, scheme = 'https', host = 'hst-api.wialon.com', port = '', sid = '', extra_params = {})
11
+ self.debug = debug
11
12
  self.sid = ''
12
13
  self.scheme = scheme
13
14
  self.default_params = {}
@@ -17,8 +18,11 @@ class Wialon
17
18
  self.uid = ''
18
19
  end
19
20
 
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)
21
+ def get_address(lat, lon, flags = 1255211008)
22
+ if self.debug
23
+ puts "URL: #{'https://geocode-maps.wialon.com/' + self.host + '/gis_geocode?coords=[' + JSON.generate({"lon": lon,"lat": lat}) + ']&flags=' + flags.to_s + '&uid=' + self.uid.to_s}"
24
+ end
25
+ uri = URI.parse('https://geocode-maps.wialon.com/' + self.host + '/gis_geocode?coords=[' + JSON.generate({"lon": lon,"lat": lat}) + ']&flags=' + flags.to_s + '&uid=' + self.uid.to_s)
22
26
  request = Net::HTTP::Post.new(uri)
23
27
  req_options = { use_ssl: uri.scheme == self.scheme }
24
28
  response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
@@ -43,6 +47,46 @@ class Wialon
43
47
  return JSON.parse(response.body)
44
48
  end
45
49
 
50
+ def call_without_svc_parse(action, args)
51
+ # Set local variable with base url
52
+ url = self.base_api_url
53
+
54
+ # Set params
55
+ params = {'svc': action.to_s, 'params': JSON.generate(args), 'sid': self.sid}
56
+
57
+ # Replacing global params with local params
58
+ all_params = self.default_params.replace(params)
59
+
60
+ if self.debug
61
+ puts "========="
62
+ puts "Query URL: #{url} - Params: #{all_params}"
63
+ puts "========="
64
+ puts "#{url}&svc=#{action.to_s}&params=#{JSON.generate(args)}&sid=#{self.sid}"
65
+ puts "========="
66
+ end
67
+
68
+ uri = URI.parse(url)
69
+
70
+ # Curl request
71
+ request = Net::HTTP::Post.new(uri)
72
+
73
+ request.set_form_data(
74
+ "svc" => action.to_s,
75
+ "params" => JSON.generate(args),
76
+ "sid" => self.sid
77
+ )
78
+
79
+ req_options = { use_ssl: uri.scheme == self.scheme }
80
+
81
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
82
+ http.request(request)
83
+ end
84
+
85
+ response = JSON.parse(response.body)
86
+
87
+ return response
88
+ end
89
+
46
90
  # RemoteAPI request performer
47
91
  # action: RemoteAPI command name
48
92
  # args: JSON string with request parameters
@@ -56,23 +100,25 @@ class Wialon
56
100
  # Replacing global params with local params
57
101
  all_params = self.default_params.replace(params)
58
102
 
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
103
+ if self.debug
104
+ puts "========="
105
+ puts "Query URL: #{url} - Params: #{all_params}"
106
+ puts "========="
107
+ puts "#{url}&svc=#{action.to_s.sub('_', '/')}&params=#{JSON.generate(args)}&sid=#{self.sid}"
108
+ puts "========="
68
109
  end
69
110
 
70
- # Curl request
71
- puts url + str
72
- uri = URI.parse(url + str)
111
+ uri = URI.parse(url)
73
112
 
113
+ # Curl request
74
114
  request = Net::HTTP::Post.new(uri)
75
115
 
116
+ request.set_form_data(
117
+ "svc" => action.to_s.sub('_', '/'),
118
+ "params" => JSON.generate(args),
119
+ "sid" => self.sid
120
+ )
121
+
76
122
  req_options = { use_ssl: uri.scheme == self.scheme }
77
123
 
78
124
  response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
@@ -85,17 +131,20 @@ class Wialon
85
131
  end
86
132
 
87
133
  def login(token)
88
- data = {token: token}
89
- result = self.token_login(data)
134
+ result = self.token_login({token: token})
90
135
  if !result['eid'].nil?
91
136
  self.sid = result['eid']
92
137
  end
93
138
 
94
- if !result['user']['id'].nil?
95
- self.uid = result['user']['id']
139
+ begin
140
+ if !result['user']['id'].nil?
141
+ self.uid = result['user']['id']
142
+ end
143
+ rescue Exception => e
144
+ if self.debug
145
+ puts "Error in login: #{e}"
146
+ end
96
147
  end
97
-
98
- puts "Here"
99
148
  return result
100
149
  end
101
150
 
@@ -109,7 +158,10 @@ class Wialon
109
158
 
110
159
  # Unknonwn methods handler
111
160
  def method_missing(name, *args)
112
- puts "#{name}"
161
+ if self.debug
162
+ puts "Query method: #{name}"
163
+ end
164
+
113
165
  return self.call(name, ((args.count === 0) ? '{}' : args[0]))
114
166
  end
115
167
 
@@ -0,0 +1,39 @@
1
+ class WialonError
2
+ attr_accessor :error
3
+ def initialize(error)
4
+ self.error = error
5
+ end
6
+
7
+ def message
8
+ @errors = {
9
+ '1' => "Invalid session",
10
+ '2' => "Invalid service name",
11
+ '3' => "Invalid result",
12
+ '4' => "Invalid input",
13
+ '5' => "Error performing request",
14
+ '6' => "Unknown error",
15
+ '7' => "Access denied",
16
+ '8' => "Invalid user name or password",
17
+ '9' => "Authorization server is unavailable",
18
+ '10' => "Reached limit of concurrent requests",
19
+ '11' => "Password reset error",
20
+ '14' => "Billing error",
21
+ '1001' => "No messages for selected interval",
22
+ '1002' => "Item with such unique property already exists or Item cannot be created according to billing restrictions",
23
+ '1003' => "Only one request is allowed at the moment",
24
+ '1004' => "Limit of messages has been exceeded",
25
+ '1005' => "Execution time has exceeded the limit",
26
+ '1006' => "Exceeding the limit of attempts to enter a two-factor authorization code",
27
+ '1011' => "Your IP has changed or session has expired",
28
+ '2014' => "Selected user is a creator for some system objects, thus this user cannot be bound to a new account",
29
+ '2015' => "Sensor deleting is forbidden because of using in another sensor or advanced properties of the unit"
30
+ }
31
+
32
+ response = {
33
+ original_message: self.error,
34
+ message: @errors[self.error['error'].to_s]
35
+ }
36
+
37
+ return response
38
+ end
39
+ end
metadata CHANGED
@@ -1,25 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wialon
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenny Mochizuki
8
+ - Golden M
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2017-12-13 00:00:00.000000000 Z
12
+ date: 2018-08-26 00:00:00.000000000 Z
12
13
  dependencies: []
13
- description: Wialon class for Wialon Remote API
14
- email: kenny.mochiuki@gmail.com
14
+ description: Wialon gem wrapper for Remote API
15
+ email: support@goldenmcorp.com
15
16
  executables: []
16
17
  extensions: []
17
18
  extra_rdoc_files: []
18
19
  files:
19
20
  - lib/wialon.rb
20
- homepage: http://rubygems.org/gems/wialon-ruby
21
+ - lib/wialon_error.rb
22
+ homepage: http://rubygems.org/gems/wialon
21
23
  licenses:
22
- - MIT
24
+ - CC-BY-NC-4.0
23
25
  metadata: {}
24
26
  post_install_message:
25
27
  rdoc_options: []
@@ -37,8 +39,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
37
39
  version: '0'
38
40
  requirements: []
39
41
  rubyforge_project:
40
- rubygems_version: 2.6.13
42
+ rubygems_version: 2.7.7
41
43
  signing_key:
42
44
  specification_version: 4
43
- summary: Wialon Remote API Gem
45
+ summary: Wialon gem wrapper for Remote API
44
46
  test_files: []