trmnl-api 0.13.0 → 0.14.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: 1bf06832c324918b8f93b02b8a8700b617c57cd804e206b2b28b20dc0509c6f2
4
- data.tar.gz: 5547395a2b3fe1abb54de0cee20a58bbb438bdfc9786a5a602eef40a8b12e147
3
+ metadata.gz: dedac6b2c46579d646be122b295be973bb3c39bbc35847da48d77f9ce2f506ae
4
+ data.tar.gz: dd7ec7571e0c2cc0f74c67bfc78c4e157b8590a8736913102e582959a85f920c
5
5
  SHA512:
6
- metadata.gz: e8c73489d9f1334bbd721aab3c7c6270b4bb791982112245b57a9a1305d1e8f6f108e82356dcecf25db970e644ee9de3b626b1db5b4b741edcd633ed262e4e03
7
- data.tar.gz: c511a0cd0e6ca2a15584ee84bf58b6f6556b503118b2a89075401e0c515217a9821ce1e249b1e77741e166bd432678e932d9d4416926174067381df50ebef848
6
+ metadata.gz: 4b18624c8fb2ec5c395a58824691d5da9a1495f8bc26fe41f1119de67cde3aa6d1d2ef4657a72a490e74db51343c7aceea5930887624cdb5c9ae3a7e1fb46f65
7
+ data.tar.gz: 91c83467a642383c7edf9ed5decd35b9514fbf45382a9574e39e4510dc48ac748bc70ae0cec6a218fa312652268968826cd2c65c216015d589564a6cd64c07dc
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -228,34 +228,31 @@ client.models
228
228
 
229
229
  # Success(
230
230
  # [
231
- # #<data TRMNL::API::Models::Model
232
- # name="test",
233
- # label="Test",
234
- # description="A test.",
235
- # kind="trmnl",
236
- # colors=2,
237
- # bit_depth=1,
238
- # scale_factor=1,
239
- # rotation=90,
240
- # mime_type="image/png",
241
- # width=800,
242
- # height=480,
243
- # offset_x=10,
244
- # offset_y=15,
245
- # palette_names=["bw"],
246
- # css: {
247
- # classes: {
248
- # device: "screen--og_png",
249
- # size: "screen--md"
231
+ # #<Struct:TRMNL::API::Models::Model:0x00003c20
232
+ # bit_depth = 4,
233
+ # colors = 16,
234
+ # css = {
235
+ # classes: {
236
+ # density: "screen--density-2x",
237
+ # device: "screen--v2",
238
+ # size: "screen--lg"
250
239
  # },
251
240
  # variables: [
252
241
  # [
253
242
  # "--screen-w",
254
- # "800px"
243
+ # "1040px"
255
244
  # ],
256
245
  # [
257
246
  # "--screen-h",
258
- # "480px"
247
+ # "780px"
248
+ # ],
249
+ # [
250
+ # "--pixel-ratio",
251
+ # "1.8"
252
+ # ],
253
+ # [
254
+ # "--dither-pixel-ratio",
255
+ # "2.0"
259
256
  # ],
260
257
  # [
261
258
  # "--ui-scale",
@@ -266,7 +263,23 @@ client.models
266
263
  # "1.0"
267
264
  # ]
268
265
  # ]
269
- # }
266
+ # },
267
+ # description = "TRMNL X",
268
+ # height = 1404,
269
+ # kind = "trmnl",
270
+ # label = "TRMNL X",
271
+ # mime_type = "image/png",
272
+ # name = "v2",
273
+ # offset_x = 0,
274
+ # offset_y = 0,
275
+ # palette_names = [
276
+ # "gray-16",
277
+ # "gray-4",
278
+ # "bw"
279
+ # ],
280
+ # rotation = 0,
281
+ # scale_factor = 1.8,
282
+ # width = 1872
270
283
  # >
271
284
  # ]
272
285
  # )
