Add resource definitions for all 22 API tags, wire client accessors and require tree
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Fiken
|
||||
# The entry point. Holds the connection and exposes the resource accessors.
|
||||
#
|
||||
# client = Fiken::Client.new(token: ENV["FIKEN_TOKEN"])
|
||||
# client.user
|
||||
# client.companies.list
|
||||
# client.contacts("my-company-slug").find(123)
|
||||
# client.invoices("my-company-slug").drafts.create(invoice_attrs)
|
||||
class Client
|
||||
attr_reader :connection
|
||||
|
||||
def initialize(token: nil, access_token: nil, **options)
|
||||
bearer = token || access_token
|
||||
raise ArgumentError, "provide :token or :access_token" if bearer.nil? || bearer.empty?
|
||||
|
||||
@connection = Connection.new(token: bearer, **options)
|
||||
end
|
||||
|
||||
# GET /user
|
||||
def user
|
||||
Object.new(connection.get("/user").body)
|
||||
end
|
||||
|
||||
# GET /companies, GET /companies/{slug}
|
||||
def companies
|
||||
Resources::Companies.new(self)
|
||||
end
|
||||
|
||||
# Convenience: fetch a single company by slug.
|
||||
def company(slug)
|
||||
companies.find(slug)
|
||||
end
|
||||
|
||||
# Company-scoped resources. Each takes the company slug.
|
||||
def accounts(slug) = Resources::Accounts.new(self, slug)
|
||||
def account_balances(slug) = Resources::AccountBalances.new(self, slug)
|
||||
def activities(slug) = Resources::Activities.new(self, slug)
|
||||
def bank_accounts(slug) = Resources::BankAccounts.new(self, slug)
|
||||
def bank_balances(slug) = Resources::BankBalances.new(self, slug)
|
||||
def contacts(slug) = Resources::Contacts.new(self, slug)
|
||||
def credit_notes(slug) = Resources::CreditNotes.new(self, slug)
|
||||
def groups(slug) = Resources::Groups.new(self, slug)
|
||||
def inbox(slug) = Resources::Inbox.new(self, slug)
|
||||
def invoices(slug) = Resources::Invoices.new(self, slug)
|
||||
def journal_entries(slug) = Resources::JournalEntries.new(self, slug)
|
||||
def offers(slug) = Resources::Offers.new(self, slug)
|
||||
def order_confirmations(slug) = Resources::OrderConfirmations.new(self, slug)
|
||||
def products(slug) = Resources::Products.new(self, slug)
|
||||
def projects(slug) = Resources::Projects.new(self, slug)
|
||||
def purchases(slug) = Resources::Purchases.new(self, slug)
|
||||
def sales(slug) = Resources::Sales.new(self, slug)
|
||||
def time_entries(slug) = Resources::TimeEntries.new(self, slug)
|
||||
def time_users(slug) = Resources::TimeUsers.new(self, slug)
|
||||
def transactions(slug) = Resources::Transactions.new(self, slug)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user