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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +5 -2
- data/lib/ax_track/client.rb +5 -4
- data/lib/ax_track/collection.rb +5 -7
- data/lib/ax_track/object.rb +0 -3
- data/lib/ax_track/objects/tracker.rb +21 -15
- data/lib/ax_track/resource.rb +8 -11
- data/lib/ax_track/resources/asset_resource.rb +3 -2
- data/lib/ax_track/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2435c9350d10dfb406b2c3f0c1a4db35de9029465e7b31622407a0a580722d4
|
4
|
+
data.tar.gz: 803333823277c76dd4532382c409d5c4dbe5b1ad10070626005da7ff9f3c0552
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b194b85b47d4eea1f300ef5a2d579f3029abce9bfc03920c859c2d1e25769859e5a608d150847fdb276a4142186b19730bbcd279865197b7c6356b2ec4b0c5ca
|
7
|
+
data.tar.gz: 5ebdfac60f867abc3a6dd92f4584c22411acc1eed1427ccd26b15d3727f7bae53635e8c406c9f39589f3a8a1638fa7d996ba3afbc777a2f3f07af2ec69120b0d
|
data/Gemfile.lock
CHANGED
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.
|
data/lib/ax_track/client.rb
CHANGED
@@ -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:
|
16
|
-
@api_key
|
17
|
-
@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
|
37
|
+
conn.adapter adapter, @stubs
|
37
38
|
conn.headers['Authorization'] = "Token #{api_key}" unless api_key.empty?
|
38
39
|
end
|
39
40
|
end
|
data/lib/ax_track/collection.rb
CHANGED
@@ -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
|
-
|
11
|
-
|
12
|
-
|
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
|
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
|
data/lib/ax_track/object.rb
CHANGED
@@ -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
|
6
|
-
@asset_id
|
7
|
-
@
|
8
|
-
@
|
9
|
-
@
|
10
|
-
@
|
11
|
-
@
|
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
|
14
|
-
@user_url
|
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
|
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
|
20
|
-
|
21
|
-
@
|
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/#{
|
38
|
+
"https://app.ax-track.ch/#/map/assets/#{@tracker_id}"
|
33
39
|
end
|
34
40
|
|
35
41
|
|
data/lib/ax_track/resource.rb
CHANGED
@@ -3,14 +3,13 @@ module AxTrack
|
|
3
3
|
class Resource
|
4
4
|
attr_reader :client, :response
|
5
5
|
|
6
|
-
|
7
|
-
BadRequestError = Class.new(
|
8
|
-
UnauthorizedError = Class.new(
|
9
|
-
ForbiddenError = Class.new(
|
10
|
-
ApiRequestsQuotaReachedError = Class.new(
|
11
|
-
NotFoundError = Class.new(
|
12
|
-
UnprocessableEntityError = Class.new(
|
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
|
19
|
+
body: attributes,
|
20
|
+
headers: {}).body
|
20
21
|
|
21
22
|
end
|
22
23
|
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.1.
|
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-
|
11
|
+
date: 2021-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|