@@ -328,7 +341,7 @@ client.recipes search: "comic" # Answers first page of comics.
328
341
  client.recipes sort: "popularity" # Answers first page sorted by popularity.
329
342
 
330
343
  # Success(
331
- # #<data TRMNL::API::Models::Recipe:0x00010fc0
344
+ # #<data TRMNL::API::Models::Recipe
332
345
  # data = [
333
346
  # #<Struct:TRMNL::API::Models::Recipes::Data:0x00010fe0
334
347
  # author = #<Struct:TRMNL::API::Models::Recipes::Author:0x00010ff0
@@ -19,16 +19,16 @@ module TRMNL
19
19
  HTTP
20
20
  end
21
21
 
22
- namespace :contracts do
23
- register :category, Contracts::Category
24
- register :current_screen, Contracts::CurrentScreen
25
- register :display, Contracts::Display
26
- register :firmware, Contracts::Firmware
27
- register :ip_address, Contracts::IPAddress
28
- register :model, Contracts::Model
29
- register :palette, Contracts::Palette
30
- register :recipe, Contracts::Recipe
31
- register :setup, Contracts::Setup
22
+ namespace :schemas do
23
+ register :category, Schemas::Category
24
+ register :current_screen, Schemas::CurrentScreen
25
+ register :display, Schemas::Display
26
+ register :firmware, Schemas::Firmware
27
+ register :ip_address, Schemas::IPAddress
28
+ register :model, Schemas::Model
29
+ register :palette, Schemas::Palette
30
+ register :recipe, Schemas::Recipe
31
+ register :setup, Schemas::Setup
32
32
  end
33
33
 
34
34
  namespace :models do
@@ -8,16 +8,16 @@ module TRMNL
8
8
  module Endpoints
9
9
  # Handles API request/response.
10
10
  class Category
11
- include TRMNL::API::Dependencies[:requester, contract: "contracts.category"]
11
+ include TRMNL::API::Dependencies[:requester, schema: "schemas.category"]
12
12
 
13
- include Inspectable[contract: :type]
13
+ include Inspectable[schema: :type]
14
14
  include Pipeable
15
15
 
16
16
  def call
17
17
  pipe(
18
18
  requester.get("categories"),
19
19
  try(:parse, catch: JSON::ParserError),
20
- validate(contract, as: :to_h),
20
+ validate(schema, as: :to_h),
21
21
  as(:fetch, :data)
22
22
  )
23
23
  end
@@ -10,17 +10,17 @@ module TRMNL
10
10
  class CurrentScreen
11
11
  include TRMNL::API::Dependencies[
12
12
  :requester,
13
- contract: "contracts.current_screen",
13
+ schema: "schemas.current_screen",
14
14
  model: "models.current_screen"
15
15
  ]
16
16
 
17
- include Inspectable[contract: :type]
17
+ include Inspectable[schema: :type]
18
18
  include Pipeable
19
19
 
20
20
  def call token:
21
21
  pipe requester.get("current_screen", headers: {"Access-Token" => token}),
22
22
  try(:parse, catch: JSON::ParserError),
23
- validate(contract, as: :to_h),
23
+ validate(schema, as: :to_h),
24
24
  to(model, :for)
25
25
  end
26
26
  end
@@ -10,17 +10,17 @@ module TRMNL
10
10
  class Display
11
11
  include TRMNL::API::Dependencies[
12
12
  :requester,
13
- contract: "contracts.display",
13
+ schema: "schemas.display",
14
14
  model: "models.display"
15
15
  ]
16
16
 
17
- include Inspectable[contract: :type]
17
+ include Inspectable[schema: :type]
18
18
  include Pipeable
19
19
 
20
20
  def call token:
21
21
  pipe requester.get("display", headers: {"Access-Token" => token}),
22
22
  try(:parse, catch: JSON::ParserError),
23
- validate(contract, as: :to_h),
23
+ validate(schema, as: :to_h),
24
24
  to(model, :for)
