trmnl-api 0.20.0 → 0.22.0

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: f763f8369338b964c61941391955b24c4ce660b8652176414184d70515a33c0d
4
- data.tar.gz: 1f56f30717b729c32dd782c12ac04bb6b1009dc6abc1bcf772c167da41600310
3
+ metadata.gz: 8efedaa295b0c387a87ff3ae179bc8179e21485505de33474d1b5e00bb694e15
4
+ data.tar.gz: ca6875d143b129e2b42114289a3be856e41b5581b4e7ba5286292e6829b3c940
5
5
  SHA512:
6
- metadata.gz: 191da096d070d71e5b1fcc8b7b671a7ac2306a0e0b24207042ed2ea2dbe5560f15b2912dfb0486929b3db5d491d70a2c86185c677614b114083b752087481e6d
7
- data.tar.gz: 330b466f275c45fdf634fe96cb345d5c40a70cfd6427a85d8a75168775d4d7e84ef93deae659c641a54557edf7d9be62fcd0a5b6c08285d650227b1c33dc6f29
6
+ metadata.gz: d2ba42f64f6e549c6852b5326d7ef0e1a1a8356baff3010fa88e2fe7469fcc82986b3b15ade6fe9734cc1d7df36474139b8c6345733eb8bf932e900ddd04f791
7
+ data.tar.gz: 0d7e7e1ade6a86c1f689ac783ba5160dd87544306e295b9befe9150c86cb26d410f15e0efa64ee867be9e2a06ef06bd82c6ff19a6502a53709da4a2f863db570
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -232,6 +232,38 @@ client.firmware_latest
232
232
  # )
233
233
  ----
234
234
 
235
+ You can also tweak the result to answer current (or past) versions, specific model names, and/or both. Examples:
236
+
237
+ **By Version**
238
+
239
+ [source,ruby]
240
+ ----
241
+ client = TRMNL::API.new
242
+ client.firmware_latest "1.8.0"
243
+
244
+ # Success(
245
+ # #<data TRMNL::API::Models::Firmware::Latest
246
+ # url="https://trmnl-fw.s3.us-east-2.amazonaws.com/trmnl_og/FW1.8.0.bin",
247
+ # version="1.8.0">
248
+ # )
249
+ ----
250
+
251
+ **By Model Name**
252
+
253
+ [source,ruby]
254
+ ----
255
+ client = TRMNL::API.new
256
+ client.firmware_latest model_name: "trmnl_x"
257
+
258
+ # Success(
259
+ # #<data TRMNL::API::Models::Firmware::Latest
260
+ # url="https://trmnl-fw.s3.us-east-2.amazonaws.com/trmnl_x/FW1.8.17.bin",
261
+ # version="1.8.17">
262
+ # )
263
+ ----
264
+
265
+ ⚠️ This isn't officially supported by the TRMNL API since the endpoint only knows how to provide the latest firmware for OG models so the above allows you to obtain what you need by dynamically formatting the URI based on version and model name. This also means if you make a typo, you might get a URI that doesn't exist since no verification happens.
266
+
235
267
  ==== IP Addresses
236
268
 
237
269
  Allows you obtain a list of public IP addresses for all TRMNL core servers because plugin poll requests will only originate from these IPs. Example:
@@ -43,7 +43,7 @@ module TRMNL
43
43
 
44
44
  def firmware_flashes = endpoints.fetch(__method__).call
45
45
 
46
- def firmware_latest = endpoints.fetch(__method__).call
46
+ def firmware_latest(...) = endpoints.fetch(__method__).call(...)
47
47
 
48
48
  def ip_addresses = endpoints.fetch(__method__).call
49
49
 
@@ -18,12 +18,28 @@ module TRMNL
18
18
  include Inspectable[schema: :type]
19
19
  include Pipeable
20
20
 
21
- def call
21
+ ASSET_URI = "https://trmnl-fw.s3.us-east-2.amazonaws.com/%<model_name>s/FW%<version>s.bin"
22
+
23
+ def initialize(asset_uri: ASSET_URI, **)
24
+ @asset_uri = asset_uri
25
+ super(**)
26
+ end
27
+
28
+ def call version = nil, model_name: "trmnl_og"
22
29
  pipe requester.get("firmware/latest"),
23
30
  try(:parse, catch: JSON::ParserError),
24
31
  validate(schema, as: :to_h),
32
+ fmap { transform_uri it, (version || it[:version]), model_name },
25
33
  to(model, :for)
26
34
  end
