ax-track 0.1.15 → 0.2.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2435c9350d10dfb406b2c3f0c1a4db35de9029465e7b31622407a0a580722d4
4
- data.tar.gz: 803333823277c76dd4532382c409d5c4dbe5b1ad10070626005da7ff9f3c0552
3
+ metadata.gz: bd2f0e29c25c63a3d0ba8fa8ebfd51b608737ef0031250fbc94980065e11c122
4
+ data.tar.gz: e43566965134307c34a3e1c9821ef3d7ab55b62758a81cbfabb42be5d9a59485
5
5
  SHA512:
6
- metadata.gz: b194b85b47d4eea1f300ef5a2d579f3029abce9bfc03920c859c2d1e25769859e5a608d150847fdb276a4142186b19730bbcd279865197b7c6356b2ec4b0c5ca
7
- data.tar.gz: 5ebdfac60f867abc3a6dd92f4584c22411acc1eed1427ccd26b15d3727f7bae53635e8c406c9f39589f3a8a1638fa7d996ba3afbc777a2f3f07af2ec69120b0d
6
+ metadata.gz: 8dc872bcee3f20330251703d696919dbf69b77705b85bcd9ccb4a7291fc7fbf804c9605ba58c21758cddc685122eb29dd8076a2c971657ea18cb0643d2b8524b
7
+ data.tar.gz: 026c286cfc104b610b2f49a6d46f360564611bdd64092ce991f83c9c35cf16c3c7a048c4c4a4fc179a5016288f7471f0ede63e12553817cc0d822265b23d110b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ax-track (0.1.15)
4
+ ax-track (0.2.3)
5
5
  faraday (~> 1.7)
6
6
  faraday_middleware (~> 1.1)
7
7
 
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'
@@ -12,6 +12,8 @@ module AxTrack
12
12
  APIKeyMissing = Class.new(StandardError)
13
13
 
14
14
  attr_reader :api_key, :adapter
15
+ attr_writer :connection
16
+
15
17
  def initialize(api_key: nil, adapter: nil, stubs: nil)
16
18
  @api_key = api_key || ENV['AXTRACK_API_KEY']
17
19
  @adapter = adapter || Faraday.default_adapter
@@ -38,6 +40,5 @@ module AxTrack
38
40
  conn.headers['Authorization'] = "Token #{api_key}" unless api_key.empty?
39
41
  end
40
42
  end
41
-
42
43
  end
43
44
  end
@@ -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,38 @@
1
1
  module AxTrack
2
2
  class Tracker < Object
3
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'])
4
+ def asset_details
5
+ @asset_details = Asset.new @asset_details unless @asset_details.is_a? Asset
6
+ @asset_details
7
+ end
8
+
9
+ def asset_id
10
+ asset_details.id
11
+ end
17
12
 
18
- @battery = json_response.dig('asset_details', 'sensor_data', 'battery', 'value')
19
- sensor_data = json_response.dig('asset_details', 'sensor_data')
13
+ def name
14
+ @name = @asset_details['name']
15
+ end
20
16
 
21
- @sensor_data = sensor_data
17
+ def last_message_timestamp
18
+ DateTime.parse(@last_message_timestamp, false) if @last_message_timestamp
19
+ end
22
20
 
23
- @network = json_response['network']
21
+ def last_gps_position
22
+ #GPSPosition.new(@last_gps_measurement || { lat: asset_details.lat, lng: asset_details.lng } )
23
+ GPSPosition.new(@last_gps_measurement)
24
+ end
24
25
 
25
- create_getters
26
+ def battery
27
+ asset_details&.sensor_data.dig('battery', 'value')
28
+ end
29
+
30
+ def sensor_data
31
+ asset_details.sensor_data
32
+ end
33
+
34
+ def website_url
35
+ "https://app.ax-track.ch/#/map/assets/#{@id}"
26
36
  end
27
37
 
28
38
  def available_sensor_data
@@ -33,23 +43,5 @@ module AxTrack
33
43
  sensor_data_temp = sensor_data_temp.unshift('gps') if self.last_gps_position.respond_to? :timestamp
34
44
  sensor_data_temp
35
45
  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
46
  end
55
47
  end
@@ -27,6 +27,14 @@ module AxTrack
27
27
  def request(http_method: :get, endpoint:, headers: {}, params: {}, body: {}, result_subset: nil)
28
28
  raise "Client not defined" unless defined? @client
29
29
  endpoint = endpoint + "/" unless endpoint[-1] == "/"
30
+
31
+ body['picture'] = Faraday::FilePart.new(
32
+ body['picture'].tempfile.path,
33
+ body['picture'].content_type,
34
+ body['picture'].filename
35
+ ) if body.key? :picture
36
+
37
+ # client.connection['headers']['Content-Type'] = 'multipart/form-data' if body.key? :picture
30
38
  @response = client.connection.public_send(http_method, endpoint, params.merge(body))
31
39
 
32
40
  unless response_successful?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AxTrack
4
- VERSION = "0.1.15"
4
+ VERSION = "0.2.3"
5
5
  end
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.1.15
4
+ version: 0.2.3
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 00:00:00.000000000 Z
11
+ date: 2021-10-17 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