25
25
  end
26
26
  end
@@ -10,17 +10,17 @@ module TRMNL
10
10
  class Firmware
11
11
  include TRMNL::API::Dependencies[
12
12
  :requester,
13
- contract: "contracts.firmware",
13
+ schema: "schemas.firmware",
14
14
  model: "models.firmware"
15
15
  ]
16
16
 
17
- include Inspectable[contract: :type]
17
+ include Inspectable[schema: :type]
18
18
  include Pipeable
19
19
 
20
20
  def call
21
21
  pipe requester.get("firmware/latest"),
22
22
  try(:parse, catch: JSON::ParserError),
23
- validate(contract, as: :to_h),
23
+ validate(schema, as: :to_h),
24
24
  to(model, :for)
25
25
  end
26
26
  end
@@ -10,17 +10,17 @@ module TRMNL
10
10
  class IPAddress
11
11
  include TRMNL::API::Dependencies[
12
12
  :requester,
13
- contract: "contracts.ip_address",
13
+ schema: "schemas.ip_address",
14
14
  model: "models.ip_address"
15
15
  ]
16
16
 
17
- include Inspectable[contract: :type]
17
+ include Inspectable[schema: :type]
18
18
  include Pipeable
19
19
 
20
20
  def call
21
21
  pipe requester.get("ips"),
22
22
  try(:parse, catch: JSON::ParserError),
23
- validate(contract, as: :to_h),
23
+ validate(schema, as: :to_h),
24
24
  as(:fetch, :data),
25
25
  to(model, :for)
26
26
  end
@@ -10,18 +10,18 @@ module TRMNL
10
10
  class Model
11
11
  include TRMNL::API::Dependencies[
12
12
  :requester,
13
- contract: "contracts.model",
13
+ schema: "schemas.model",
14
14
  model: "models.model"
15
15
  ]
16
16
 
17
- include Inspectable[contract: :type]
17
+ include Inspectable[schema: :type]
18
18
  include Pipeable
19
19
 
20
20
  def call
21
21
  pipe(
22
22
  requester.get("models"),
23
23
  try(:parse, catch: JSON::ParserError),
24
- validate(contract, as: :to_h),
24
+ validate(schema, as: :to_h),
25
25
  as(:fetch, :data),
26
26
  map { |data| model.for(**data) }
27
27
  )
@@ -10,18 +10,18 @@ module TRMNL
10
10
  class Palette
11
11
  include TRMNL::API::Dependencies[
12
12
  :requester,
13
- contract: "contracts.palette",
13
+ schema: "schemas.palette",
14
14
  model: "models.palette"
15
15
  ]
16
16
 
17
- include Inspectable[contract: :type]
17
+ include Inspectable[schema: :type]
18
18
  include Pipeable
19
19
 
20
20
  def call
21
21
  pipe(
22
22
  requester.get("palettes"),
23
23
  try(:parse, catch: JSON::ParserError),
24
- validate(contract, as: :to_h),
24
+ validate(schema, as: :to_h),
25
25
  as(:fetch, :data),
26
26
  map { |data| model.for(**data) }
27
27
  )
@@ -11,11 +11,11 @@ module TRMNL
11
11
  class Recipe
12
12
  include TRMNL::API::Dependencies[
13
13
  :requester,
14
- contract: "contracts.recipe",
14
+ schema: "schemas.recipe",
15
15
  model: "models.recipe"
16
16
  ]
17
17
 
18
- include Inspectable[contract: :type]
18
+ include Inspectable[schema: :type]
19
19
  include Pipeable
20
20
 
21
21
  using Refinements::Hash
@@ -26,7 +26,7 @@ module TRMNL
26
26
  pipe(
27
27
  requester.get("recipes.json", **parameters),
28
28
  try(:parse, catch: JSON::ParserError),
29
- validate(contract, as: :to_h),
29
+ validate(schema, as: :to_h),
30
30
  to(model, :for)
31
31
  )
