Class: Invoiced::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/invoiced.rb

Constant Summary collapse

ApiBase =
'https://api.invoiced.com'
ApiBaseSandbox =
'https://api.sandbox.invoiced.com'
OpenTimeout =
30
ReadTimeout =
80

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key, sandbox = false, sso_key = false) ⇒ Client

Returns a new instance of Client.



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/invoiced.rb', line 80

def initialize(api_key, sandbox=false, sso_key=false)
  @api_key = api_key
  @sandbox = sandbox
  @api_url = sandbox ? ApiBaseSandbox : ApiBase
  @sso_key = sso_key

  # Object endpoints
  @Charge = Invoiced::Charge.new(self)
  @Coupon = Invoiced::Coupon.new(self)
  @CreditBalanceAdjustment = Invoiced::CreditBalanceAdjustment.new(self)
  @CreditNote = Invoiced::CreditNote.new(self)
  @CustomField = Invoiced::CustomField.new(self)
  @Customer = Invoiced::Customer.new(self)
  @CustomerChasingCadence = Invoiced::CustomerChasingCadence.new(self)
  @EmailTemplate = Invoiced::EmailTemplate.new(self)
  @Estimate = Invoiced::Estimate.new(self)
  @Event = Invoiced::Event.new(self)
  @File = Invoiced::File.new(self)
  @GlAccount = Invoiced::GlAccount.new(self)
  @Inbox = Invoiced::Inbox.new(self)
  @Invoice = Invoiced::Invoice.new(self)
  @InvoiceChasingCadence = Invoiced::InvoiceChasingCadence.new(self)
  @Item = Invoiced::Item.new(self)
  @LateFeeSchedule = Invoiced::LateFeeSchedule.new(self)
  @Member = Invoiced::Member.new(self)
  @MerchantAccount = Invoiced::MerchantAccount.new(self)
  @Note = Invoiced::Note.new(self)
  @Payment = Invoiced::Payment.new(self)
  @PaymentMethod = Invoiced::PaymentMethod.new(self)
  @PdfTemplate = Invoiced::PdfTemplate.new(self)
  @Plan = Invoiced::Plan.new(self)
  @Refund = Invoiced::Refund.new(self)
  @Report = Invoiced::Report.new(self)
  @Role = Invoiced::Role.new(self)
  @SignUpPage = Invoiced::SignUpPage.new(self)
  @SmsTemplate = Invoiced::SmsTemplate.new(self)
  @Subscription = Invoiced::Subscription.new(self)
  @Task = Invoiced::Task.new(self)
  @TaxRate = Invoiced::TaxRate.new(self)
  @TaxRule = Invoiced::TaxRule.new(self)
  @Theme = Invoiced::Theme.new(self)
  @Webhook = Invoiced::Webhook.new(self)
end

Instance Attribute Details

#api_keyObject (readonly)

Returns the value of attribute api_key.



77
78
79
# File 'lib/invoiced.rb', line 77

def api_key
  @api_key
end

#api_urlObject (readonly)

Returns the value of attribute api_url.



77
78
79
# File 'lib/invoiced.rb', line 77

def api_url
  @api_url
end

#ChargeObject (readonly)

Returns the value of attribute Charge.



78
79
80
# File 'lib/invoiced.rb', line 78

def Charge
  @Charge
end

#CouponObject (readonly)

Returns the value of attribute Coupon.



78
79
80
# File 'lib/invoiced.rb', line 78

def Coupon
  @Coupon
end

#CreditBalanceAdjustmentObject (readonly)

Returns the value of attribute CreditBalanceAdjustment.



78
79
80
# File 'lib/invoiced.rb', line 78

def CreditBalanceAdjustment
  @CreditBalanceAdjustment
end

#CreditNoteObject (readonly)

Returns the value of attribute CreditNote.



78
79
80
# File 'lib/invoiced.rb', line 78

def CreditNote
  @CreditNote
end

#CustomerObject (readonly)

Returns the value of attribute Customer.



78
79
80
# File 'lib/invoiced.rb', line 78

def Customer
  @Customer
end

#CustomerChasingCadenceObject (readonly)

Returns the value of attribute CustomerChasingCadence.



78
79
80
# File 'lib/invoiced.rb', line 78

def CustomerChasingCadence
  @CustomerChasingCadence
end

#CustomFieldObject (readonly)

Returns the value of attribute CustomField.



78
79
80
# File 'lib/invoiced.rb', line 78

def CustomField
  @CustomField
end

#EmailTemplateObject (readonly)

Returns the value of attribute EmailTemplate.



78
79
80
# File 'lib/invoiced.rb', line 78

def EmailTemplate
  @EmailTemplate
end

#EstimateObject (readonly)

Returns the value of attribute Estimate.



78
79
80
# File 'lib/invoiced.rb', line 78

def Estimate
  @Estimate
end

#EventObject (readonly)

Returns the value of attribute Event.



78
79
80
# File 'lib/invoiced.rb', line 78

def Event
  @Event
end

#FileObject (readonly)

Returns the value of attribute File.



78
79
80
# File 'lib/invoiced.rb', line 78

def File
  @File
end

#GlAccountObject (readonly)

Returns the value of attribute GlAccount.



78
79
80
# File 'lib/invoiced.rb', line 78

def GlAccount
  @GlAccount
end

#InboxObject (readonly)

Returns the value of attribute Inbox.



78
79
80
# File 'lib/invoiced.rb', line 78

def Inbox
  @Inbox
end

#InvoiceObject (readonly)

Returns the value of attribute Invoice.



78
79
80
# File 'lib/invoiced.rb', line 78

def Invoice
  @Invoice
