Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Split shopify_api.rb into separate files
- Loading branch information
1 parent
4ffdb62
commit fa8f791
Showing
35 changed files
with
558 additions
and
520 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
module ShopifyAPI | ||
class ApplicationCharge < Base | ||
undef_method :test | ||
|
||
def activate | ||
load_attributes_from_response(post(:activate)) | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
module ShopifyAPI | ||
class Article < Base | ||
self.prefix = "/admin/blogs/:blog_id/" | ||
|
||
def comments | ||
Comment.find(:all, :params => { :article_id => id }) | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
module ShopifyAPI | ||
# Assets represent the files that comprise your theme. | ||
# There are different buckets which hold different kinds | ||
# of assets, each corresponding to one of the folders | ||
# within a theme's zip file: "layout", "templates", | ||
# "snippets", "assets", and "config". The full key of an | ||
# asset always starts with the bucket name, and the path | ||
# separator is a forward slash, like layout/theme.liquid | ||
# or assets/bg-body.gif. | ||
# | ||
# Initialize with a key: | ||
# asset = ShopifyAPI::Asset.new(:key => 'assets/special.css', :theme_id => 12345) | ||
# | ||
# Find by key: | ||
# asset = ShopifyAPI::Asset.find('assets/image.png', :params => {:theme_id => 12345}) | ||
# | ||
# Get the text or binary value: | ||
# asset.value # decodes from attachment attribute if necessary | ||
# | ||
# You can provide new data for assets in a few different ways: | ||
# | ||
# * assign text data for the value directly: | ||
# asset.value = "div.special {color:red;}" | ||
# | ||
# * provide binary data for the value: | ||
# asset.attach(File.read('image.png')) | ||
# | ||
# * set a URL from which Shopify will fetch the value: | ||
# asset.src = "http://mysite.com/image.png" | ||
# | ||
# * set a source key of another of your assets from which | ||
# the value will be copied: | ||
# asset.source_key = "assets/another_image.png" | ||
class Asset < Base | ||
self.primary_key = 'key' | ||
self.prefix = "/admin/themes/:theme_id/" | ||
|
||
def self.prefix(options={}) | ||
options[:theme_id].nil? ? "/admin/" : "/admin/themes/#{options[:theme_id]}/" | ||
end | ||
|
||
def self.element_path(id, prefix_options = {}, query_options = nil) #:nodoc: | ||
prefix_options, query_options = split_options(prefix_options) if query_options.nil? | ||
"#{prefix(prefix_options)}#{collection_name}.#{format.extension}#{query_string(query_options)}" | ||
end | ||
|
||
# find an asset by key: | ||
# ShopifyAPI::Asset.find('layout/theme.liquid', :params => {:theme_id => 99}) | ||
def self.find(*args) | ||
if args[0].is_a?(Symbol) | ||
super | ||
else | ||
params = {:asset => {:key => args[0]}} | ||
params = params.merge(args[1][:params]) if args[1] && args[1][:params] | ||
path_prefix = params[:theme_id] ? "/admin/themes/#{params[:theme_id]}" : "/admin" | ||
find(:one, :from => "#{path_prefix}/assets.#{format.extension}", :params => params) | ||
end | ||
end | ||
|
||
# For text assets, Shopify returns the data in the 'value' attribute. | ||
# For binary assets, the data is base-64-encoded and returned in the | ||
# 'attachment' attribute. This accessor returns the data in both cases. | ||
def value | ||
attributes['value'] || | ||
(attributes['attachment'] ? Base64.decode64(attributes['attachment']) : nil) | ||
end | ||
|
||
def attach(data) | ||
self.attachment = Base64.encode64(data) | ||
end | ||
|
||
def destroy | ||
connection.delete(element_path(prefix_options.merge(:asset => {:key => key})), self.class.headers) | ||
end | ||
|
||
def new? | ||
false | ||
end | ||
|
||
def method_missing(method_symbol, *arguments) #:nodoc: | ||
if %w{value= attachment= src= source_key=}.include?(method_symbol) | ||
wipe_value_attributes | ||
end | ||
super | ||
end | ||
|
||
private | ||
|
||
def wipe_value_attributes | ||
%w{value attachment src source_key}.each do |attr| | ||
attributes.delete(attr) | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ShopifyAPI | ||
class BillingAddress < Base | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
module ShopifyAPI | ||
class Blog < Base | ||
def articles | ||
Article.find(:all, :params => { :blog_id => id }) | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
module ShopifyAPI | ||
# For adding/removing products from custom collections | ||
class Collect < Base | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
module ShopifyAPI | ||
class Comment < Base | ||
def remove; load_attributes_from_response(post(:remove, {}, only_id)); end | ||
def ham; load_attributes_from_response(post(:ham, {}, only_id)); end | ||
def spam; load_attributes_from_response(post(:spam, {}, only_id)); end | ||
def approve; load_attributes_from_response(post(:approve, {}, only_id)); end | ||
def restore; load_attributes_from_response(post(:restore, {}, only_id)); end | ||
def not_spam; load_attributes_from_response(post(:not_spam, {}, only_id)); end | ||
|
||
def only_id | ||
encode(:only => :id) | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ShopifyAPI | ||
class Country < Base | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
module ShopifyAPI | ||
# Custom collection | ||
# | ||
class CustomCollection < Base | ||
def products | ||
Product.find(:all, :params => {:collection_id => self.id}) | ||
end | ||
|
||
def add_product(product) | ||
Collect.create(:collection_id => self.id, :product_id => product.id) | ||
end | ||
|
||
def remove_product(product) | ||
collect = Collect.find(:first, :params => {:collection_id => self.id, :product_id => product.id}) | ||
collect.destroy if collect | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ShopifyAPI | ||
class Customer < Base | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ShopifyAPI | ||
class CustomerGroup < Base | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
module ShopifyAPI | ||
class Event < Base | ||
self.prefix = "/admin/:resource/:resource_id/" | ||
|
||
# Hack to allow both Shop and other Events in through the same AR class | ||
def self.prefix(options={}) | ||
options[:resource].nil? ? "/admin/" : "/admin/#{options[:resource]}/#{options[:resource_id]}/" | ||
end | ||
end | ||
|
||
module Events | ||
def events | ||
Event.find(:all, :params => {:resource => self.class.collection_name, :resource_id => id}) | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
module ShopifyAPI | ||
class Fulfillment < Base | ||
self.prefix = "/admin/orders/:order_id/" | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
module ShopifyAPI | ||
class Image < Base | ||
self.prefix = "/admin/products/:product_id/" | ||
|
||
# generate a method for each possible image variant | ||
[:pico, :icon, :thumb, :small, :compact, :medium, :large, :grande, :original].each do |m| | ||
reg_exp_match = "/\\1_#{m}.\\2" | ||
define_method(m) { src.gsub(/\/(.*)\.(\w{2,4})/, reg_exp_match) } | ||
end | ||
|
||
def attach_image(data, filename = nil) | ||
attributes['attachment'] = Base64.encode64(data) | ||
attributes['filename'] = filename unless filename.nil? | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ShopifyAPI | ||
class LineItem < Base | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
module ShopifyAPI | ||
module Metafields | ||
def metafields | ||
Metafield.find(:all, :params => {:resource => self.class.collection_name, :resource_id => id}) | ||
end | ||
|
||
def add_metafield(metafield) | ||
raise ArgumentError, "You can only add metafields to resource that has been saved" if new? | ||
|
||
metafield.prefix_options = { | ||
:resource => self.class.collection_name, | ||
:resource_id => id | ||
} | ||
metafield.save | ||
metafield | ||
end | ||
end | ||
|
||
class Metafield < Base | ||
self.prefix = "/admin/:resource/:resource_id/" | ||
|
||
# Hack to allow both Shop and other Metafields in through the same AR class | ||
def self.prefix(options={}) | ||
options[:resource].nil? ? "/admin/" : "/admin/#{options[:resource]}/#{options[:resource_id]}/" | ||
end | ||
|
||
def value | ||
return if attributes["value"].nil? | ||
attributes["value_type"] == "integer" ? attributes["value"].to_i : attributes["value"] | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ShopifyAPI | ||
class NoteAttribute < Base | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
module ShopifyAPI | ||
class Order < Base | ||
def close; load_attributes_from_response(post(:close, {}, only_id)); end | ||
def open; load_attributes_from_response(post(:open, {}, only_id)); end | ||
|
||
def cancel(options = {}) | ||
load_attributes_from_response(post(:cancel, options, only_id)) | ||
end | ||
|
||
def transactions | ||
Transaction.find(:all, :params => { :order_id => id }) | ||
end | ||
|
||
def capture(amount = "") | ||
Transaction.create(:amount => amount, :kind => "capture", :order_id => id) | ||
end | ||
|
||
def only_id | ||
encode(:only => :id, :include => [], :methods => [], :fields => []) | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ShopifyAPI | ||
class Page < Base | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
module ShopifyAPI | ||
class Product < Base | ||
|
||
# Share all items of this store with the | ||
# shopify marketplace | ||
def self.share; post :share; end | ||
def self.unshare; delete :share; end | ||
|
||
# compute the price range | ||
def price_range | ||
prices = variants.collect(&:price) | ||
format = "%0.2f" | ||
if prices.min != prices.max | ||
"#{format % prices.min} - #{format % prices.max}" | ||
else | ||
format % prices.min | ||
end | ||
end | ||
|
||
def collections | ||
CustomCollection.find(:all, :params => {:product_id => self.id}) | ||
end | ||
|
||
def smart_collections | ||
SmartCollection.find(:all, :params => {:product_id => self.id}) | ||
end | ||
|
||
def add_to_collection(collection) | ||
collection.add_product(self) | ||
end | ||
|
||
def remove_from_collection(collection) | ||
collection.remove_product(self) | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ShopifyAPI | ||
class ProductSearchEngine < Base | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
module ShopifyAPI | ||
class Province < Base | ||
self.prefix = "/admin/countries/:country_id/" | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
module ShopifyAPI | ||
class RecurringApplicationCharge < Base | ||
undef_method :test | ||
|
||
def self.current | ||
find(:all).find{|charge| charge.status == 'active'} | ||
end | ||
|
||
def cancel | ||
load_attributes_from_response(self.destroy) | ||
end | ||
|
||
def activate | ||
load_attributes_from_response(post(:activate)) | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ShopifyAPI | ||
class Redirect < Base | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module ShopifyAPI | ||
class ScriptTag < Base | ||
end | ||
end |
Oops, something went wrong.