32
32
  end
@@ -10,17 +10,17 @@ module TRMNL
10
10
  class Setup
11
11
  include TRMNL::API::Dependencies[
12
12
  :requester,
13
- contract: "contracts.setup",
13
+ schema: "schemas.setup",
14
14
  model: "models.setup"
15
15
  ]
16
16
 
17
- include Inspectable[contract: :type]
17
+ include Inspectable[schema: :type]
18
18
  include Pipeable
19
19
 
20
20
  def call id:
21
21
  pipe requester.get("setup", headers: {"ID" => id}),
22
22
  try(:parse, catch: JSON::ParserError),
23
- validate(contract, as: :to_h),
23
+ validate(schema, as: :to_h),
24
24
  to(model, :for)
25
25
  end
26
26
  end
@@ -4,7 +4,7 @@ require "dry/schema"
4
4
 
5
5
  module TRMNL
6
6
  module API
7
- module Contracts
7
+ module Schemas
8
8
  # Validates API response.
9
9
  Category = Dry::Schema.JSON { required(:data).array(:string) }
10
10
  end
@@ -4,7 +4,7 @@ require "dry/schema"
4
4
 
5
5
  module TRMNL
6
6
  module API
7
- module Contracts
7
+ module Schemas
8
8
  # Validates API response.
9
9
  CurrentScreen = Dry::Schema.JSON do
10
10
  required(:refresh_rate).filled :integer
@@ -4,7 +4,7 @@ require "dry/schema"
4
4
 
5
5
  module TRMNL
6
6
  module API
7
- module Contracts
7
+ module Schemas
8
8
  # Validates API response.
9
9
  Display = Dry::Schema.JSON do
10
10
  required(:filename).filled :string
@@ -4,7 +4,7 @@ require "dry/schema"
4
4
 
5
5
  module TRMNL
6
6
  module API
7
- module Contracts
7
+ module Schemas
8
8
  # Validates API response.
9
9
  Firmware = Dry::Schema.JSON do
10
10
  required(:url).filled :string
@@ -4,7 +4,7 @@ require "dry/schema"
4
4
 
5
5
  module TRMNL
6
6
  module API
7
- module Contracts
7
+ module Schemas
8
8
  # Validates API response.
9
9
  IPAddress = Dry::Schema.JSON do
10
10
  required(:data).hash do
@@ -4,7 +4,7 @@ require "dry/schema"
4
4
 
5
5
  module TRMNL
6
6
  module API
7
- module Contracts
7
+ module Schemas
8
8
  # Validates API response.
9
9
  Model = Dry::Schema.JSON do
10
10
  required(:data).array(:hash) do
@@ -24,6 +24,7 @@ module TRMNL
24
24
  required(:palette_ids).array(:string)
25
25
  optional(:css).hash do
26
26
  optional(:classes).hash do
27
+ required(:density).filled :string
27
28
  required(:device).filled :string
28
29
  required(:size).filled :string
29
30
  end
@@ -4,7 +4,7 @@ require "dry/schema"
4
4
 
5
5
  module TRMNL
6
6
  module API
7
- module Contracts
7
+ module Schemas
8
8
  # Validates API response.
9
9
  Palette = Dry::Schema.JSON do
10
10
  required(:data).array(:hash) do
@@ -4,7 +4,7 @@ require "dry/schema"
4
4
 
5
5
  module TRMNL
6
6
  module API
7
- module Contracts
7
+ module Schemas
8
8
  # Validates API response.
9
9
  Recipe = Dry::Schema.JSON do
10
10
  required(:data).array(:hash) do
@@ -4,7 +4,7 @@ require "dry/schema"
4
4
 
5
5
  module TRMNL
6
6
  module API
7
- module Contracts
7
+ module Schemas
8
8
  module Recipes
9
9
  # Validates API response.
