Module: Shipstation

Defined in:
lib/shipstation.rb,
lib/shipstation/tag.rb,
lib/shipstation/order.rb,
lib/shipstation/store.rb,
lib/shipstation/carrier.rb,
lib/shipstation/product.rb,
lib/shipstation/version.rb,
lib/shipstation/webhook.rb,
lib/shipstation/customer.rb,
lib/shipstation/shipment.rb,
lib/shipstation/warehouse.rb,
lib/shipstation/fulfillment.rb,
lib/shipstation/api_resource.rb,
lib/shipstation/api_operations/list.rb,
lib/shipstation/api_operations/create.rb,
lib/shipstation/api_operations/delete.rb,
lib/shipstation/api_operations/update.rb,
lib/shipstation/api_operations/retrieve.rb,
lib/shipstation/api_operations/shipment.rb

Defined Under Namespace

Modules: APIOperations Classes: ApiRequestError, ApiResource, AuthenticationError, Carrier, ConfigurationError, Customer, Fulfillment, Order, Product, Shipment, ShipstationError, Store, Tag, Warehouse, Webhook

Constant Summary collapse

API_BASE =
"https://ssapi.shipstation.com/"
VERSION =
"0.26"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.passwordObject



53
54
55
56
57
# File 'lib/shipstation.rb', line 53

def password
  defined? @password and @password or raise(
    ConfigurationError, "Shipstation password not configured"
  )
end

.usernameObject



45
46
47
48
49
# File 'lib/shipstation.rb', line 45

def username
  defined? @username and @username or raise(
    ConfigurationError, "Shipstation username not configured"
  )
end

Class Method Details

.datetime_format(datetime) ⇒ Object



93
94
95
# File 'lib/shipstation.rb', line 93

def datetime_format datetime
  datetime.strftime("%Y-%m-%d %T")
end

.request(method, resource, params = {}) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/shipstation.rb', line 61

def request method, resource, params = {}
  ss_username = params[:username] || Shipstation.username
  ss_password = params[:password] || Shipstation.password

  params.except!(:username, :password)

  defined? method or raise(
    ArgumentError, "Request method has not been specified"
  )
  defined? resource or raise(
    ArgumentError, "Request resource has not been specified"
  )
  if method == :get
    headers = {:accept => :json, content_type: :json}.merge({params: params})
    payload = nil
  else
    headers = {:accept => :json, content_type: :json}
    payload = params
  end
  RestClient::Request.new({
                            method: method,
                            url: API_BASE + resource,
                            user: ss_username,
                            password: ss_password,
                            payload: payload ? payload.to_json : nil,
                            headers: headers
                          }).execute do |response, request, result|
    str_response = response.to_str
    str_response.blank? ? '' : JSON.parse(str_response)
  end
end