Class: ShopifyAPI::Base
- Inherits:
-
ActiveResource::Base
- Object
- ActiveResource::Base
- ShopifyAPI::Base
show all
- Extended by:
- Countable
- Defined in:
- lib/shopify_api/resources/base.rb
Direct Known Subclasses
AbandonedCheckout, AccessScope, AccessToken, Address, Announcement, ApiPermission, ApplicationCharge, ApplicationCredit, Article, Asset, BillingAddress, Blog, CarrierService, Cart, Checkout, Collect, CollectionListing, CollectionPublication, Comment, Country, Currency, CustomCollection, Customer, CustomerInvite, CustomerSavedSearch, DiscountCode, DraftOrder, DraftOrderInvoice, Event, Fulfillment, FulfillmentEvent, FulfillmentRequest, FulfillmentService, GiftCard, Image, InventoryItem, InventoryLevel, LineItem, LineItem::Property, Location, MarketingEvent, Metafield, NoteAttribute, Option, Order, Order::ClientDetails, OrderRisk, Page, Payment, PaymentDetails, Policy, PriceRule, Product, ProductListing, ProductPublication, Province, Publication, Receipt, RecurringApplicationCharge, Redirect, Refund, Report, ResourceFeedback, Rule, ScriptTag, ShippingAddress, ShippingLine, ShippingRate, ShippingZone, Shop, SmartCollection, StorefrontAccessToken, TaxLine, TaxService, TenderTransaction, Theme, Transaction, UsageCharge, User, Variant, Webhook
Defined Under Namespace
Classes: InvalidSessionError
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Countable
count
Class Method Details
.activate_session(session) ⇒ Object
56
57
58
59
60
61
|
# File 'lib/shopify_api/resources/base.rb', line 56
def activate_session(session)
raise InvalidSessionError.new("Session cannot be nil") if session.nil?
self.site = session.site
self..merge!('X-Shopify-Access-Token' => session.token)
self.api_version = session.api_version
end
|
.api_version ⇒ Object
71
72
73
74
75
76
77
|
# File 'lib/shopify_api/resources/base.rb', line 71
def api_version
if _api_version_defined?
_api_version
elsif superclass != Object && superclass.site
superclass.api_version.dup.freeze
end
end
|
.api_version=(version) ⇒ Object
79
80
81
|
# File 'lib/shopify_api/resources/base.rb', line 79
def api_version=(version)
self._api_version = version.nil? ? nil : ApiVersion.coerce_to_version(version)
end
|
.clear_session ⇒ Object
63
64
65
66
67
68
69
|
# File 'lib/shopify_api/resources/base.rb', line 63
def clear_session
self.site = nil
self.password = nil
self.user = nil
self.api_version = nil
self..delete('X-Shopify-Access-Token')
end
|
.init_prefix(resource) ⇒ Object
128
129
130
|
# File 'lib/shopify_api/resources/base.rb', line 128
def init_prefix(resource)
init_prefix_explicit(resource.to_s.pluralize, "#{resource}_id")
end
|
.init_prefix_explicit(resource_type, resource_id) ⇒ Object
132
133
134
135
136
137
138
|
# File 'lib/shopify_api/resources/base.rb', line 132
def init_prefix_explicit(resource_type, resource_id)
self.resource_prefix = "#{resource_type}/:#{resource_id}/"
define_method resource_id.to_sym do
@prefix_options[resource_id]
end
end
|
.prefix(options = {}) ⇒ Object
83
84
85
|
# File 'lib/shopify_api/resources/base.rb', line 83
def prefix(options = {})
api_version.construct_api_path(resource_prefix(options))
end
|
.prefix=(value) ⇒ Object
Also known as:
set_prefix
114
115
116
117
118
119
120
121
122
123
124
|
# File 'lib/shopify_api/resources/base.rb', line 114
def prefix=(value)
if value.start_with?('/admin')
raise ArgumentError, "'#{value}' can no longer start /admin/. Change to using resource_prefix="
end
warn(
'[DEPRECATED] ShopifyAPI::Base#prefix= is deprecated and will be removed in a future version. ' \
'Use `self.resource_prefix=` instead.'
)
self.resource_prefix = value
end
|
.prefix_source ⇒ Object
87
88
89
|
# File 'lib/shopify_api/resources/base.rb', line 87
def prefix_source
''
end
|
.resource_prefix(_options = {}) ⇒ Object
91
92
93
|
# File 'lib/shopify_api/resources/base.rb', line 91
def resource_prefix(_options = {})
''
end
|
.resource_prefix=(value) ⇒ Object
Sets the prefix for a resource’s nested URL (e.g., prefix/collectionname/1.json
). Default value is site.path
.
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
# File 'lib/shopify_api/resources/base.rb', line 97
def resource_prefix=(value)
@prefix_parameters = nil
resource_prefix_call = value.gsub(/:\w+/) { |key| "\#{URI.parser.escape options[#{key}].to_s}" }
silence_warnings do
instance_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
def prefix_source() "#{value}" end
def resource_prefix(options={}) "#{resource_prefix_call}" end
RUBY_EVAL
end
rescue => e
logger&.error("Couldn't set prefix: #{e}\n #{code}")
raise
end
|
Instance Method Details
#as_json(options = nil) ⇒ Object
21
22
23
24
25
26
27
28
29
|
# File 'lib/shopify_api/resources/base.rb', line 21
def as_json(options = nil)
root = options[:root] if options.try(:key?, :root)
if include_root_in_json
root = self.class.model_name.element if root == true
{ root => serializable_hash(options) }
else
serializable_hash(options)
end
end
|
#encode(options = {}) ⇒ Object
14
15
16
17
18
19
|
# File 'lib/shopify_api/resources/base.rb', line 14
def encode(options = {})
same = dup
same.attributes = {self.class.element_name => same.attributes} if self.class.format.extension == 'json'
same.send("to_#{self.class.format.extension}", options)
end
|
35
36
37
38
39
40
41
42
43
|
# File 'lib/shopify_api/resources/base.rb', line 35
def
if
elsif superclass != Object && superclass.
superclass.
else
||= {}
end
end
|
#persisted? ⇒ Boolean
141
142
143
|
# File 'lib/shopify_api/resources/base.rb', line 141
def persisted?
!id.nil?
end
|