spree_api 4.2.0.rc4 → 4.2.0.rc5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/concerns/spree/api/v2/storefront/order_concern.rb +0 -4
- data/app/controllers/spree/api/base_controller.rb +2 -0
- data/app/controllers/spree/api/v1/taxons_controller.rb +1 -1
- data/app/controllers/spree/api/v2/base_controller.rb +6 -6
- data/app/controllers/spree/api/v2/resource_controller.rb +2 -1
- data/app/helpers/spree/api/v2/display_money_helper.rb +43 -0
- data/app/serializers/spree/v2/storefront/product_serializer.rb +23 -3
- data/app/serializers/spree/v2/storefront/variant_serializer.rb +23 -2
- data/config/initializers/doorkeeper.rb +8 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d89085eb3c34e7174431d231b1e9a883b6cbf3d7ee838d633125c352bd3a6db
|
4
|
+
data.tar.gz: 3402c8e857912d6655aea610e7092c4f749faf2f0b31a9f0c3f8601b292c43ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bef7abadbdf0a40b95b04b45811eade8884c5f782c9720a3b009e90aabc133b9384122e65fcc443245102b6e444636e30f423d357efefebc8e63910240525efe
|
7
|
+
data.tar.gz: a1824c2bccb63b030b8d6cfe64237b1ce3b57dfd36adacdf71367b5a0408cec84a7d019bec4017c4d83f273a2de0e595d734cf506cb517b03b78932f9a871285
|
@@ -34,10 +34,6 @@ module Spree
|
|
34
34
|
)
|
35
35
|
end
|
36
36
|
|
37
|
-
def supported_currencies
|
38
|
-
current_store.supported_currencies_list
|
39
|
-
end
|
40
|
-
|
41
37
|
def serialize_order(order)
|
42
38
|
resource_serializer.new(order.reload, include: resource_includes, fields: sparse_fields).serializable_hash
|
43
39
|
end
|
@@ -6,6 +6,8 @@ module Spree
|
|
6
6
|
include Spree::Api::ControllerSetup
|
7
7
|
include Spree::Core::ControllerHelpers::Store
|
8
8
|
include Spree::Core::ControllerHelpers::StrongParameters
|
9
|
+
include Spree::Core::ControllerHelpers::Locale
|
10
|
+
include Spree::Core::ControllerHelpers::Currency
|
9
11
|
|
10
12
|
attr_accessor :current_api_user
|
11
13
|
|
@@ -37,7 +37,7 @@ module Spree
|
|
37
37
|
invalid_resource!(@taxon) and return
|
38
38
|
end
|
39
39
|
|
40
|
-
@taxon.parent_id = taxonomy.
|
40
|
+
@taxon.parent_id = taxonomy.root_id unless params[:taxon][:parent_id]
|
41
41
|
|
42
42
|
if @taxon.save
|
43
43
|
respond_with(@taxon, status: 201, default_template: :show)
|
@@ -5,12 +5,12 @@ module Spree
|
|
5
5
|
include CanCan::ControllerAdditions
|
6
6
|
include Spree::Core::ControllerHelpers::StrongParameters
|
7
7
|
include Spree::Core::ControllerHelpers::Store
|
8
|
+
include Spree::Core::ControllerHelpers::Locale
|
9
|
+
include Spree::Core::ControllerHelpers::Currency
|
8
10
|
rescue_from ActiveRecord::RecordNotFound, with: :record_not_found
|
9
11
|
rescue_from CanCan::AccessDenied, with: :access_denied
|
10
12
|
rescue_from Spree::Core::GatewayError, with: :gateway_error
|
11
13
|
|
12
|
-
before_action :set_user_language
|
13
|
-
|
14
14
|
def content_type
|
15
15
|
Spree::Api::Config[:api_v2_content_type]
|
16
16
|
end
|
@@ -84,6 +84,10 @@ module Spree
|
|
84
84
|
fields.presence
|
85
85
|
end
|
86
86
|
|
87
|
+
def serializer_params
|
88
|
+
{ currency: current_currency, store: current_store, user: spree_current_user }
|
89
|
+
end
|
90
|
+
|
87
91
|
def record_not_found
|
88
92
|
render_error_payload(I18n.t(:resource_not_found, scope: 'spree.api'), 404)
|
89
93
|
end
|
@@ -95,10 +99,6 @@ module Spree
|
|
95
99
|
def gateway_error(exception)
|
96
100
|
render_error_payload(exception.message)
|
97
101
|
end
|
98
|
-
|
99
|
-
def set_user_language
|
100
|
-
I18n.locale = current_store.default_locale
|
101
|
-
end
|
102
102
|
end
|
103
103
|
end
|
104
104
|
end
|
@@ -17,13 +17,14 @@ module Spree
|
|
17
17
|
def serialize_collection(collection)
|
18
18
|
collection_serializer.new(
|
19
19
|
collection,
|
20
|
-
collection_options(collection)
|
20
|
+
collection_options(collection).merge(params: serializer_params)
|
21
21
|
).serializable_hash
|
22
22
|
end
|
23
23
|
|
24
24
|
def serialize_resource(resource)
|
25
25
|
resource_serializer.new(
|
26
26
|
resource,
|
27
|
+
params: serializer_params,
|
27
28
|
include: resource_includes,
|
28
29
|
fields: sparse_fields
|
29
30
|
).serializable_hash
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Spree
|
2
|
+
module Api
|
3
|
+
module V2
|
4
|
+
module DisplayMoneyHelper
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
class_methods do
|
8
|
+
def find_price(product_or_variant, currency)
|
9
|
+
product_or_variant.price_in(currency)
|
10
|
+
end
|
11
|
+
|
12
|
+
def price(product_or_variant, currency)
|
13
|
+
price = find_price(product_or_variant, currency)
|
14
|
+
return nil if price.new_record?
|
15
|
+
|
16
|
+
format('%.2f', price.amount)
|
17
|
+
end
|
18
|
+
|
19
|
+
def display_price(product_or_variant, currency)
|
20
|
+
price = find_price(product_or_variant, currency)
|
21
|
+
return nil if price.new_record?
|
22
|
+
|
23
|
+
Spree::Money.new(price.amount, currency: currency).to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
def compare_at_price(product_or_variant, currency)
|
27
|
+
price = find_price(product_or_variant, currency)
|
28
|
+
return nil if price.new_record? || price.compare_at_amount.blank?
|
29
|
+
|
30
|
+
format('%.2f', price.compare_at_amount)
|
31
|
+
end
|
32
|
+
|
33
|
+
def display_compare_at_price(product_or_variant, currency)
|
34
|
+
price = find_price(product_or_variant, currency)
|
35
|
+
return nil if price.new_record? || price.compare_at_amount.blank?
|
36
|
+
|
37
|
+
Spree::Money.new(price.compare_at_amount, currency: currency).to_s
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -2,11 +2,11 @@ module Spree
|
|
2
2
|
module V2
|
3
3
|
module Storefront
|
4
4
|
class ProductSerializer < BaseSerializer
|
5
|
+
include ::Spree::Api::V2::DisplayMoneyHelper
|
6
|
+
|
5
7
|
set_type :product
|
6
8
|
|
7
|
-
attributes :name, :description, :
|
8
|
-
:compare_at_price, :display_compare_at_price, :available_on,
|
9
|
-
:slug, :meta_description, :meta_keywords, :updated_at
|
9
|
+
attributes :name, :description, :available_on, :slug, :meta_description, :meta_keywords, :updated_at
|
10
10
|
|
11
11
|
attribute :purchasable do |product|
|
12
12
|
product.purchasable?
|
@@ -24,6 +24,26 @@ module Spree
|
|
24
24
|
product.available?
|
25
25
|
end
|
26
26
|
|
27
|
+
attribute :currency do |_product, params|
|
28
|
+
params[:currency]
|
29
|
+
end
|
30
|
+
|
31
|
+
attribute :price do |product, params|
|
32
|
+
price(product, params[:currency])
|
33
|
+
end
|
34
|
+
|
35
|
+
attribute :display_price do |product, params|
|
36
|
+
display_price(product, params[:currency])
|
37
|
+
end
|
38
|
+
|
39
|
+
attribute :compare_at_price do |product, params|
|
40
|
+
compare_at_price(product, params[:currency])
|
41
|
+
end
|
42
|
+
|
43
|
+
attribute :display_compare_at_price do |product, params|
|
44
|
+
display_compare_at_price(product, params[:currency])
|
45
|
+
end
|
46
|
+
|
27
47
|
has_many :variants
|
28
48
|
has_many :option_types
|
29
49
|
has_many :product_properties
|
@@ -2,10 +2,11 @@ module Spree
|
|
2
2
|
module V2
|
3
3
|
module Storefront
|
4
4
|
class VariantSerializer < BaseSerializer
|
5
|
+
include ::Spree::Api::V2::DisplayMoneyHelper
|
6
|
+
|
5
7
|
set_type :variant
|
6
8
|
|
7
|
-
attributes :sku, :
|
8
|
-
:width, :depth, :is_master, :options_text
|
9
|
+
attributes :sku, :weight, :height, :width, :depth, :is_master, :options_text
|
9
10
|
|
10
11
|
attribute :purchasable do |variant|
|
11
12
|
variant.purchasable?
|
@@ -19,6 +20,26 @@ module Spree
|
|
19
20
|
variant.backorderable?
|
20
21
|
end
|
21
22
|
|
23
|
+
attribute :currency do |_product, params|
|
24
|
+
params[:currency]
|
25
|
+
end
|
26
|
+
|
27
|
+
attribute :price do |product, params|
|
28
|
+
price(product, params[:currency])
|
29
|
+
end
|
30
|
+
|
31
|
+
attribute :display_price do |product, params|
|
32
|
+
display_price(product, params[:currency])
|
33
|
+
end
|
34
|
+
|
35
|
+
attribute :compare_at_price do |product, params|
|
36
|
+
compare_at_price(product, params[:currency])
|
37
|
+
end
|
38
|
+
|
39
|
+
attribute :display_compare_at_price do |product, params|
|
40
|
+
display_compare_at_price(product, params[:currency])
|
41
|
+
end
|
42
|
+
|
22
43
|
belongs_to :product
|
23
44
|
has_many :images
|
24
45
|
has_many :option_values
|
@@ -7,7 +7,14 @@ Doorkeeper.configure do
|
|
7
7
|
|
8
8
|
resource_owner_from_credentials do
|
9
9
|
user = Spree.user_class.find_for_database_authentication(email: params[:username])
|
10
|
-
|
10
|
+
|
11
|
+
return nil if user.nil?
|
12
|
+
|
13
|
+
if defined?(Spree::Auth::Config) && Spree::Auth::Config[:confirmable] == true
|
14
|
+
user if user.active_for_authentication? && user.valid_for_authentication? { user.valid_password?(params[:password]) }
|
15
|
+
elsif user&.valid_for_authentication? { user.valid_password?(params[:password]) }
|
16
|
+
user
|
17
|
+
end
|
11
18
|
end
|
12
19
|
|
13
20
|
admin_authenticator do |routes|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.2.0.
|
4
|
+
version: 4.2.0.rc5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Bigg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jsonapi-rspec
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 4.2.0.
|
33
|
+
version: 4.2.0.rc5
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 4.2.0.
|
40
|
+
version: 4.2.0.rc5
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rabl
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -147,6 +147,7 @@ files:
|
|
147
147
|
- app/controllers/spree/api/v2/storefront/taxons_controller.rb
|
148
148
|
- app/helpers/spree/api/api_helpers.rb
|
149
149
|
- app/helpers/spree/api/v2/collection_options_helpers.rb
|
150
|
+
- app/helpers/spree/api/v2/display_money_helper.rb
|
150
151
|
- app/models/concerns/spree/user_api_authentication.rb
|
151
152
|
- app/models/concerns/spree/user_api_methods.rb
|
152
153
|
- app/models/spree/api_configuration.rb
|
@@ -308,9 +309,9 @@ licenses:
|
|
308
309
|
- BSD-3-Clause
|
309
310
|
metadata:
|
310
311
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
311
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v4.2.0.
|
312
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v4.2.0.rc5
|
312
313
|
documentation_uri: https://guides.spreecommerce.org/
|
313
|
-
source_code_uri: https://github.com/spree/spree/tree/v4.2.0.
|
314
|
+
source_code_uri: https://github.com/spree/spree/tree/v4.2.0.rc5
|
314
315
|
post_install_message:
|
315
316
|
rdoc_options: []
|
316
317
|
require_paths:
|