class ShipStation::Collection
Attributes
client[RW]
klass[RW]
namespace[RW]
Public Class Methods
new(client, klass, namespace)
click to toggle source
# File lib/shipstation/collection.rb, line 6 def initialize(client, klass, namespace) @client = client @klass = klass @namespace = namespace end
Public Instance Methods
all()
click to toggle source
# File lib/shipstation/collection.rb, line 18 def all @client.send("#{@klass}") results = @client.execute results.map{|rrr| hashie_object(rrr) } end
count()
click to toggle source
# File lib/shipstation/collection.rb, line 66 def count @client.send("#{@klass}").send("count") @client.execute end
create(attrs={})
click to toggle source
client.order.create(OrderNumber: “HAHA1111”, OrderStatusID: 2)
# File lib/shipstation/collection.rb, line 72 def create(attrs={}) klazz = "#{@namespace}::#{@klass.singularize}".constantize.new attrs.each do |key, val| klazz.send("#{key.to_s}=", val) end @client.send("AddTo#{@klass}", klazz) result = @client.send("save_changes").first hashie_object(result) end
delete(id)
click to toggle source
client.orders.delete(123)
# File lib/shipstation/collection.rb, line 94 def delete(id) update(id, {active: false}) end
destroy(id)
click to toggle source
client.orders.destroy(123)
# File lib/shipstation/collection.rb, line 99 def destroy(id) @client.send("#{@klass}", id) klazz = @client.execute.last @client.send("delete_object", klazz) @client.send("save_changes") end
find(id)
click to toggle source
# File lib/shipstation/collection.rb, line 12 def find(id) @client.send("#{@klass}", id) result = @client.execute.first hashie_object(result) end
first()
click to toggle source
# File lib/shipstation/collection.rb, line 54 def first @client.send("#{@klass}").send("order_by", "CreateDate asc").send("top", 1) result = @client.execute.first hashie_object(result) end
last()
click to toggle source
# File lib/shipstation/collection.rb, line 60 def last @client.send("#{@klass}").send("order_by", "CreateDate desc").send("top", 1) result = @client.execute.first hashie_object(result) end
update(id, attrs={})
click to toggle source
client.orders.update(43478396, OrderNumber: “HAHA1111”)
# File lib/shipstation/collection.rb, line 83 def update(id, attrs={}) @client.send("#{@klass}", id) klazz = @client.execute.last attrs.each do |key, val| klazz.send("#{key.to_s}=", val) end @client.send("update_object", klazz) @client.send("save_changes") end
where(query)
click to toggle source
filter msdn.microsoft.com/en-us/library/ff478141.aspx www.odata.org/documentation/odata-version-3-0/odata-version-3-0-core-protocol docs.oasis-open.org/odata/odata/v4.0/os/part1-protocol/odata-v4.0-os-part1-protocol.html#_Built-in_Query_Functions
# File lib/shipstation/collection.rb, line 28 def where(query) if query.is_a?(Hash) query_string = "" query_array = [] query.each do |key, val| # shipstation_style_attribute = attribute.to_s.classify.gsub(/Id/, 'ID') if val.is_a?(Integer) filter_string = "#{key} eq #{val}" elsif val.is_a?(String) filter_string = "#{key} eq '#{val}'" else raise ShipStation::QueryError, "Query value incorrect." end query_array << filter_string end query_string = query_array.join(' and ') elsif query.is_a?(String) query_string = query else raise ShipStation::QueryError, "Query incorrect." end @client.send("#{@klass}").filter("#{query_string}") results = @client.execute results.map{|rrr| hashie_object(rrr) } end
Private Instance Methods
hashie_object(result)
click to toggle source
# File lib/shipstation/collection.rb, line 108 def hashie_object(result) return if result.nil? result_hash = JSON.parse(result.to_json) Hashie::Rash.new(result_hash) end