ax-track 0.1.15 → 0.2
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/ax-track.rb +1 -0
- data/lib/ax_track/object.rb +9 -0
- data/lib/ax_track/objects/asset.rb +0 -10
- data/lib/ax_track/objects/tracker/gps_position.rb +15 -0
- data/lib/ax_track/objects/tracker.old +42 -0
- data/lib/ax_track/objects/tracker.rb +19 -36
- data/lib/ax_track/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6df6669e5c15f39ac72709670832be91b8b2aa935ffa593816a18dbe9958eb3
|
4
|
+
data.tar.gz: a24adc8735234811a9d89a6bebe76d0fac0be474b64641e825e9af67f535305b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59dfcb20ad49c457b93e4c4705164703ce31154a924f7a6a654aae15a6015d94de8ad96b6ec75498b17a7ca5f596a3c53eb91ff034a7be3e497898e598776984
|
7
|
+
data.tar.gz: c2115e2ae5e4e1b138df9889c33ff903d966b4208e8e39b75196f77284819a05d423180d1b49a42b440d2a40a3776028bd061d864223d86e474790c2d98b0502
|
data/Gemfile.lock
CHANGED
data/lib/ax-track.rb
CHANGED
@@ -11,6 +11,7 @@ module AxTrack
|
|
11
11
|
|
12
12
|
autoload :Tracker, 'ax_track/objects/tracker'
|
13
13
|
autoload :Asset, 'ax_track/objects/asset'
|
14
|
+
autoload :GPSPosition, 'ax_track/objects/tracker/gps_position'
|
14
15
|
|
15
16
|
autoload :TrackerResource, 'ax_track/resources/tracker_resource'
|
16
17
|
autoload :AssetResource, 'ax_track/resources/asset_resource'
|
data/lib/ax_track/object.rb
CHANGED
@@ -3,6 +3,15 @@ require 'ostruct'
|
|
3
3
|
module AxTrack
|
4
4
|
class Object
|
5
5
|
|
6
|
+
def initialize(json_response)
|
7
|
+
# for each key create an own instance variable with a getter
|
8
|
+
json_response.each do |key, value|
|
9
|
+
instance_variable_set "@#{key}", value
|
10
|
+
end
|
11
|
+
|
12
|
+
create_getters
|
13
|
+
end
|
14
|
+
|
6
15
|
# pass in an array for getters which should be generated.
|
7
16
|
# if nothing is passed in, it will create an instance variable for all instance variables.
|
8
17
|
def create_getters(required_getter_methods = instance_variables.map { |attr_name| attr_name[1..-1 ]})
|
@@ -1,14 +1,4 @@
|
|
1
1
|
module AxTrack
|
2
2
|
class Asset < Object
|
3
|
-
|
4
|
-
def initialize(json_response)
|
5
|
-
# for each key create an own instance variable with a getter
|
6
|
-
json_response.each do |key, value|
|
7
|
-
instance_variable_set "@#{key}", value
|
8
|
-
end
|
9
|
-
|
10
|
-
create_getters
|
11
|
-
end
|
12
3
|
end
|
13
|
-
|
14
4
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module AxTrack
|
2
|
+
class Tracker
|
3
|
+
class GPSPosition < Object
|
4
|
+
|
5
|
+
def initialize(json_response)
|
6
|
+
@lat = json_response['lat']
|
7
|
+
@lng = json_response['lng']
|
8
|
+
@timestamp = DateTime.parse(json_response['timestamp'], false) if json_response['timestamp']
|
9
|
+
|
10
|
+
create_getters
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module AxTrack
|
2
|
+
class Tracker < Object
|
3
|
+
|
4
|
+
def initialize(json_response)
|
5
|
+
@tracker_id = json_response['id']
|
6
|
+
@asset_id = json_response['asset']
|
7
|
+
@identifier = json_response['identifier']
|
8
|
+
@url = json_response['url']
|
9
|
+
@active = json_response['active']
|
10
|
+
@model = json_response['model']
|
11
|
+
@asset_details = Asset.new json_response['asset_details'] if json_response['asset_details']
|
12
|
+
@name = json_response.dig('asset_details', 'name')
|
13
|
+
@last_message_timestamp = DateTime.parse(json_response['last_message_timestamp'], false) if json_response['last_message_timestamp']
|
14
|
+
@url = json_response['url']
|
15
|
+
@user_url = website_url
|
16
|
+
@last_gps_position = GPSPosition.new(json_response['last_gps_measurement'] || json_response['asset_details'])
|
17
|
+
|
18
|
+
@battery = json_response.dig('asset_details', 'sensor_data', 'battery', 'value')
|
19
|
+
sensor_data = json_response.dig('asset_details', 'sensor_data')
|
20
|
+
|
21
|
+
@sensor_data = sensor_data
|
22
|
+
|
23
|
+
@network = json_response['network']
|
24
|
+
|
25
|
+
create_getters
|
26
|
+
end
|
27
|
+
|
28
|
+
def available_sensor_data
|
29
|
+
# returns a hash with available senson data
|
30
|
+
sensor_data_temp = self.sensor_data.keys
|
31
|
+
# if no timestamp is available in the GPSPosition, then there wasn't a last_gps_measurement returned in the json
|
32
|
+
# hence the sensor doesn't contain a GPS module.
|
33
|
+
sensor_data_temp = sensor_data_temp.unshift('gps') if self.last_gps_position.respond_to? :timestamp
|
34
|
+
sensor_data_temp
|
35
|
+
end
|
36
|
+
|
37
|
+
def website_url
|
38
|
+
"https://app.ax-track.ch/#/map/assets/#{@tracker_id}"
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
@@ -1,28 +1,29 @@
|
|
1
1
|
module AxTrack
|
2
2
|
class Tracker < Object
|
3
3
|
|
4
|
-
def
|
5
|
-
@
|
6
|
-
@
|
7
|
-
|
8
|
-
@url = json_response['url']
|
9
|
-
@active = json_response['active']
|
10
|
-
@model = json_response['model']
|
11
|
-
@asset_details = Asset.new json_response['asset_details'] if json_response['asset_details']
|
12
|
-
@name = json_response.dig('asset_details', 'name')
|
13
|
-
@last_message_timestamp = DateTime.parse(json_response['last_message_timestamp'], false) if json_response['last_message_timestamp']
|
14
|
-
@url = json_response['url']
|
15
|
-
@user_url = website_url
|
16
|
-
@last_gps_position = GPSPosition.new(json_response['last_gps_measurement'] || json_response['asset_details'])
|
4
|
+
def asset_details
|
5
|
+
@asset_details = Asset.new @asset_details unless @asset_details.is_a? Asset
|
6
|
+
@asset_details
|
7
|
+
end
|
17
8
|
|
18
|
-
|
19
|
-
|
9
|
+
def name
|
10
|
+
@name = @asset_details['name']
|
11
|
+
end
|
20
12
|
|
21
|
-
|
13
|
+
def last_message_timestamp
|
14
|
+
DateTime.parse(@last_message_timestamp, false) if @last_message_timestamp
|
15
|
+
end
|
16
|
+
|
17
|
+
def last_gps_position
|
18
|
+
GPSPosition.new(@last_gps_measurement || { lat: asset_details.lat, lng: asset_details.lng } )
|
19
|
+
end
|
22
20
|
|
23
|
-
|
21
|
+
def battery
|
22
|
+
asset_details&.sensor_data.dig('battery', 'value')
|
23
|
+
end
|
24
24
|
|
25
|
-
|
25
|
+
def website_url
|
26
|
+
"https://app.ax-track.ch/#/map/assets/#{@tracker_id}"
|
26
27
|
end
|
27
28
|
|
28
29
|
def available_sensor_data
|
@@ -33,23 +34,5 @@ module AxTrack
|
|
33
34
|
sensor_data_temp = sensor_data_temp.unshift('gps') if self.last_gps_position.respond_to? :timestamp
|
34
35
|
sensor_data_temp
|
35
36
|
end
|
36
|
-
|
37
|
-
def website_url
|
38
|
-
"https://app.ax-track.ch/#/map/assets/#{@tracker_id}"
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
|
-
class GPSPosition < Object
|
43
|
-
|
44
|
-
def initialize(json_response)
|
45
|
-
@lat = json_response['lat']
|
46
|
-
@lng = json_response['lng']
|
47
|
-
@timestamp = DateTime.parse(json_response['timestamp'], false) if json_response['timestamp']
|
48
|
-
|
49
|
-
create_getters
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
37
|
end
|
55
38
|
end
|
data/lib/ax_track/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ax-track
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Philipp Baumann
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-10-
|
11
|
+
date: 2021-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -63,7 +63,9 @@ files:
|
|
63
63
|
- lib/ax_track/error.rb
|
64
64
|
- lib/ax_track/object.rb
|
65
65
|
- lib/ax_track/objects/asset.rb
|
66
|
+
- lib/ax_track/objects/tracker.old
|
66
67
|
- lib/ax_track/objects/tracker.rb
|
68
|
+
- lib/ax_track/objects/tracker/gps_position.rb
|
67
69
|
- lib/ax_track/resource.rb
|
68
70
|
- lib/ax_track/resources/asset_resource.rb
|
69
71
|
- lib/ax_track/resources/tracker_resource.rb
|