Updated client as requester

Necessary to make space for a new client object that will provide access to all API endpoints. The rename help denote that this object is purely for low level HTTP API requests.

Milestone: minor
This commit is contained in:
Brooke Kuhlmann
2025-05-05 17:00:55 -06:00
parent 24abe66d76
commit 25086e5594
13 changed files with 34 additions and 34 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ module TRMNL
module Container
extend Containable
register(:client) { API::Client.new }
register(:requester) { API::Requester.new }
register(:logger) { Cogger.new id: "trmnl-api", formatter: :json }
register :http do
+2 -2
View File
@@ -8,7 +8,7 @@ module TRMNL
# Handles API request/response.
class CurrentScreen
include Dependencies[
:client,
:requester,
contract: "contracts.current_screen",
model: "models.current_screen"
]
@@ -16,7 +16,7 @@ module TRMNL
include Pipeable
def call token:
pipe client.get("current_screen", headers: {"Access-Token" => token}),
pipe requester.get("current_screen", headers: {"Access-Token" => token}),
try(:parse, catch: JSON::ParserError),
validate(contract, as: :to_h),
to(model, :for)
+2 -2
View File
@@ -7,11 +7,11 @@ module TRMNL
module Endpoints
# Handles API request/response.
class Display
include Dependencies[:client, contract: "contracts.display", model: "models.display"]
include Dependencies[:requester, contract: "contracts.display", model: "models.display"]
include Pipeable
def call token:
pipe client.get("display", headers: {"Access-Token" => token}),
pipe requester.get("display", headers: {"Access-Token" => token}),
try(:parse, catch: JSON::ParserError),
validate(contract, as: :to_h),
to(model, :for)
+2 -2
View File
@@ -7,11 +7,11 @@ module TRMNL
module Endpoints
# Handles API request/response.
class Firmware
include Dependencies[:client, contract: "contracts.firmware", model: "models.firmware"]
include Dependencies[:requester, contract: "contracts.firmware", model: "models.firmware"]
include Pipeable
def call
pipe client.get("firmware/latest"),
pipe requester.get("firmware/latest"),
try(:parse, catch: JSON::ParserError),
validate(contract, as: :to_h),
to(model, :for)
+2 -2
View File
@@ -5,9 +5,9 @@ module TRMNL
module Endpoints
# Handles API request/response.
class Log
include Dependencies[:client]
include Dependencies[:requester]
def call(token:, **) = client.post("log", headers: {"Access-Token" => token}, **)
def call(token:, **) = requester.post("log", headers: {"Access-Token" => token}, **)
end
end
end
+2 -2
View File
@@ -7,11 +7,11 @@ module TRMNL
module Endpoints
# Handles API request/response.
class Setup
include Dependencies[:client, contract: "contracts.setup", model: "models.setup"]
include Dependencies[:requester, contract: "contracts.setup", model: "models.setup"]
include Pipeable
def call id:
pipe client.get("setup", headers: {"ID" => id}),
pipe requester.get("setup", headers: {"ID" => id}),
try(:parse, catch: JSON::ParserError),
validate(contract, as: :to_h),
to(model, :for)
@@ -7,7 +7,7 @@ module TRMNL
module API
# Provides a low level configurable and monadic API client.
# :reek:DataClump
class Client
class Requester
include Dry::Monads[:result]
HEADERS = {}.freeze
@@ -3,11 +3,11 @@
require "spec_helper"
RSpec.describe TRMNL::API::Endpoints::CurrentScreen do
subject(:endpoint) { described_class.new client: }
subject(:endpoint) { described_class.new requester: }
include_context "with application dependencies"
let(:client) { TRMNL::API::Client.new http: }
let(:requester) { TRMNL::API::Requester.new http: }
describe "#call" do
context "with success" do
@@ -58,7 +58,7 @@ RSpec.describe TRMNL::API::Endpoints::CurrentScreen do
end
it "answers error response" do
result = described_class.new(client:).call token: "secret"
result = described_class.new(requester:).call token: "secret"
expect(result).to match(Failure(be_a(HTTP::Response)))
end
end
+3 -3
View File
@@ -3,11 +3,11 @@
require "spec_helper"
RSpec.describe TRMNL::API::Endpoints::Display do
subject(:endpoint) { described_class.new client: }
subject(:endpoint) { described_class.new requester: }
include_context "with application dependencies"
let(:client) { TRMNL::API::Client.new http: }
let(:requester) { TRMNL::API::Requester.new http: }
describe "#call" do
context "with success" do
@@ -64,7 +64,7 @@ RSpec.describe TRMNL::API::Endpoints::Display do
end
it "answers failure response" do
result = described_class.new(client:).call token: "secret"
result = described_class.new(requester:).call token: "secret"
expect(result).to match(Failure(be_a(HTTP::Response)))
end
end
@@ -3,11 +3,11 @@
require "spec_helper"
RSpec.describe TRMNL::API::Endpoints::Firmware do
subject(:endpoint) { described_class.new client: }
subject(:endpoint) { described_class.new requester: }
include_context "with application dependencies"
let(:client) { TRMNL::API::Client.new http: }
let(:requester) { TRMNL::API::Requester.new http: }
describe "#call" do
let :http do
@@ -52,7 +52,7 @@ RSpec.describe TRMNL::API::Endpoints::Firmware do
end
it "answers failure" do
result = described_class.new(client:).call
result = described_class.new(requester:).call
expect(result).to match(Failure(be_a(HTTP::Response)))
end
end
+2 -2
View File
@@ -3,11 +3,11 @@
require "spec_helper"
RSpec.describe TRMNL::API::Endpoints::Log do
subject(:endpoint) { described_class.new client: }
subject(:endpoint) { described_class.new requester: }
include_context "with application dependencies"
let(:client) { TRMNL::API::Client.new http: }
let(:requester) { TRMNL::API::Requester.new http: }
describe "#call" do
let :http do
+3 -3
View File
@@ -3,11 +3,11 @@
require "spec_helper"
RSpec.describe TRMNL::API::Endpoints::Setup do
subject(:endpoint) { described_class.new client: }
subject(:endpoint) { described_class.new requester: }
include_context "with application dependencies"
let(:client) { TRMNL::API::Client.new http: }
let(:requester) { TRMNL::API::Requester.new http: }
describe "#call" do
context "with success" do
@@ -58,7 +58,7 @@ RSpec.describe TRMNL::API::Endpoints::Setup do
end
it "answers failure" do
result = described_class.new(client:).call id: "ABC"
result = described_class.new(requester:).call id: "ABC"
expect(result).to match(Failure(be_a(HTTP::Response)))
end
end
@@ -2,15 +2,15 @@
require "spec_helper"
RSpec.describe TRMNL::API::Client do
RSpec.describe TRMNL::API::Requester do
using Refinements::Hash
subject(:client) { described_class.new http: }
subject(:requester) { described_class.new http: }
describe "#initialize" do
it "initializes with block" do
client = described_class.new { |settings| settings.content_type = "application/xml" }
body = client.get("bogus").failure.to_s
requester = described_class.new { |settings| settings.content_type = "application/xml" }
body = requester.get("bogus").failure.to_s
expect(body).to include("Not Found")
end
@@ -38,7 +38,7 @@ RSpec.describe TRMNL::API::Client do
end
it "answers response" do
response = client.get "current_screen"
response = requester.get "current_screen"
payload = response.fmap(&:parse).bind(&:symbolize_keys!)
expect(payload).to eq(
@@ -56,7 +56,7 @@ RSpec.describe TRMNL::API::Client do
let(:response) { instance_spy HTTP::Response }
it "includes custom header" do
client.get "current_screen", headers: {"ID" => "123"}
requester.get "current_screen", headers: {"ID" => "123"}
expect(http).to have_received(:headers).with(
"Content-Type" => "application/json",
@@ -82,7 +82,7 @@ RSpec.describe TRMNL::API::Client do
end
it "answers failure response" do
response = client.get "current_screen"
response = requester.get "current_screen"
payload = response.alt_map { |result| result.parse.symbolize_keys! }
expect(payload).to be_failure(message: "Danger!")
@@ -101,7 +101,7 @@ RSpec.describe TRMNL::API::Client do
end
it "answers response" do
result = client.post "log", log: {}
result = requester.post "log", log: {}
expect(result.success.status).to eq(204)
end
end