59 lines
2.3 KiB
Ruby
59 lines
2.3 KiB
Ruby
# 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
|