ax-track 0.1.9 → 0.1.15

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: df8a0965e6d150c1d817952ef21243d4c6cde5de9982da627c7eaf62c5612ae4
4
- data.tar.gz: 15880392636fdd11ca36bd70d17f44862afe9b09a0bc464a70e5fd5e6c31089b
3
+ metadata.gz: a2435c9350d10dfb406b2c3f0c1a4db35de9029465e7b31622407a0a580722d4
4
+ data.tar.gz: 803333823277c76dd4532382c409d5c4dbe5b1ad10070626005da7ff9f3c0552
5
5
  SHA512:
6
- metadata.gz: 0daa74bd47a6ce1f42748d80eaf539ef8f4d93d92e8ef56b1839965b6950187ed9323cc747ffde2de8e276bb7e848ed5ffe7825b05eb20ece53be981e004a6c1
7
- data.tar.gz: 9674635ea14e6987405f9a5ca0b1ce79e030008af98393f620fea3c5dceca6c1ad4075867472d3073b9c5e80fa1426cf05bee4265dcd99bc69d57c48e1177e0c
6
+ metadata.gz: b194b85b47d4eea1f300ef5a2d579f3029abce9bfc03920c859c2d1e25769859e5a608d150847fdb276a4142186b19730bbcd279865197b7c6356b2ec4b0c5ca
7
+ data.tar.gz: 5ebdfac60f867abc3a6dd92f4584c22411acc1eed1427ccd26b15d3727f7bae53635e8c406c9f39589f3a8a1638fa7d996ba3afbc777a2f3f07af2ec69120b0d
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ax-track (0.1.9)
4
+ ax-track (0.1.15)
5
5
  faraday (~> 1.7)
6
6
  faraday_middleware (~> 1.1)
7
7
 
data/README.md CHANGED
@@ -34,7 +34,7 @@ client = AxTrack::Client.new(api_key: your_api_key)
34
34
  # Get a list of all trackers
35
35
  client.tracker.list
36
36
 
37
- # Get the specific information of a specific tracker
37
+ # Get the specific information of a specific tracker. If :asset_id is invalid, a AxTrack::Resource::NotFoundError is returned
38
38
  client.tracker.retrieve(:tracker_id)
39
39
  ```
40
40
 
@@ -43,7 +43,7 @@ client.tracker.retrieve(:tracker_id)
43
43
  # Get a list of all assets
44
44
  client.asset.list
45
45
 
46
- # Get a specific asset
46
+ # Get a specific asset. If :asset_id is invalid, a AxTrack::Resource::NotFoundError is returned
47
47
  client.asset.retrieve(:asset_id)
48
48
 
49
49
  # Update a specif asset
@@ -52,6 +52,9 @@ client.asset.update(:tracker_id, params)
52
52
  client.tracker.update(:tracker_id, name: 'New name')
53
53
  ```
54
54
 
55
+ ### Errors
56
+
57
+
55
58
  ## Development
56
59
 
57
60
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -12,9 +12,10 @@ module AxTrack
12
12
  APIKeyMissing = Class.new(StandardError)
13
13
 
14
14
  attr_reader :api_key, :adapter
15
- def initialize(api_key: ENV['AXTRACK_API_KEY'], adapter: Faraday.default_adapter)
16
- @api_key = api_key
17
- @adapter = adapter
15
+ def initialize(api_key: nil, adapter: nil, stubs: nil)
16
+ @api_key = api_key || ENV['AXTRACK_API_KEY']
17
+ @adapter = adapter || Faraday.default_adapter
18
+ @stubs = stubs
18
19
 
19
20
  raise APIKeyMissing, "No API key provided" if !defined?(api_key) || api_key.nil? || api_key.empty?
20
21
  end
@@ -33,7 +34,7 @@ module AxTrack
33
34
  #conn.request :url_encoded
34
35
  conn.request :json
35
36
  conn.response :json, content_type: 'application/json'
36
- conn.adapter Faraday.default_adapter
37
+ conn.adapter adapter, @stubs
37
38
  conn.headers['Authorization'] = "Token #{api_key}" unless api_key.empty?
38
39
  end
39
40
  end
@@ -6,15 +6,13 @@ module AxTrack
6
6
  # type is the class Type to wrap the results from key
7
7
  def self.from_response(json_response, key:, type: )
8
8
  body = json_response.body
9
- new(
10
- data: body[key].map { |attrs| type.new(attrs ) },
11
- total: body.dig('count'),
12
- next_cursor: body.dig('next'),
13
- prev_cursor: body.dig('previous')
14
- )
9
+ new(data: body[key].map { |attrs| type.new(attrs ) },
10
+ total: body.dig('count'),
11
+ next_cursor: body.dig('next'),
12
+ prev_cursor: body.dig('previous'))
15
13
  end
16
14
 
17
- def initialize (data:, total:, next_cursor:, prev_cursor:)
15
+ def initialize(data:, total:, next_cursor:, prev_cursor:)
18
16
  @data = data
