From 495bd54fdf06f798369e6e914b20c82b01a9e01d Mon Sep 17 00:00:00 2001 From: Ivan Shamatov Date: Sat, 30 Oct 2021 22:49:28 +0300 Subject: [PATCH] First outgoing request and replacement of get_payment_info --- Gemfile | 1 + lib/yookassa.rb | 2 +- lib/yookassa/http_helpers.rb | 10 ++++++---- lib/yookassa/payment.rb | 8 ++++---- lib/yookassa/refund.rb | 4 ++-- lib/yookassa/response.rb | 11 ----------- yookassa.gemspec | 3 --- 7 files changed, 14 insertions(+), 25 deletions(-) diff --git a/Gemfile b/Gemfile index 6a4c784..b4bf2ee 100644 --- a/Gemfile +++ b/Gemfile @@ -15,5 +15,6 @@ group :development, :test do gem "rubocop", "~> 1.22" gem "rubocop-rake", "~> 0.6.0" gem "rubocop-rspec", "~> 2.5" + gem "simplecov", "~> 0.16" gem "webmock", "~> 3.14" end diff --git a/lib/yookassa.rb b/lib/yookassa.rb index 387e120..b70d279 100644 --- a/lib/yookassa.rb +++ b/lib/yookassa.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require "http" -require "dry/initializer" +require "dry-initializer" require "yookassa/version" require "yookassa/payment" require "yookassa/refund" diff --git a/lib/yookassa/http_helpers.rb b/lib/yookassa/http_helpers.rb index 9d2c1aa..94b1039 100644 --- a/lib/yookassa/http_helpers.rb +++ b/lib/yookassa/http_helpers.rb @@ -6,18 +6,20 @@ module Yookassa def get(endpoint, query: {}) response = client.get("#{API_URL}#{endpoint}", params: query) + body = JSON.parse(response.body.to_s, symbolize_names: true) - return Error.new(response.parse) if response.status.client_error? + return Error.new(body) if response.status.client_error? - yield(response.parse) if block_given? + yield(body) if block_given? end def post(endpoint, idempotency_key:, payload: {}) response = client.headers("Idempotence-Key" => idempotency_key).post("#{API_URL}#{endpoint}", json: payload) + body = JSON.parse(response.body.to_s, symbolize_names: true) - return Error.new(response.parse) if response.status.client_error? + return Error.new(body) if response.status.client_error? - yield(response.parse) if block_given? + yield(body) if block_given? end def client diff --git a/lib/yookassa/payment.rb b/lib/yookassa/payment.rb index ba07890..982d2f6 100644 --- a/lib/yookassa/payment.rb +++ b/lib/yookassa/payment.rb @@ -15,25 +15,25 @@ module Yookassa def get_payment_info(payment_id:) get("payments/#{payment_id}") do |response| - Entity::Payment.new(response) + Entity::Payment.new(**response) end end def create(payment:, idempotency_key: SecureRandom.hex(10)) post("payments", payload: payment, idempotency_key: idempotency_key) do |response| - Entity::Payment.new(response) + Entity::Payment.new(**response) end end def capture(payment_id:, idempotency_key: SecureRandom.hex(10)) post("payments/#{payment_id}/capture", idempotency_key: idempotency_key) do |response| - Entity::Payment.new(response) + Entity::Payment.new(**response) end end def cancel(payment_id:, idempotency_key: SecureRandom.hex(10)) post("payments/#{payment_id}/cancel", idempotency_key: idempotency_key) do |response| - Entity::Payment.new(response) + Entity::Payment.new(**response) end end diff --git a/lib/yookassa/refund.rb b/lib/yookassa/refund.rb index 54584ac..09cc6e5 100644 --- a/lib/yookassa/refund.rb +++ b/lib/yookassa/refund.rb @@ -15,13 +15,13 @@ module Yookassa def get_refund_info(payment_id:) get("refunds/#{payment_id}") do |response| - Entity::Refund.new(response) + Entity::Refund.new(**response) end end def create(payload:, idempotency_key: SecureRandom.hex(10)) post("refunds", payload: payload, idempotency_key: idempotency_key) do |response| - Entity::Refund.new(response) + Entity::Refund.new(**response) end end end diff --git a/lib/yookassa/response.rb b/lib/yookassa/response.rb index 9c0fc19..e6ddd84 100644 --- a/lib/yookassa/response.rb +++ b/lib/yookassa/response.rb @@ -5,16 +5,5 @@ module Yookassa extend Dry::Initializer option :id, proc(&:to_s) option :status, proc(&:to_s), default: proc {} - - class << self - def build(*res) - body = res.last - new JSON.parse(body.first) - end - - def new(opts) - super opts.transform_keys(&:to_sym) - end - end end end diff --git a/yookassa.gemspec b/yookassa.gemspec index 0fd5d03..403656f 100644 --- a/yookassa.gemspec +++ b/yookassa.gemspec @@ -24,7 +24,4 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency "dry-initializer" spec.add_runtime_dependency "http", "~> 5.0.1" - - spec.add_development_dependency "rspec", "~> 3.5" - spec.add_development_dependency "simplecov", "~> 0.16" end