ax-track 0.1.9 → 0.1.15

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: 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