Class: Quickbooks::Service::BaseService
- Inherits:
-
Object
- Object
- Quickbooks::Service::BaseService
- Includes:
- ServiceCrud, Util::Logging
- Defined in:
- lib/quickbooks/service/base_service.rb
Direct Known Subclasses
AccessToken, Account, Attachable, BaseServiceJSON, Batch, Bill, BillPayment, Budget, ChangeDataCapture, ChangeService, Class, CompanyCurrency, CompanyInfo, CreditMemo, Customer, Department, Deposit, Employee, Estimate, ExchangeRate, Invoice, Item, JournalEntry, Payment, PaymentMethod, Preferences, Purchase, PurchaseOrder, RefundReceipt, Reports, SalesReceipt, TaxAgency, TaxCode, TaxRate, Term, TimeActivity, Transfer, Upload, Vendor, VendorCredit
Constant Summary collapse
- XML_NS =
%{xmlns="http://schema.intuit.com/finance/v3"}
- HTTP_CONTENT_TYPE =
'application/xml'
- HTTP_ACCEPT =
'application/xml'
- HTTP_ACCEPT_ENCODING =
'gzip, deflate'
- BASE_DOMAIN =
'quickbooks.api.intuit.com'
- SANDBOX_DOMAIN =
'sandbox-quickbooks.api.intuit.com'
Instance Attribute Summary collapse
-
#base_uri ⇒ Object
readonly
Returns the value of attribute base_uri.
-
#company_id ⇒ Object
Returns the value of attribute company_id.
-
#last_response_body ⇒ Object
readonly
Returns the value of attribute last_response_body.
-
#last_response_xml ⇒ Object
readonly
Returns the value of attribute last_response_xml.
-
#oauth ⇒ Object
Returns the value of attribute oauth.
Instance Method Summary collapse
- #access_token=(token) ⇒ Object
- #default_model_query ⇒ Object
-
#initialize(attributes = {}) ⇒ BaseService
constructor
A new instance of BaseService.
- #is_json? ⇒ Boolean
- #is_pdf? ⇒ Boolean
- #oauth_v1? ⇒ Boolean
- #oauth_v2? ⇒ Boolean
-
#realm_id=(company_id) ⇒ Object
realm & company are synonymous.
-
#rebuild_connection! ⇒ Object
- OAuth2
-
The default Faraday connection does not have gzip or multipart support.
- #url_for_base ⇒ Object
- #url_for_query(query = nil, start_position = 1, max_results = 20, options = {}) ⇒ Object
- #url_for_resource(resource) ⇒ Object
Methods included from ServiceCrud
#all, #create, #delete, #delete_by_query_string, #exists?, #fetch_by_id, #find_by, #query, #query_in_batches
Methods included from Util::Logging
Constructor Details
#initialize(attributes = {}) ⇒ BaseService
Returns a new instance of BaseService.
20 21 22 23 24 |
# File 'lib/quickbooks/service/base_service.rb', line 20 def initialize(attributes = {}) domain = Quickbooks.sandbox_mode ? SANDBOX_DOMAIN : BASE_DOMAIN @base_uri = "https://#{domain}/v3/company" attributes.each {|key, value| public_send("#{key}=", value) } end |
Instance Attribute Details
#base_uri ⇒ Object (readonly)
Returns the value of attribute base_uri.
9 10 11 |
# File 'lib/quickbooks/service/base_service.rb', line 9 def base_uri @base_uri end |
#company_id ⇒ Object
Returns the value of attribute company_id.
7 8 9 |
# File 'lib/quickbooks/service/base_service.rb', line 7 def company_id @company_id end |
#last_response_body ⇒ Object (readonly)
Returns the value of attribute last_response_body.
10 11 12 |
# File 'lib/quickbooks/service/base_service.rb', line 10 def last_response_body @last_response_body end |
#last_response_xml ⇒ Object (readonly)
Returns the value of attribute last_response_xml.
11 12 13 |
# File 'lib/quickbooks/service/base_service.rb', line 11 def last_response_xml @last_response_xml end |
#oauth ⇒ Object
Returns the value of attribute oauth.
8 9 10 |
# File 'lib/quickbooks/service/base_service.rb', line 8 def oauth @oauth end |
Instance Method Details
#access_token=(token) ⇒ Object
26 27 28 29 |
# File 'lib/quickbooks/service/base_service.rb', line 26 def access_token=(token) @oauth = token rebuild_connection! end |
#default_model_query ⇒ Object
78 79 80 |
# File 'lib/quickbooks/service/base_service.rb', line 78 def default_model_query "SELECT * FROM #{self.class.name.split("::").last}" end |
#is_json? ⇒ Boolean
70 71 72 |
# File 'lib/quickbooks/service/base_service.rb', line 70 def is_json? self.class::HTTP_CONTENT_TYPE == "application/json" end |
#is_pdf? ⇒ Boolean
74 75 76 |
# File 'lib/quickbooks/service/base_service.rb', line 74 def is_pdf? self.class::HTTP_CONTENT_TYPE == "application/pdf" end |
#oauth_v1? ⇒ Boolean
40 41 42 |
# File 'lib/quickbooks/service/base_service.rb', line 40 def oauth_v1? @oauth.is_a? OAuth::AccessToken end |
#oauth_v2? ⇒ Boolean
44 45 46 |
# File 'lib/quickbooks/service/base_service.rb', line 44 def oauth_v2? @oauth.is_a? OAuth2::AccessToken end |
#realm_id=(company_id) ⇒ Object
realm & company are synonymous
36 37 38 |
# File 'lib/quickbooks/service/base_service.rb', line 36 def realm_id=(company_id) @company_id = company_id end |
#rebuild_connection! ⇒ Object
- OAuth2
-
The default Faraday connection does not have gzip or multipart support.
We need to reset the existing connection and build a new one.
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/quickbooks/service/base_service.rb', line 50 def rebuild_connection! return unless oauth_v2? @oauth.client.connection = nil @oauth.client.connection.build do |builder| builder.use :gzip builder.request :multipart builder.request :url_encoded builder.adapter :net_http end end |
#url_for_base ⇒ Object
65 66 67 68 |
# File 'lib/quickbooks/service/base_service.rb', line 65 def url_for_base raise MissingRealmError.new unless @company_id "#{@base_uri}/#{@company_id}" end |
#url_for_query(query = nil, start_position = 1, max_results = 20, options = {}) ⇒ Object
82 83 84 85 86 87 |
# File 'lib/quickbooks/service/base_service.rb', line 82 def url_for_query(query = nil, start_position = 1, max_results = 20, = {}) query ||= default_model_query query = "#{query} STARTPOSITION #{start_position} MAXRESULTS #{max_results}" "#{url_for_base}/query?query=#{CGI.escape(query)}" end |
#url_for_resource(resource) ⇒ Object
61 62 63 |
# File 'lib/quickbooks/service/base_service.rb', line 61 def url_for_resource(resource) "#{url_for_base}/#{resource}" end |