Skip to content

Commit

Permalink
Use faraday middleware to parse json and webmocks for specs
Browse files Browse the repository at this point in the history
  • Loading branch information
StefSchenkelaars committed Dec 15, 2017
1 parent 00810d5 commit da41d4e
Show file tree
Hide file tree
Showing 52 changed files with 205 additions and 292 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
/pkg/
/spec/reports/
/tmp/
/.idea/
60 changes: 22 additions & 38 deletions lib/moneybird/client.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
require 'faraday_middleware'

module Moneybird
class Client
attr_reader :bearer_token, :_last_response
attr_reader :bearer_token
attr_accessor :errors
attr_writer :http, :faraday_adapter

Expand All @@ -9,7 +11,7 @@ def initialize(bearer_token)
end

def base_url
"https://moneybird.com/api/#{version}/"
"https://moneybird.com/"
end

def version
Expand All @@ -21,50 +23,32 @@ def faraday_adapter
end

def http
@http ||= begin
uri = uri_for_path(base_url)
http = Faraday.new(:url => uri) do |faraday|
faraday.request :url_encoded
faraday.adapter faraday_adapter
end
http
@http ||= Faraday.new(url: base_url) do |faraday|
faraday.headers = faraday_headers
faraday.request :url_encoded
faraday.response :json
faraday.adapter faraday_adapter
end
end

def headers
{
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Authorization' => "Bearer #{bearer_token}"
}
end

def uri_for_path(path)
URI.parse(File.join(base_url, path))
end

def get(path, headers={})
uri = uri_for_path(path)
@_last_response = http.get(uri.request_uri, nil, self.headers.merge(headers))
end

def patch(path, body=nil, headers={})
uri = uri_for_path(path)
@_last_response = http.patch(uri.request_uri, body, self.headers.merge(headers))
%i[get patch post delete].each do |call|
define_method call do |path, options = {}|
http.public_send(call, "/api/#{version}/#{path}", options).body
end
end

def post(path, body=nil, headers={})
uri = uri_for_path(path)
@_last_response = http.post(uri.request_uri, body, self.headers.merge(headers))
def administrations
Moneybird::Service::Administration.new(self).all
end

def delete(path, headers={})
uri = uri_for_path(path)
@_last_response = http.delete(uri.request_uri, nil, self.headers.merge(headers))
end
private

def administrations
Moneybird::Service::Administration.new(self).all
def faraday_headers
{
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Authorization' => "Bearer #{bearer_token}"
}
end
end
end
10 changes: 6 additions & 4 deletions lib/moneybird/service/administration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,16 @@ def initialize(client)
@client = client
end

def resource_class
Moneybird::Resource::Administration
end

def find(id)
all.find{ |administration| administration.id.to_i == id }
end

private

def resource_class
Moneybird::Resource::Administration
end

def path
'/administrations'
end
Expand Down
14 changes: 6 additions & 8 deletions lib/moneybird/service/contact.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,18 @@ class Contact
include Moneybird::Traits::Save
include Moneybird::Traits::Delete

def find_by_customer_id(customer_id)
build client.get("#{path}/customer_id/#{customer_id}")
end

private

def resource_class
Moneybird::Resource::Contact
end

def path
"#{administration_id}/contacts"
end

def find_by_customer_id(customer_id)
result = client.get("#{path}/customer_id/#{customer_id}")

if result.status.to_i == GET_SUCCESS_CODE
build(JSON.parse(result.body))
end
end
end
end
2 changes: 2 additions & 0 deletions lib/moneybird/service/document_style.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ class DocumentStyle
include Moneybird::Traits::Service
include Moneybird::Traits::FindAll

private

def resource_class
Moneybird::Resource::DocumentStyle
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/documents/general_document.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class GeneralDocument
include Moneybird::Traits::Save
include Moneybird::Traits::Delete

private

def resource_class
Moneybird::Resource::Documents::GeneralDocument
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/documents/general_journal_document.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class GeneralJournalDocument
include Moneybird::Traits::Save
include Moneybird::Traits::Delete

private