10
10
  Author = Dry::Schema.JSON do
@@ -4,7 +4,7 @@ require "dry/schema"
4
4
 
5
5
  module TRMNL
6
6
  module API
7
- module Contracts
7
+ module Schemas
8
8
  # Validates API response.
9
9
  Setup = Dry::Schema.JSON do
10
10
  required(:api_key).filled :string
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.13.0"
5
+ spec.version = "0.14.0"
6
6
  spec.authors = ["TRMNL"]
7
7
  spec.email = ["engineering@trmnl.com"]
8
8
  spec.homepage = "https://github.com/usetrmnl/trmnl-api"
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.13.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TRMNL
@@ -9,9 +9,9 @@ bindir: bin
9
9
  cert_chain:
10
10
  - |
11
11
  -----BEGIN CERTIFICATE-----
12
- MIIENjCCAp6gAwIBAgIBAjANBgkqhkiG9w0BAQsFADBBMQ8wDQYDVQQDDAZicm9v
12
+ MIIENjCCAp6gAwIBAgIBAzANBgkqhkiG9w0BAQsFADBBMQ8wDQYDVQQDDAZicm9v
13
13
  a2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQBGRYC
14
- aW8wHhcNMjUwMzIyMTQ1NDE3WhcNMjYwMzIyMTQ1NDE3WjBBMQ8wDQYDVQQDDAZi
14
+ aW8wHhcNMjYwMzI1MTI0OTEyWhcNMjcwMzI1MTI0OTEyWjBBMQ8wDQYDVQQDDAZi
15
15
  cm9va2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQB
16
16
  GRYCaW8wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCro8tj5/E1Hg88
17
17
  f4qfiwPVd2zJQHvdYt4GHVvuHRRgx4HGhJuNp+4BId08RBn7V6V1MW6MY3kezRBs
@@ -23,15 +23,15 @@ cert_chain:
23
23
  GUHU9MyIXbFOsnp3K3ADrAVjPWop8EZkmUR3MV/CUm00w2cZHCSGiXl1KMpiVKvk
24
24
  Ywr1gd2ZME4QLSo+EXUtLxDUa/W3xnBS8dBOuMMz02FPWYr3PN8CAwEAAaM5MDcw
25
25
  CQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFAFgmv0tYMZnItuPycSM
26
- F5wykJEVMA0GCSqGSIb3DQEBCwUAA4IBgQBlzRfyAYx/fCFjizS0Npxw4+4T3aYL
27
- hbXoDqQRWjxuhFZcXUymhz3r8/Ltyri9lSof8grzB+8/+mrMVms7Gwt5qolk6zdn
28
- FkySGy/jmpN12ldOHFbBEnyVBZNBvOBVb8zkkw8PhiHdBdXOUm4Jy39yJvBLfjcC
29
- iM1aeWPmgPy1GbvZU+leRGZLt6dRIR9oCDXcWLRjha8xLMoz6Yn9fJBYexBA3iEz
30
- h5S7pn4AX/JhVRiSyl8pAy4jEKydpyQrliH3gHkpNmUS/XDczP+9xX1bAB4BvqL2
31
- NCxMcQ+hiJNqCKpPgHxaOOHZfIxV33logIuPEQ8NryHAwZ9ZWnwtYDE8kQGGKskI
32
- Kkm6QT474hZl7MpwiJjWgW313CR7jUEekQahX1QxCxHPI7LSrKpno0plH3uWIOQp
33
- KUlkb9uyACBgyRO52ZHiDVI8YvtU5O/j9pSes9/3XgvBeC1onx4qWp+uRX7eVsYS
34
- GiijocTc3enZVrXERetaXj8/9XWs3fB3HWY=
26
+ F5wykJEVMA0GCSqGSIb3DQEBCwUAA4IBgQAG+ykjp+DIXSybGEtX+/ve974mYfN6
27
+ 8U7qcVfRM+qDSOZ+97iu30qUTbVAKIHlHCDKRn3SgOffDUB5VU2MsJBh/3TPKWBZ
28
+ anB/uzMcwOfru+qyA3b7ZFqZzRLWmR5FtPObFxc0gYMT3YvLNHk2Nb9Vjq/PoiGG
29
+ e75PXweDOokwDA5m1gMOz1rdp/dlGMXkSFQg94PPVyUKXgO4VzWTgePSDxOIL+v6
30
+ +OWV6AaEH9BaqxnmdA5ubi0L7bhl0gbN92FxpNO3kpTjww8kme856a+wCK3qyM5w
31
+ 7ZLbUexynDN0Au8eSpT2Bf6ztGmB1S9ffzDJsGX1/lkpMIB51e48Xe2+gzzOgemk
32
+ CdZaGupj6WkarnT8kh/cPtyA5ax4rGX6GOS8meGxzkv8Uy0JSEOYAp6wLfIisYZp
33
+ IJBIXIOkwKKJ0eB5YHrUSJxzpP4LlcIg/eTftaXmJdYjy+2VRrCZYDjfguyLmMjR
34
+ KR9w4/Fjvqy87kCHmxMWa6IL2Vzt1Clm2cA=
35
35
  -----END CERTIFICATE-----
