ax-track 0.1.15 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
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