spree_api 1.2.5 → 1.3.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/app/controllers/spree/api/addresses_controller.rb +17 -0
- data/app/controllers/spree/api/base_controller.rb +111 -0
- data/app/controllers/spree/api/countries_controller.rb +14 -0
- data/app/controllers/spree/api/images_controller.rb +29 -0
- data/app/controllers/spree/api/line_items_controller.rb +38 -0
- data/app/controllers/spree/api/orders_controller.rb +81 -0
- data/app/controllers/spree/api/payments_controller.rb +75 -0
- data/app/controllers/spree/api/product_properties_controller.rb +61 -0
- data/app/controllers/spree/api/products_controller.rb +45 -0
- data/app/controllers/spree/api/return_authorizations_controller.rb +50 -0
- data/app/controllers/spree/api/shipments_controller.rb +41 -0
- data/app/controllers/spree/api/taxonomies_controller.rb +46 -0
- data/app/controllers/spree/api/taxons_controller.rb +49 -0
- data/app/controllers/spree/api/variants_controller.rb +71 -0
- data/app/controllers/spree/api/zones_controller.rb +43 -0
- data/app/helpers/spree/api/api_helpers.rb +0 -5
- data/app/overrides/api_admin_user_edit_form.rb +1 -1
- data/app/views/spree/admin/users/_api_fields.html.erb +26 -14
- data/app/views/spree/api/{v1/addresses/show.rabl → addresses/show.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/countries/index.rabl → countries/index.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/countries/show.rabl → countries/show.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/errors/gateway_error.rabl → errors/gateway_error.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/errors/invalid_api_key.rabl → errors/invalid_api_key.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/errors/invalid_resource.rabl → errors/invalid_resource.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/errors/must_specify_api_key.rabl → errors/must_specify_api_key.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/errors/not_found.rabl → errors/not_found.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/errors/unauthorized.rabl → errors/unauthorized.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/images/show.rabl → images/show.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/line_items/new.rabl → line_items/new.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/line_items/show.rabl → line_items/show.v1.rabl} +1 -1
- data/app/views/spree/api/{v1/orders/address.rabl → orders/address.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/orders/canceled.rabl → orders/canceled.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/orders/cart.rabl → orders/cart.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/orders/complete.rabl → orders/complete.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/orders/could_not_transition.rabl → orders/could_not_transition.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/orders/delivery.rabl → orders/delivery.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/orders/index.rabl → orders/index.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/orders/invalid_shipping_method.rabl → orders/invalid_shipping_method.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/orders/payment.rabl → orders/payment.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/orders/show.rabl → orders/show.v1.rabl} +6 -6
- data/app/views/spree/api/{v1/payments/credit_over_limit.rabl → payments/credit_over_limit.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/payments/index.rabl → payments/index.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/payments/new.rabl → payments/new.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/payments/show.rabl → payments/show.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/product_properties/index.rabl → product_properties/index.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/product_properties/new.rabl → product_properties/new.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/product_properties/show.rabl → product_properties/show.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/products/index.rabl → products/index.v1.rabl} +1 -2
- data/app/views/spree/api/{v1/products/new.rabl → products/new.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/products/product.rabl → products/product.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/products/show.rabl → products/show.v1.rabl} +1 -1
- data/app/views/spree/api/{v1/return_authorizations/index.rabl → return_authorizations/index.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/return_authorizations/new.rabl → return_authorizations/new.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/return_authorizations/show.rabl → return_authorizations/show.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/shipments/cannot_ready_shipment.rabl → shipments/cannot_ready_shipment.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/shipments/show.rabl → shipments/show.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/taxonomies/index.rabl → taxonomies/index.v1.rabl} +1 -1
- data/app/views/spree/api/{v1/taxonomies/nested.rabl → taxonomies/nested.v1.rabl} +1 -1
- data/app/views/spree/api/{v1/taxonomies/new.rabl → taxonomies/new.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/taxonomies/show.rabl → taxonomies/show.v1.rabl} +1 -1
- data/app/views/spree/api/{v1/taxons/index.rabl → taxons/index.v1.rabl} +1 -1
- data/app/views/spree/api/{v1/taxons/new.rabl → taxons/new.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/taxons/show.rabl → taxons/show.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/taxons/taxons.rabl → taxons/taxons.v1.rabl} +1 -1
- data/app/views/spree/api/{v1/variants/index.rabl → variants/index.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/variants/new.rabl → variants/new.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/variants/show.rabl → variants/show.v1.rabl} +1 -1
- data/app/views/spree/api/{v1/variants/variant.rabl → variants/variant.v1.rabl} +0 -0
- data/app/views/spree/api/{v1/zones/index.rabl → zones/index.v1.rabl} +1 -1
- data/app/views/spree/api/{v1/zones/show.rabl → zones/show.v1.rabl} +0 -0
- data/config/initializers/metal_load_paths.rb +1 -1
- data/config/routes.rb +34 -37
- data/db/migrate/20120411123334_resize_api_key_field.rb +1 -1
- data/lib/spree/api/engine.rb +8 -1
- data/lib/spree_api.rb +1 -0
- data/spec/controllers/spree/api/{v1/addresses_controller_spec.rb → addresses_controller_spec.rb} +3 -3
- data/spec/controllers/spree/api/{v1/base_controller_spec.rb → base_controller_spec.rb} +2 -9
- data/spec/controllers/spree/api/{v1/countries_controller_spec.rb → countries_controller_spec.rb} +5 -5
- data/spec/controllers/spree/api/{v1/images_controller_spec.rb → images_controller_spec.rb} +1 -1
- data/spec/controllers/spree/api/{v1/line_items_controller_spec.rb → line_items_controller_spec.rb} +2 -2
- data/spec/controllers/spree/api/{v1/orders_controller_spec.rb → orders_controller_spec.rb} +7 -12
- data/spec/controllers/spree/api/{v1/payments_controller_spec.rb → payments_controller_spec.rb} +2 -2
- data/spec/controllers/spree/api/{v1/product_properties_controller_spec.rb → product_properties_controller_spec.rb} +2 -3
- data/spec/controllers/spree/api/{v1/products_controller_spec.rb → products_controller_spec.rb} +14 -7
- data/spec/controllers/spree/api/{v1/return_authorizations_controller_spec.rb → return_authorizations_controller_spec.rb} +4 -4
- data/spec/controllers/spree/api/{v1/shipments_controller_spec.rb → shipments_controller_spec.rb} +4 -9
- data/spec/controllers/spree/api/{v1/taxonomies_controller_spec.rb → taxonomies_controller_spec.rb} +11 -11
- data/spec/controllers/spree/api/{v1/taxons_controller_spec.rb → taxons_controller_spec.rb} +7 -7
- data/spec/controllers/spree/api/{v1/unauthenticated_products_controller_spec.rb → unauthenticated_products_controller_spec.rb} +1 -1
- data/spec/controllers/spree/api/{v1/variants_controller_spec.rb → variants_controller_spec.rb} +4 -5
- data/spec/controllers/spree/api/{v1/zones_controller_spec.rb → zones_controller_spec.rb} +7 -7
- data/spec/support/controller_hacks.rb +1 -1
- data/spec/support/have_attributes_matcher.rb +2 -2
- data/spree_api.gemspec +1 -0
- metadata +139 -115
- checksums.yaml +0 -7
- data/app/controllers/spree/api/v1/addresses_controller.rb +0 -19
- data/app/controllers/spree/api/v1/base_controller.rb +0 -111
- data/app/controllers/spree/api/v1/countries_controller.rb +0 -18
- data/app/controllers/spree/api/v1/images_controller.rb +0 -32
- data/app/controllers/spree/api/v1/inventory_units_controller.rb +0 -50
- data/app/controllers/spree/api/v1/line_items_controller.rb +0 -40
- data/app/controllers/spree/api/v1/orders_controller.rb +0 -83
- data/app/controllers/spree/api/v1/payments_controller.rb +0 -77
- data/app/controllers/spree/api/v1/product_properties_controller.rb +0 -64
- data/app/controllers/spree/api/v1/products_controller.rb +0 -47
- data/app/controllers/spree/api/v1/return_authorizations_controller.rb +0 -53
- data/app/controllers/spree/api/v1/shipments_controller.rb +0 -43
- data/app/controllers/spree/api/v1/taxonomies_controller.rb +0 -50
- data/app/controllers/spree/api/v1/taxons_controller.rb +0 -51
- data/app/controllers/spree/api/v1/variants_controller.rb +0 -74
- data/app/controllers/spree/api/v1/zones_controller.rb +0 -45
- data/app/views/spree/api/v1/inventory_units/show.rabl +0 -2
- data/spec/controllers/spree/api/v1/inventory_units_controller_spec.rb +0 -46
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 54f6dbb9f70a86f5a1de1ce03b891244b3b9710f
|
4
|
-
data.tar.gz: 7be3cb5a340625cb7739d941f79d20f769b03632
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 687d37cad06765fef369e378d961842981b2933821a262d6037f81e94cf471d23d1f4efa6d14a26285bad8dc1b24e1fe5f585a740678ed7f0c6b174a2011dd70
|
7
|
-
data.tar.gz: 6554da72d40fbd9222941c8e9d79162bd6e628fbe6e71dfbb6c7d434fa99ca46cce088a17fb50cdf731cbf8b4bdd550b738df0c6a941de4e670048e4263c69f2
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Spree
|
2
|
-
module Api
|
3
|
-
module V1
|
4
|
-
class AddressesController < Spree::Api::V1::BaseController
|
5
|
-
def show
|
6
|
-
@address = Address.find(params[:id])
|
7
|
-
authorize! :read, @address
|
8
|
-
end
|
9
|
-
|
10
|
-
def update
|
11
|
-
@address = Address.find(params[:id])
|
12
|
-
authorize! :read, @address
|
13
|
-
@address.update_attributes(params[:address])
|
14
|
-
render :show, :status => 200
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,111 +0,0 @@
|
|
1
|
-
module Spree
|
2
|
-
module Api
|
3
|
-
module V1
|
4
|
-
class BaseController < ActionController::Metal
|
5
|
-
include Spree::Api::ControllerSetup
|
6
|
-
|
7
|
-
attr_accessor :current_api_user
|
8
|
-
|
9
|
-
before_filter :set_content_type
|
10
|
-
before_filter :check_for_api_key, :if => :requires_authentication?
|
11
|
-
before_filter :authenticate_user
|
12
|
-
|
13
|
-
rescue_from Exception, :with => :error_during_processing
|
14
|
-
rescue_from CanCan::AccessDenied, :with => :unauthorized
|
15
|
-
rescue_from ActiveRecord::RecordNotFound, :with => :not_found
|
16
|
-
|
17
|
-
helper Spree::Api::ApiHelpers
|
18
|
-
|
19
|
-
def map_nested_attributes_keys(klass, attributes)
|
20
|
-
nested_keys = klass.nested_attributes_options.keys
|
21
|
-
attributes.inject({}) do |h, (k,v)|
|
22
|
-
key = nested_keys.include?(k.to_sym) ? "#{k}_attributes" : k
|
23
|
-
h[key] = v
|
24
|
-
h
|
25
|
-
end.with_indifferent_access
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def set_content_type
|
31
|
-
content_type = case params[:format]
|
32
|
-
when "json"
|
33
|
-
"application/json"
|
34
|
-
when "xml"
|
35
|
-
"text/xml"
|
36
|
-
end
|
37
|
-
headers["Content-Type"] = content_type
|
38
|
-
end
|
39
|
-
|
40
|
-
def check_for_api_key
|
41
|
-
render "spree/api/v1/errors/must_specify_api_key", :status => 401 and return if api_key.blank?
|
42
|
-
end
|
43
|
-
|
44
|
-
def authenticate_user
|
45
|
-
if requires_authentication? || api_key.present?
|
46
|
-
unless @current_api_user = Spree.user_class.find_by_spree_api_key(api_key.to_s)
|
47
|
-
render "spree/api/v1/errors/invalid_api_key", :status => 401 and return
|
48
|
-
end
|
49
|
-
else
|
50
|
-
# Effectively, an anonymous user
|
51
|
-
@current_api_user = Spree.user_class.new
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def unauthorized
|
56
|
-
render "spree/api/v1/errors/unauthorized", :status => 401 and return
|
57
|
-
end
|
58
|
-
|
59
|
-
def requires_authentication?
|
60
|
-
Spree::Api::Config[:requires_authentication]
|
61
|
-
end
|
62
|
-
|
63
|
-
def not_found
|
64
|
-
render "spree/api/v1/errors/not_found", :status => 404 and return
|
65
|
-
end
|
66
|
-
|
67
|
-
def error_during_processing(exception)
|
68
|
-
render :text => { :exception => exception.message }.to_json,
|
69
|
-
:status => 422 and return
|
70
|
-
end
|
71
|
-
|
72
|
-
def current_ability
|
73
|
-
Spree::Ability.new(current_api_user)
|
74
|
-
end
|
75
|
-
|
76
|
-
def invalid_resource!(resource)
|
77
|
-
@resource = resource
|
78
|
-
render "spree/api/v1/errors/invalid_resource", :status => 422
|
79
|
-
end
|
80
|
-
|
81
|
-
def api_key
|
82
|
-
request.headers["X-Spree-Token"] || params[:token]
|
83
|
-
end
|
84
|
-
helper_method :api_key
|
85
|
-
|
86
|
-
def find_product(id)
|
87
|
-
begin
|
88
|
-
product_scope.find_by_permalink!(id.to_s)
|
89
|
-
rescue ActiveRecord::RecordNotFound
|
90
|
-
product_scope.find(id)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
def product_scope
|
95
|
-
if current_api_user.has_spree_role?("admin")
|
96
|
-
scope = Product
|
97
|
-
unless params[:show_deleted]
|
98
|
-
scope = scope.not_deleted
|
99
|
-
end
|
100
|
-
else
|
101
|
-
scope = Product.active
|
102
|
-
end
|
103
|
-
|
104
|
-
scope.includes(:master)
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Spree
|
2
|
-
module Api
|
3
|
-
module V1
|
4
|
-
class CountriesController < Spree::Api::V1::BaseController
|
5
|
-
def index
|
6
|
-
@countries = Country.
|
7
|
-
ransack(params[:q]).result.
|
8
|
-
includes(:states).order('name ASC').
|
9
|
-
page(params[:page]).per(params[:per_page])
|
10
|
-
end
|
11
|
-
|
12
|
-
def show
|
13
|
-
@country = Country.find(params[:id])
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module Spree
|
2
|
-
module Api
|
3
|
-
module V1
|
4
|
-
class ImagesController < Spree::Api::V1::BaseController
|
5
|
-
def show
|
6
|
-
@image = Image.find(params[:id])
|
7
|
-
end
|
8
|
-
|
9
|
-
def create
|
10
|
-
authorize! :create, Image
|
11
|
-
@image = Image.create(params[:image])
|
12
|
-
render :show, :status => 201
|
13
|
-
end
|
14
|
-
|
15
|
-
def update
|
16
|
-
authorize! :update, Image
|
17
|
-
@image = Image.find(params[:id])
|
18
|
-
@image.update_attributes(params[:image])
|
19
|
-
render :show, :status => 200
|
20
|
-
end
|
21
|
-
|
22
|
-
def destroy
|
23
|
-
authorize! :delete, Image
|
24
|
-
@image = Image.find(params[:id])
|
25
|
-
@image.destroy
|
26
|
-
render :text => nil, :status => 204
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
module Spree
|
2
|
-
module Api
|
3
|
-
module V1
|
4
|
-
class InventoryUnitsController < Spree::Api::V1::BaseController
|
5
|
-
before_filter :prepare_event, :only => :update
|
6
|
-
|
7
|
-
def show
|
8
|
-
@inventory_unit = inventory_unit
|
9
|
-
end
|
10
|
-
|
11
|
-
def update
|
12
|
-
authorize! :update, Order
|
13
|
-
|
14
|
-
inventory_unit.transaction do
|
15
|
-
if inventory_unit.update_attributes(params[:inventory_unit])
|
16
|
-
fire
|
17
|
-
render :show, :status => 200
|
18
|
-
else
|
19
|
-
invalid_resource!(inventory_unit)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def inventory_unit
|
27
|
-
@inventory_unit ||= InventoryUnit.find(params[:id])
|
28
|
-
end
|
29
|
-
|
30
|
-
def prepare_event
|
31
|
-
return unless @event = params[:fire]
|
32
|
-
|
33
|
-
can_event = "can_#{@event}?"
|
34
|
-
|
35
|
-
unless inventory_unit.respond_to?(can_event) &&
|
36
|
-
inventory_unit.send(can_event)
|
37
|
-
render :text => { :exception => "cannot transition to #{@event}" }.to_json,
|
38
|
-
:status => 200
|
39
|
-
false
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def fire
|
44
|
-
inventory_unit.send("#{@event}!") if @event
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
module Spree
|
2
|
-
module Api
|
3
|
-
module V1
|
4
|
-
class LineItemsController < Spree::Api::V1::BaseController
|
5
|
-
def create
|
6
|
-
authorize! :read, order
|
7
|
-
@line_item = order.line_items.build(params[:line_item], :as => :api)
|
8
|
-
if @line_item.save
|
9
|
-
render :show, :status => 201
|
10
|
-
else
|
11
|
-
invalid_resource!(@line_item)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def update
|
16
|
-
authorize! :read, order
|
17
|
-
@line_item = order.line_items.find(params[:id])
|
18
|
-
if @line_item.update_attributes(params[:line_item])
|
19
|
-
render :show
|
20
|
-
else
|
21
|
-
invalid_resource!(@line_item)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def destroy
|
26
|
-
authorize! :read, order
|
27
|
-
@line_item = order.line_items.find(params[:id])
|
28
|
-
@line_item.destroy
|
29
|
-
render :text => nil, :status => 204
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def order
|
35
|
-
@order ||= Order.find_by_number!(params[:order_id])
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,83 +0,0 @@
|
|
1
|
-
module Spree
|
2
|
-
module Api
|
3
|
-
module V1
|
4
|
-
class OrdersController < Spree::Api::V1::BaseController
|
5
|
-
before_filter :authorize_read!, :except => [:index, :search, :create]
|
6
|
-
|
7
|
-
def index
|
8
|
-
# should probably look at turning this into a CanCan step
|
9
|
-
raise CanCan::AccessDenied unless current_api_user.has_spree_role?("admin")
|
10
|
-
@orders = Order.ransack(params[:q]).result.page(params[:page]).per(params[:per_page])
|
11
|
-
end
|
12
|
-
|
13
|
-
def show
|
14
|
-
end
|
15
|
-
|
16
|
-
def create
|
17
|
-
@order = Order.build_from_api(current_api_user, nested_params)
|
18
|
-
next!(:status => 201)
|
19
|
-
end
|
20
|
-
|
21
|
-
def update
|
22
|
-
authorize! :update, Order
|
23
|
-
if order.update_attributes(nested_params)
|
24
|
-
order.update!
|
25
|
-
render :show
|
26
|
-
else
|
27
|
-
invalid_resource!(order)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def address
|
32
|
-
order.build_ship_address(params[:shipping_address]) if params[:shipping_address]
|
33
|
-
order.build_bill_address(params[:billing_address]) if params[:billing_address]
|
34
|
-
next!
|
35
|
-
end
|
36
|
-
|
37
|
-
def delivery
|
38
|
-
begin
|
39
|
-
ShippingMethod.find(params[:shipping_method_id])
|
40
|
-
rescue ActiveRecord::RecordNotFound
|
41
|
-
render :invalid_shipping_method, :status => 422
|
42
|
-
else
|
43
|
-
order.update_attribute(:shipping_method_id, params[:shipping_method_id])
|
44
|
-
next!
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def cancel
|
49
|
-
order.cancel!
|
50
|
-
render :show
|
51
|
-
end
|
52
|
-
|
53
|
-
def empty
|
54
|
-
order.line_items.destroy_all
|
55
|
-
order.update!
|
56
|
-
render :text => nil, :status => 200
|
57
|
-
end
|
58
|
-
|
59
|
-
private
|
60
|
-
|
61
|
-
def nested_params
|
62
|
-
map_nested_attributes_keys Order, params[:order] || {}
|
63
|
-
end
|
64
|
-
|
65
|
-
def order
|
66
|
-
@order ||= Order.find_by_number!(params[:id])
|
67
|
-
end
|
68
|
-
|
69
|
-
def next!(options={})
|
70
|
-
if @order.valid? && @order.next
|
71
|
-
render :show, :status => options[:status] || 200
|
72
|
-
else
|
73
|
-
render :could_not_transition, :status => 422
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def authorize_read!
|
78
|
-
authorize! :read, order
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
@@ -1,77 +0,0 @@
|
|
1
|
-
module Spree
|
2
|
-
module Api
|
3
|
-
module V1
|
4
|
-
class PaymentsController < Spree::Api::V1::BaseController
|
5
|
-
before_filter :find_order
|
6
|
-
before_filter :find_payment, :only => [:show, :authorize, :purchase, :capture, :void, :credit]
|
7
|
-
|
8
|
-
def index
|
9
|
-
@payments = @order.payments.ransack(params[:q]).result.page(params[:page]).per(params[:per_page])
|
10
|
-
end
|
11
|
-
|
12
|
-
def new
|
13
|
-
@payment_methods = Spree::PaymentMethod.where(:environment => Rails.env)
|
14
|
-
end
|
15
|
-
|
16
|
-
def create
|
17
|
-
@payment = @order.payments.build(params[:payment])
|
18
|
-
if @payment.save
|
19
|
-
render :show, :status => 201
|
20
|
-
else
|
21
|
-
invalid_resource!(@payment)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def show
|
26
|
-
end
|
27
|
-
|
28
|
-
def authorize
|
29
|
-
perform_payment_action(:authorize)
|
30
|
-
end
|
31
|
-
|
32
|
-
def capture
|
33
|
-
perform_payment_action(:capture)
|
34
|
-
end
|
35
|
-
|
36
|
-
def purchase
|
37
|
-
perform_payment_action(:purchase)
|
38
|
-
end
|
39
|
-
|
40
|
-
def void
|
41
|
-
perform_payment_action(:void_transaction)
|
42
|
-
end
|
43
|
-
|
44
|
-
def credit
|
45
|
-
if params[:amount].to_f > @payment.credit_allowed
|
46
|
-
render "spree/api/v1/payments/credit_over_limit", :status => 422
|
47
|
-
else
|
48
|
-
perform_payment_action(:credit, params[:amount])
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
private
|
53
|
-
|
54
|
-
def find_order
|
55
|
-
@order = Order.find_by_number(params[:order_id])
|
56
|
-
authorize! :read, @order
|
57
|
-
end
|
58
|
-
|
59
|
-
def find_payment
|
60
|
-
@payment = @order.payments.find(params[:id])
|
61
|
-
end
|
62
|
-
|
63
|
-
def perform_payment_action(action, *args)
|
64
|
-
authorize! action, Payment
|
65
|
-
|
66
|
-
begin
|
67
|
-
@payment.send("#{action}!", *args)
|
68
|
-
render :show
|
69
|
-
rescue Spree::Core::GatewayError => e
|
70
|
-
@error = e.message
|
71
|
-
render "spree/api/v1/errors/gateway_error", :status => 422
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|