end

#InvoiceChasingCadenceObject (readonly)

Returns the value of attribute InvoiceChasingCadence.



78
79
80
# File 'lib/invoiced.rb', line 78

def InvoiceChasingCadence
  @InvoiceChasingCadence
end

#ItemObject (readonly)

Returns the value of attribute Item.



78
79
80
# File 'lib/invoiced.rb', line 78

def Item
  @Item
end

#LateFeeScheduleObject (readonly)

Returns the value of attribute LateFeeSchedule.



78
79
80
# File 'lib/invoiced.rb', line 78

def LateFeeSchedule
  @LateFeeSchedule
end

#MemberObject (readonly)

Returns the value of attribute Member.



78
79
80
# File 'lib/invoiced.rb', line 78

def Member
  @Member
end

#MerchantAccountObject (readonly)

Returns the value of attribute MerchantAccount.



78
79
80
# File 'lib/invoiced.rb', line 78

def MerchantAccount
  @MerchantAccount
end

#NoteObject (readonly)

Returns the value of attribute Note.



78
79
80
# File 'lib/invoiced.rb', line 78

def Note
  @Note
end

#PaymentObject (readonly)

Returns the value of attribute Payment.



78
79
80
# File 'lib/invoiced.rb', line 78

def Payment
  @Payment
end

#PaymentMethodObject (readonly)

Returns the value of attribute PaymentMethod.



78
79
80
# File 'lib/invoiced.rb', line 78

def PaymentMethod
  @PaymentMethod
end

#PdfTemplateObject (readonly)

Returns the value of attribute PdfTemplate.



78
79
80
# File 'lib/invoiced.rb', line 78

def PdfTemplate
  @PdfTemplate
end

#PlanObject (readonly)

Returns the value of attribute Plan.



78
79
80
# File 'lib/invoiced.rb', line 78

def Plan
  @Plan
end

#RefundObject (readonly)

Returns the value of attribute Refund.



78
79
80
# File 'lib/invoiced.rb', line 78

def Refund
  @Refund
end

#ReportObject (readonly)

Returns the value of attribute Report.



78
79
80
# File 'lib/invoiced.rb', line 78

def Report
  @Report
end

#RoleObject (readonly)

Returns the value of attribute Role.



78
79
80
# File 'lib/invoiced.rb', line 78

def Role
  @Role
end

#sandboxObject (readonly)

Returns the value of attribute sandbox.



77
78
79
# File 'lib/invoiced.rb', line 77

def sandbox
  @sandbox
end

#SignUpPageObject (readonly)

Returns the value of attribute SignUpPage.



78
79
80
# File 'lib/invoiced.rb', line 78

def SignUpPage
  @SignUpPage
end

#SmsTemplateObject (readonly)

Returns the value of attribute SmsTemplate.



78
79
80
# File 'lib/invoiced.rb', line 78

def SmsTemplate
  @SmsTemplate
end

#sso_keyObject (readonly)

Returns the value of attribute sso_key.



77
78
79
# File 'lib/invoiced.rb', line 77

def sso_key
  @sso_key
end

#SubscriptionObject (readonly)

Returns the value of attribute Subscription.



78
79
80
# File 'lib/invoiced.rb', line 78

def Subscription
  @Subscription
end

#TaskObject (readonly)

Returns the value of attribute Task.



78
79
80
# File 'lib/invoiced.rb', line 78

def Task
  @Task
end

#TaxRateObject (readonly)

Returns the value of attribute TaxRate.



78
79
80
# File 'lib/invoiced.rb', line 78

def TaxRate
  @TaxRate
end

#TaxRuleObject (readonly)

Returns the value of attribute TaxRule.



78
79
80
# File 'lib/invoiced.rb', line 78

def TaxRule
  @TaxRule
end

#ThemeObject (readonly)

Returns the value of attribute Theme.



78
79
80
# File 'lib/invoiced.rb', line 78

def Theme
  @Theme
end

#WebhookObject (readonly)

Returns the value of attribute Webhook.



78
79
80
# File 'lib/invoiced.rb', line 78

def Webhook
  @Webhook
end

Instance Method Details

#generate_sign_in_token(customerId, ttl) ⇒ Object



158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# File 'lib/invoiced.rb', line 158

def (customerId, ttl)
    if !@sso_key
        raise "Please provide a single sign-on key! You can find this value in Settings > Developers > Single Sign-On of the Invoiced application."
    end

    expires = Time.now + ttl # TTL should be in seconds

    payload = {
        :sub => customerId,
        :iss => "Invoiced Ruby/#{Invoiced::VERSION}",
        :iat => Time.now.to_i,
        :exp => expires.to_i
    }

    JWT.encode payload, @sso_key, 'HS256'
end

#request(method, endpoint, params = {}, opts = {}) ⇒ Object



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/invoiced.rb', line 124

def request(method, endpoint, params={}, opts={})
    url = @api_url + endpoint

    case method.to_s.downcase.to_sym
    # These methods don't have a request body
    when :get, :head, :delete
        # Make params into GET parameters
        url += "#{URI.parse(url).query ? '&' : '?'}#{Util.uri_encode(params)}" if params && params.any?
        payload = nil
    # Otherwise, encode request body to JSON
    else
        payload = params.to_json
    end

    begin
        response = RestClient::Request.execute(
            :method => method,
            :url => url,
            :headers => buildHeaders(opts),
            :payload => payload,
            :open_timeout => OpenTimeout,
            :timeout => ReadTimeout
        )
    rescue RestClient::Exception => e
        if e.response
            handle_api_error(e.response)
        else
            handle_network_error(e)
        end
    end

    parse(response)
end