mirror of
https://github.com/usetrmnl/trmnl-api.git
synced 2026-04-29 13:35:13 -07:00
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:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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,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
|
||||
Reference in New Issue
Block a user