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, CustomField, Customer, CustomerType, 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
Defined Under Namespace
Classes: RequestInfo
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
-
#after_request ⇒ Object
Returns the value of attribute after_request.
-
#around_request ⇒ Object
Returns the value of attribute around_request.
-
#base_uri ⇒ Object
readonly
Returns the value of attribute base_uri.
-
#before_request ⇒ Object
Returns the value of attribute before_request.
-
#company_id ⇒ Object
Returns the value of attribute company_id.
-
#last_response_intuit_tid ⇒ Object
readonly
Returns the value of attribute last_response_intuit_tid.
-
#last_response_xml ⇒ Object
readonly
Returns the value of attribute last_response_xml.
-
#oauth ⇒ Object
Returns the value of attribute oauth.
Attributes included from Util::Logging
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
-
#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
#condense_logs?, #log?, #log_multiple, #log_xml
Constructor Details
#initialize(attributes = {}) ⇒ BaseService
Returns a new instance of BaseService.
25 26 27 28 29 |
# File 'lib/quickbooks/service/base_service.rb', line 25 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
#after_request ⇒ Object
Returns the value of attribute after_request.
14 15 16 |
# File 'lib/quickbooks/service/base_service.rb', line 14 def after_request @after_request end |
#around_request ⇒ Object
Returns the value of attribute around_request.
13 14 15 |
# File 'lib/quickbooks/service/base_service.rb', line 13 def around_request @around_request end |
#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 |
#before_request ⇒ Object
Returns the value of attribute before_request.
12 13 14 |
# File 'lib/quickbooks/service/base_service.rb', line 12 def before_request @before_request 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_intuit_tid ⇒ Object (readonly)
Returns the value of attribute last_response_intuit_tid.
11 12 13 |
# File 'lib/quickbooks/service/base_service.rb', line 11 def last_response_intuit_tid @last_response_intuit_tid end |
#last_response_xml ⇒ Object (readonly)
Returns the value of attribute last_response_xml.
10 11 12 |
# File 'lib/quickbooks/service/base_service.rb', line 10 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
31 32 33 34 |
# File 'lib/quickbooks/service/base_service.rb', line 31 def access_token=(token) @oauth = token rebuild_connection! end |
#default_model_query ⇒ Object
77 78 79 |
# File 'lib/quickbooks/service/base_service.rb', line 77 def default_model_query "SELECT * FROM #{self.class.name.split("::").last}" end |
#is_json? ⇒ Boolean
69 70 71 |
# File 'lib/quickbooks/service/base_service.rb', line 69 def is_json? self.class::HTTP_CONTENT_TYPE == "application/json" end |
#is_pdf? ⇒ Boolean
73 74 75 |
# File 'lib/quickbooks/service/base_service.rb', line 73 def is_pdf? self.class::HTTP_CONTENT_TYPE == "application/pdf" end |
#realm_id=(company_id) ⇒ Object
realm & company are synonymous
41 42 43 |
# File 'lib/quickbooks/service/base_service.rb', line 41 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.
51 52 53 54 55 56 57 58 |
# File 'lib/quickbooks/service/base_service.rb', line 51 def rebuild_connection! @oauth.client.connection = Faraday.new do |f| f.request :multipart f.request :gzip f.request :url_encoded f.adapter ::Quickbooks.http_adapter end end |
#url_for_base ⇒ Object
64 65 66 67 |
# File 'lib/quickbooks/service/base_service.rb', line 64 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
81 82 83 84 85 86 |
# File 'lib/quickbooks/service/base_service.rb', line 81 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
60 61 62 |
# File 'lib/quickbooks/service/base_service.rb', line 60 def url_for_resource(resource) "#{url_for_base}/#{resource}" end |