36
36
  date: 1980-01-02 00:00:00.000000000 Z
37
37
  dependencies:
@@ -190,16 +190,6 @@ files:
190
190
  - lib/trmnl/api/configuration/content.rb
191
191
  - lib/trmnl/api/configuration/loader.rb
192
192
  - lib/trmnl/api/container.rb
193
- - lib/trmnl/api/contracts/category.rb
194
- - lib/trmnl/api/contracts/current_screen.rb
195
- - lib/trmnl/api/contracts/display.rb
196
- - lib/trmnl/api/contracts/firmware.rb
197
- - lib/trmnl/api/contracts/ip_address.rb
198
- - lib/trmnl/api/contracts/model.rb
199
- - lib/trmnl/api/contracts/palette.rb
200
- - lib/trmnl/api/contracts/recipe.rb
201
- - lib/trmnl/api/contracts/recipes/author.rb
202
- - lib/trmnl/api/contracts/setup.rb
203
193
  - lib/trmnl/api/dependencies.rb
204
194
  - lib/trmnl/api/endpoints/category.rb
205
195
  - lib/trmnl/api/endpoints/container.rb
@@ -227,6 +217,16 @@ files:
227
217
  - lib/trmnl/api/models/recipes/statistics.rb
228
218
  - lib/trmnl/api/models/setup.rb
229
219
  - lib/trmnl/api/requester.rb
220
+ - lib/trmnl/api/schemas/category.rb
221
+ - lib/trmnl/api/schemas/current_screen.rb
222
+ - lib/trmnl/api/schemas/display.rb
223
+ - lib/trmnl/api/schemas/firmware.rb
224
+ - lib/trmnl/api/schemas/ip_address.rb
225
+ - lib/trmnl/api/schemas/model.rb
226
+ - lib/trmnl/api/schemas/palette.rb
227
+ - lib/trmnl/api/schemas/recipe.rb
228
+ - lib/trmnl/api/schemas/recipes/author.rb
229
+ - lib/trmnl/api/schemas/setup.rb
230
230
  - lib/trmnl/api/types.rb
231
231
  - trmnl-api.gemspec
232
232
  homepage: https://github.com/usetrmnl/trmnl-api
@@ -253,7 +253,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
253
253
  - !ruby/object:Gem::Version
254
254
  version: '0'
255
255
  requirements: []
256
- rubygems_version: 4.0.8
256
+ rubygems_version: 4.0.9
257
257
  specification_version: 4
258
258
  summary: A monadic TRMNL API client.
259
259
  test_files: []
metadata.gz.sig CHANGED
Binary file