def resource_class
Moneybird::Resource::Documents::GeneralJournalDocument
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/documents/purchase_invoice.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class PurchaseInvoice
include Moneybird::Traits::Save
include Moneybird::Traits::Delete

private

def resource_class
Moneybird::Resource::Documents::Receipt
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/documents/receipt.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class Receipt
include Moneybird::Traits::Save
include Moneybird::Traits::Delete

private

def resource_class
Moneybird::Resource::Documents::Receipt
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/documents/typeless_document.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class TypelessDocument
include Moneybird::Traits::Save
include Moneybird::Traits::Delete

private

def resource_class
Moneybird::Resource::Documents::TypelessDocument
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/estimate.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class Estimate
include Moneybird::Traits::Save
include Moneybird::Traits::Delete

private

def resource_class
Moneybird::Resource::Estimate
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/financial_account.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ class FinancialAccount
include Moneybird::Traits::Service
include Moneybird::Traits::FindAll

private

def resource_class
Moneybird::Resource::FinancialAccount
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/financial_mutation.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ class FinancialMutation
include Moneybird::Traits::Service
include Moneybird::Traits::FindAll

private

def resource_class
Moneybird::Resource::FinancialMutation
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/identity.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class Identity
include Moneybird::Traits::Save
include Moneybird::Traits::Delete

private

def resource_class
Moneybird::Resource::Identity
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/ledger_account.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class LedgerAccount
include Moneybird::Traits::Save
include Moneybird::Traits::Delete

private

def resource_class
Moneybird::Resource::LedgerAccount
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/product.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class Product
include Moneybird::Traits::Save
include Moneybird::Traits::Delete

private

def resource_class
Moneybird::Resource::Product
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/purchase_invoice.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class PurchaseInvoice
include Moneybird::Traits::Save
include Moneybird::Traits::Delete

private

def resource_class
Moneybird::Resource::PurchaseInvoice
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/recurring_sales_invoice.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class RecurringSalesInvoice
include Moneybird::Traits::Save
include Moneybird::Traits::Delete

private

def resource_class
Moneybird::Resource::RecurringSalesInvoice
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/sales_invoice.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ class SalesInvoice
include Moneybird::Traits::Save
include Moneybird::Traits::Delete

private

def resource_class
Moneybird::Resource::SalesInvoice
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/tax_rate.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ class TaxRate
include Moneybird::Traits::Service
include Moneybird::Traits::FindAll

private

def resource_class
Moneybird::Resource::TaxRate
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/webhook.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ class Webhook
include Moneybird::Traits::Delete
include Moneybird::Traits::Save

private

def resource_class
Moneybird::Resource::Webhook
end
Expand Down
2 changes: 2 additions & 0 deletions lib/moneybird/service/workflow.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ class Workflow
include Moneybird::Traits::Service
include Moneybird::Traits::FindAll

private

def resource_class
Moneybird::Resource::Workflow
end
Expand Down
6 changes: 0 additions & 6 deletions lib/moneybird/traits/delete.rb
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
module Moneybird
module Traits
module Delete
DELETE_SUCCESS_CODE = 204

def delete(resource)
client.delete(resource_path(resource))
if client._last_response.status.to_i != DELETE_SUCCESS_CODE
resource.errors = client._last_response.body
return false
end
true
end
end
Expand Down
8 changes: 1 addition & 7 deletions lib/moneybird/traits/find.rb
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
module Moneybird
module Traits
module Find
GET_SUCCESS_CODE = 200

def find(id)
result = client.get("#{path}/#{id}")

if result.status.to_i == GET_SUCCESS_CODE
build(JSON.parse(result.body))
end
build client.get("#{path}/#{id}")
end
end
end
Expand Down
10 changes: 2 additions & 8 deletions lib/moneybird/traits/find_all.rb
Original file line number Diff line number Diff line change
@@ -1,15 +1,9 @@
module Moneybird
module Traits
module FindAll
GET_SUCCESS_CODE = 200

def all
result = client.get(path)

if result.status.to_i == GET_SUCCESS_CODE
JSON.parse(result.body).map do |resource|
build(resource)
end
client.get(path).map do |resource|
build resource
end
end
end
Expand Down
Loading

0 comments on commit da41d4e

Please sign in to comment.