trmnl-api 0.3.0 → 0.4.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: 278f09b420c7a49d0f325e0a1128c5fd5d9a133958a9131c00e18a0c80aca017
4
- data.tar.gz: 6730afa2771d004abb699dff8877f27c60e4b0f79e0faf962c43569aa9a7338c
3
+ metadata.gz: db11ea72e435255e8f0aac6ab4a457c019a0a073abf35d4bae0e71c90b395b17
4
+ data.tar.gz: d571107317c9968116e3d3e6d66b73b9155641ebdffe723837cd40b223116e70
5
5
  SHA512:
6
- metadata.gz: 12a21186fb3b4601fb4fd4d0032df1cc54b4f84682a95c84f4d704e62abfada39306f1ff2b723d17c04fc2fc6bda2917dde7ad9a511676cfa3619e118a011dcd
7
- data.tar.gz: 578927511c6a842a0fc2941e2e658acf27b6a7926cef1974b29a3b1c6f062e39d18da5e793cdad886658566e410a0b3bb51379c538bc6a890b350d2cc2e359ee
6
+ metadata.gz: 6287bd8712e51994d7e07915f6b3194f48498ca02b062844e19ed54d1c60e3d4b0c063c607cbd99a39efdceec912cb25f58d81b60d23e75bc31866b27adf8bf0
7
+ data.tar.gz: 04e59263fbdcaa32ea0e6eb41375f6007500bd4c34293fc3c4acbb0686457e95fe23f1dac234ecb7f004bba3cb690e0321f4cd271689d39cfa203c6ebe262304
checksums.yaml.gz.sig CHANGED
Binary file
@@ -40,28 +40,3 @@ module TRMNL
40
40
  end
41
41
  end
42
42
  end
43
-
44
- # TODO: Remove when finished.
45
- __END__
46
-
47
- # frozen_string_literal: true
48
-
49
- module Kagi
50
- module API
51
- module Models
52
- # Models the search payload.
53
- Search = Data.define :meta, :data do
54
- def self.for(**attributes)
55
- new(
56
- **attributes.merge!(
57
- meta: Content::Meta.for(**attributes[:meta]),
58
- data: attributes[:data].map { Content::Search.for(**it) }
59
- )
60
- )
61
- end
62
- end
63
- end
64
- end
65
- end
66
-
67
-
@@ -6,9 +6,8 @@ require "http"
6
6
  module TRMNL
7
7
  module API
8
8
  # Provides a low level configurable and monadic API client.
9
- # :reek:DataClump
10
9
  class Requester
11
- include Dependencies[:settings, :http]
10
+ include Dependencies[:settings, :http, :logger]
12
11
  include Dry::Monads[:result]
13
12
 
14
13
  HEADERS = {}.freeze
@@ -26,13 +25,32 @@ module TRMNL
26
25
 
27
26
  attr_reader :settings, :http
28
27
 
29
- # rubocop:todo Metrics/ParameterLists
30
28
  def call method, path, headers, **options
31
29
  http.headers(settings.headers.merge(headers))
32
- .public_send(method, "#{settings.uri}/#{path}", options)
30
+ .public_send(method, uri(path), options)
33
31
  .then { |response| response.status.success? ? Success(response) : Failure(response) }
32
+ rescue HTTP::ConnectionError => error then handle_bad_connection path, error
33
+ rescue HTTP::TimeoutError => error then handle_timeout path, error
34
+ rescue OpenSSL::SSL::SSLError => error then handle_bad_ssl path, error
35
+ end
36
+
37
+ def uri(path) = "#{settings.uri}/#{path}"
38
+
39
+ def handle_bad_connection path, error
40
+ logger.debug { error.message }
41
+ Failure "Unable to connect: #{uri(path).inspect}. Is the network intermittent or down?"
42
+ end
43
+
44
+ def handle_timeout path, error
45
+ logger.debug { error.message }
46
+ Failure "Connection timed out: #{uri(path).inspect}."
47
+ end
48
+
49
+ def handle_bad_ssl path, error
50
+ logger.debug { error.message }
51
+ Failure "Unable to secure connection: #{uri(path).inspect}. " \
52
+ "Is your certificate or SSL valid?"
34
53
  end
35
- # rubocop:enable Metrics/ParameterLists
36
54
  end
37
55
  end
38
56
  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.3.0"
5
+ spec.version = "0.4.0"
6
6
  spec.authors = ["TRMNL"]
7
7
  spec.email = ["engineering@usetrmnl.com"]
8
8
  spec.homepage = "https://github.com/usetrmnl/trmnl-api"
@@ -23,11 +23,11 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.required_ruby_version = "~> 3.4"
25
25
 
26
- spec.add_dependency "cogger", "~> 1.2"
26
+ spec.add_dependency "cogger", "~> 1.4"
27
27
  spec.add_dependency "containable", "~> 1.2"
28
28
  spec.add_dependency "dry-monads", "~> 1.8"
29
29
  spec.add_dependency "dry-schema", "~> 1.14"
30
- spec.add_dependency "http", "~> 5.2"
30
+ spec.add_dependency "http", "~> 5.3"
31
31
  spec.add_dependency "infusible", "~> 4.3"
32
32
  spec.add_dependency "inspectable", "~> 0.3"
33
33
  spec.add_dependency "pipeable", "~> 1.3"
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.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TRMNL
@@ -41,14 +41,14 @@ dependencies:
41
41
  requirements:
42
42
  - - "~>"
43
43
  - !ruby/object:Gem::Version
44
- version: '1.2'
44
+ version: '1.4'
45
45
  type: :runtime
46
46
  prerelease: false
47
47
  version_requirements: !ruby/object:Gem::Requirement
48
48
  requirements:
49
49
  - - "~>"
50
50
  - !ruby/object:Gem::Version
51
- version: '1.2'
51
+ version: '1.4'
52
52
  - !ruby/object:Gem::Dependency
53
53
  name: containable
54
54
  requirement: !ruby/object:Gem::Requirement
@@ -97,14 +97,14 @@ dependencies:
97
97
  requirements:
98
98
  - - "~>"
99
99
  - !ruby/object:Gem::Version
100
- version: '5.2'
100
+ version: '5.3'
101
101
  type: :runtime
102
102
  prerelease: false
103
103
  version_requirements: !ruby/object:Gem::Requirement
104
104
  requirements:
105
105
  - - "~>"
106
106
  - !ruby/object:Gem::Version
107
- version: '5.2'
107
+ version: '5.3'
108
108
  - !ruby/object:Gem::Dependency
109
109
  name: infusible
110
110
  requirement: !ruby/object:Gem::Requirement
metadata.gz.sig CHANGED
Binary file