35
+
36
+ private
37
+
38
+ attr_reader :asset_uri
39
+
40
+ def transform_uri data, version, model_name
41
+ data.merge! url: format(asset_uri, model_name:, version:), version:
42
+ end
27
43
  end
28
44
  end
29
45
  end
data/trmnl-api.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "trmnl-api"
5
- spec.version = "0.20.0"
5
+ spec.version = "0.22.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://alchemists.io/projects/trmnl-api"
@@ -24,15 +24,15 @@ Gem::Specification.new do |spec|
24
24
  spec.required_ruby_version = ">= 4.0"
25
25
 
26
26
  spec.add_dependency "cogger", "~> 2.3"
27
- spec.add_dependency "containable", "~> 2.3"
28
- spec.add_dependency "core", "~> 3.2"
29
- spec.add_dependency "dry-monads", "~> 1.9"
27
+ spec.add_dependency "containable", "~> 2.5"
28
+ spec.add_dependency "core", "~> 3.4"
29
+ spec.add_dependency "dry-monads", "~> 1.11"
30
30
  spec.add_dependency "dry-schema", "~> 1.14"
31
31
  spec.add_dependency "dry-types", "~> 1.8"
32
32
  spec.add_dependency "http", "~> 6.0"
33
33
  spec.add_dependency "infusible", "~> 5.0"
34
34
  spec.add_dependency "inspectable", "~> 1.0"
35
- spec.add_dependency "pipeable", "~> 2.0"
35
+ spec.add_dependency "pipeable", "~> 2.4"
36
36
  spec.add_dependency "zeitwerk", "~> 2.8"
37
37
 
38
38
  spec.extra_rdoc_files = Dir["README*", "LICENSE*"]
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trmnl-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.0
4
+ version: 0.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -55,42 +55,42 @@ dependencies:
55
55
  requirements:
56
56
  - - "~>"
57
57
  - !ruby/object:Gem::Version
58
- version: '2.3'
58
+ version: '2.5'
59
59
  type: :runtime
60
60
  prerelease: false
61
61
  version_requirements: !ruby/object:Gem::Requirement
62
62
  requirements:
63
63
  - - "~>"
64
64
  - !ruby/object:Gem::Version
65
- version: '2.3'
65
+ version: '2.5'
66
66
  - !ruby/object:Gem::Dependency
67
67
  name: core
68
68
  requirement: !ruby/object:Gem::Requirement
69
69
  requirements:
70
70
  - - "~>"
71
71
  - !ruby/object:Gem::Version
72
- version: '3.2'
72
+ version: '3.4'
73
73
  type: :runtime
74
74
  prerelease: false
75
75
  version_requirements: !ruby/object:Gem::Requirement
76
76
  requirements:
77
77
  - - "~>"
78
78
  - !ruby/object:Gem::Version
79
- version: '3.2'
79
+ version: '3.4'
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: dry-monads
82
82
  requirement: !ruby/object:Gem::Requirement
83
83
  requirements:
84
84
  - - "~>"
85
85
  - !ruby/object:Gem::Version
86
- version: '1.9'
86
+ version: '1.11'
87
87
  type: :runtime
88
88
  prerelease: false
89
89
  version_requirements: !ruby/object:Gem::Requirement
90
90
  requirements:
91
91
  - - "~>"
92
92
  - !ruby/object:Gem::Version
93
- version: '1.9'
93
+ version: '1.11'
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: dry-schema
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -167,14 +167,14 @@ dependencies:
167
167
  requirements:
168
168
  - - "~>"
169
169
  - !ruby/object:Gem::Version
170
- version: '2.0'
170
+ version: '2.4'
171
171
  type: :runtime
172
172
  prerelease: false
173
173
  version_requirements: !ruby/object:Gem::Requirement
174
174
  requirements:
175
175
  - - "~>"
176
176
  - !ruby/object:Gem::Version
177
- version: '2.0'
177
+ version: '2.4'
178
178
  - !ruby/object:Gem::Dependency
179
179
  name: zeitwerk
180
180
  requirement: !ruby/object:Gem::Requirement
@@ -272,7 +272,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
272
272
  - !ruby/object:Gem::Version
273
273
  version: '0'
274
274
  requirements: []
275
- rubygems_version: 4.0.17
275
+ rubygems_version: 4.0.22
276
276
  specification_version: 4
277
277
  summary: A monadic TRMNL API client.
278
278
  test_files: []
metadata.gz.sig CHANGED
Binary file