19
17
  @total = total
20
18
  @next_cursor = next_cursor.nil? || next_cursor.empty? ? nil : next_cursor
@@ -8,9 +8,6 @@ module AxTrack
8
8
  def create_getters(required_getter_methods = instance_variables.map { |attr_name| attr_name[1..-1 ]})
9
9
  required_getter_methods.each do |attr|
10
10
  singleton_class.send :attr_reader, attr unless self.respond_to? attr
11
- # define_singleton_method(v.to_s.tr('@','')) do
12
- # instance_variable_get(v)
13
- # end
14
11
  end
15
12
  end
16
13
 
@@ -2,34 +2,40 @@ module AxTrack
2
2
  class Tracker < Object
3
3
 
4
4
  def initialize(json_response)
5
- @tracker_id = json_response['id']
6
- @asset_id = json_response['asset']
7
- @url = json_response['url']
8
- @active = json_response['active']
9
- @model = json_response['model']
10
- @asset_details = Asset.new json_response['asset_details'] if json_response['asset_details']
11
- @name = json_response.dig('asset_details', 'name')
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')
12
13
  @last_message_timestamp = DateTime.parse(json_response['last_message_timestamp'], false) if json_response['last_message_timestamp']
13
- @url = json_response['url']
14
- @user_url = website_url(@asset_id)
14
+ @url = json_response['url']
15
+ @user_url = website_url
15
16
  @last_gps_position = GPSPosition.new(json_response['last_gps_measurement'] || json_response['asset_details'])
16
17
 
17
- @battery = json_response.dig('asset_details', 'sensor_data', 'battery', 'value')
18
+ @battery = json_response.dig('asset_details', 'sensor_data', 'battery', 'value')
19
+ sensor_data = json_response.dig('asset_details', 'sensor_data')
18
20
 
19
- sensor_data = json_response.dig('asset_details', 'sensor_data')
20
- sensor_data.delete('battery')
21
- @sensor_data = sensor_data
21
+ @sensor_data = sensor_data
22
+
23
+ @network = json_response['network']
22
24
 
23
25
  create_getters
24
26
  end
25
27
 
26
28
  def available_sensor_data
27
29
  # returns a hash with available senson data
28
- self.sensor_data.keys
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
29
35
  end
30
36
 
31
37
  def website_url
32
- "https://app.ax-track.ch/#/map/assets/#{id}"
38
+ "https://app.ax-track.ch/#/map/assets/#{@tracker_id}"
33
39
  end
34
40
 
35
41
 
@@ -3,14 +3,13 @@ module AxTrack
3
3
  class Resource
4
4
  attr_reader :client, :response
5
5
 
6
- GithubAPIError = Class.new(StandardError)
7
- BadRequestError = Class.new(GithubAPIError)
8
- UnauthorizedError = Class.new(GithubAPIError)
9
- ForbiddenError = Class.new(GithubAPIError)
10
- ApiRequestsQuotaReachedError = Class.new(GithubAPIError)
11
- NotFoundError = Class.new(GithubAPIError)
12
- UnprocessableEntityError = Class.new(GithubAPIError)
13
- ApiError = Class.new(GithubAPIError)
6
+ ApiError = Class.new(StandardError)
7
+ BadRequestError = Class.new(ApiError)
8
+ UnauthorizedError = Class.new(ApiError)
9
+ ForbiddenError = Class.new(ApiError)
10
+ ApiRequestsQuotaReachedError = Class.new(ApiError)
11
+ NotFoundError = Class.new(ApiError)
12
+ UnprocessableEntityError = Class.new(ApiError)
14
13
 
15
14
  HTTP_OK_CODE = 200
16
15
 
@@ -43,9 +42,7 @@ module AxTrack
43
42
  BadRequestError
44
43
  when HTTP_UNAUTHORIZED_CODE
45
44
  UnauthorizedError
46
- when HTTP_FORBIDDEN_CODE
47
- ForbiddenError
48
- when HTTP_NOT_FOUND_CODE
45
+ when HTTP_NOT_FOUND_CODE, HTTP_FORBIDDEN_CODE
49
46
  NotFoundError
50
47
  when HTTP_UNPROCESSABLE_ENTITY_CODE
51
48
  UnprocessableEntityError
@@ -13,10 +13,11 @@ module AxTrack
13
13
  endpoint: "assets/#{asset_id}").body
14
14
  end
15
15
 
16
- def update(asset_id, **attributes)
16
+ def update(asset_id, headers: {}, **attributes)
17
17
  Asset.new request(http_method: :patch,
18
18
  endpoint: "assets/#{asset_id}",
19
- body: attributes).body
19
+ body: attributes,
20
+ headers: {}).body
20
21
 
21
22
  end
22
23
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AxTrack
4
- VERSION = "0.1.9"
4
+ VERSION = "0.1.15"
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.9
4
+ version: 0.1.15
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-06 00:00:00.000000000 Z
11
+ date: 2021-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday