spree_api 5.2.5 → 5.3.0.rc1
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/product_list_includes.rb +10 -21
- data/app/controllers/concerns/spree/api/v2/storefront/order_concern.rb +2 -2
- data/app/controllers/spree/api/v2/base_controller.rb +2 -2
- data/app/controllers/spree/api/v2/data_feeds/google_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/addresses_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/adjustments_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/classifications_controller.rb +2 -2
- data/app/controllers/spree/api/v2/platform/countries_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/data_feeds_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/digital_links_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/digitals_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/gift_cards_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/line_items_controller.rb +4 -4
- data/app/controllers/spree/api/v2/platform/option_types_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/option_values_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/orders_controller.rb +11 -11
- data/app/controllers/spree/api/v2/platform/payment_methods_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/payments_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/products_controller.rb +2 -2
- data/app/controllers/spree/api/v2/platform/promotion_actions_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/promotion_categories_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/promotion_rules_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/promotions_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/roles_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/shipments_controller.rb +6 -6
- data/app/controllers/spree/api/v2/platform/shipping_categories_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/shipping_methods_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/states_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/stock_items_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/stock_locations_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/store_credit_categories_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/store_credit_types_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/store_credits_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/tax_categories_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/tax_rates_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/taxonomies_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/taxons_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/users_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/variants_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/wished_items_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/wishlists_controller.rb +1 -1
- data/app/controllers/spree/api/v2/platform/zones_controller.rb +1 -1
- data/app/controllers/spree/api/v2/resource_controller.rb +9 -6
- data/app/controllers/spree/api/v2/storefront/account/addresses_controller.rb +5 -5
- data/app/controllers/spree/api/v2/storefront/account/credit_cards_controller.rb +4 -4
- data/app/controllers/spree/api/v2/storefront/account/orders_controller.rb +4 -4
- data/app/controllers/spree/api/v2/storefront/account_controller.rb +3 -3
- data/app/controllers/spree/api/v2/storefront/cart_controller.rb +13 -13
- data/app/controllers/spree/api/v2/storefront/checkout_controller.rb +12 -12
- data/app/controllers/spree/api/v2/storefront/countries_controller.rb +3 -3
- data/app/controllers/spree/api/v2/storefront/order_status_controller.rb +2 -2
- data/app/controllers/spree/api/v2/storefront/policies_controller.rb +2 -2
- data/app/controllers/spree/api/v2/storefront/posts_controller.rb +2 -2
- data/app/controllers/spree/api/v2/storefront/products_controller.rb +5 -8
- data/app/controllers/spree/api/v2/storefront/stores_controller.rb +1 -1
- data/app/controllers/spree/api/v2/storefront/taxons_controller.rb +3 -3
- data/app/controllers/spree/api/v2/storefront/variants_controller.rb +2 -2
- data/app/helpers/spree/api/v2/display_money_helper.rb +30 -10
- data/app/jobs/spree/webhook_delivery_job.rb +16 -0
- data/app/paginators/spree/api/paginate.rb +68 -0
- data/app/serializers/concerns/spree/api/v2/public_metafields_concern.rb +1 -1
- data/app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb +1 -1
- data/app/serializers/spree/api/v2/platform/address_serializer.rb +3 -3
- data/app/serializers/spree/api/v2/platform/adjustment_serializer.rb +5 -5
- data/app/serializers/spree/api/v2/platform/classification_serializer.rb +2 -2
- data/app/serializers/spree/api/v2/platform/country_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/credit_card_serializer.rb +2 -2
- data/app/serializers/spree/api/v2/platform/customer_return_serializer.rb +4 -4
- data/app/serializers/spree/api/v2/platform/digital_link_serializer.rb +2 -2
- data/app/serializers/spree/api/v2/platform/digital_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/gift_card_serializer.rb +2 -2
- data/app/serializers/spree/api/v2/platform/inventory_unit_serializer.rb +7 -7
- data/app/serializers/spree/api/v2/platform/line_item_serializer.rb +6 -6
- data/app/serializers/spree/api/v2/platform/option_type_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/option_value_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/order_promotion_serializer.rb +2 -2
- data/app/serializers/spree/api/v2/platform/order_serializer.rb +15 -15
- data/app/serializers/spree/api/v2/platform/payment_capture_event_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/payment_method_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/payment_serializer.rb +7 -7
- data/app/serializers/spree/api/v2/platform/payment_source_serializer.rb +2 -2
- data/app/serializers/spree/api/v2/platform/product_serializer.rb +20 -12
- data/app/serializers/spree/api/v2/platform/promotion_action_line_item_serializer.rb +2 -2
- data/app/serializers/spree/api/v2/platform/promotion_action_serializer.rb +3 -3
- data/app/serializers/spree/api/v2/platform/promotion_category_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/promotion_rule_serializer.rb +4 -4
- data/app/serializers/spree/api/v2/platform/promotion_serializer.rb +4 -4
- data/app/serializers/spree/api/v2/platform/prototype_serializer.rb +3 -3
- data/app/serializers/spree/api/v2/platform/refund_serializer.rb +5 -5
- data/app/serializers/spree/api/v2/platform/reimbursement_serializer.rb +6 -6
- data/app/serializers/spree/api/v2/platform/return_authorization_serializer.rb +4 -4
- data/app/serializers/spree/api/v2/platform/return_item_serializer.rb +4 -4
- data/app/serializers/spree/api/v2/platform/shipment_serializer.rb +8 -8
- data/app/serializers/spree/api/v2/platform/shipping_method_serializer.rb +4 -4
- data/app/serializers/spree/api/v2/platform/shipping_rate_serializer.rb +3 -3
- data/app/serializers/spree/api/v2/platform/state_change_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/state_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/stock_item_serializer.rb +2 -2
- data/app/serializers/spree/api/v2/platform/stock_location_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/stock_transfer_serializer.rb +3 -3
- data/app/serializers/spree/api/v2/platform/store_credit_event_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/store_credit_serializer.rb +5 -5
- data/app/serializers/spree/api/v2/platform/store_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/tax_category_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/tax_rate_serializer.rb +2 -2
- data/app/serializers/spree/api/v2/platform/taxon_serializer.rb +5 -5
- data/app/serializers/spree/api/v2/platform/taxonomy_serializer.rb +2 -2
- data/app/serializers/spree/api/v2/platform/user_serializer.rb +2 -2
- data/app/serializers/spree/api/v2/platform/variant_serializer.rb +19 -11
- data/app/serializers/spree/api/v2/platform/wished_item_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/wishlist_serializer.rb +1 -1
- data/app/serializers/spree/api/v2/platform/zone_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/cart_serializer.rb +9 -9
- data/app/serializers/spree/v2/storefront/credit_card_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/estimated_shipping_rate_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/line_item_serializer.rb +2 -2
- data/app/serializers/spree/v2/storefront/option_type_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/option_value_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/payment_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/payment_source_serializer.rb +2 -2
- data/app/serializers/spree/v2/storefront/post_category_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/post_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/product_serializer.rb +20 -12
- data/app/serializers/spree/v2/storefront/shipment_serializer.rb +4 -4
- data/app/serializers/spree/v2/storefront/shipping_rate_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/store_credit_serializer.rb +3 -3
- data/app/serializers/spree/v2/storefront/store_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/taxon_serializer.rb +6 -6
- data/app/serializers/spree/v2/storefront/user_serializer.rb +2 -2
- data/app/serializers/spree/v2/storefront/variant_serializer.rb +15 -7
- data/app/serializers/spree/v2/storefront/wished_item_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/wishlist_serializer.rb +1 -1
- data/app/services/spree/webhooks/deliver_webhook.rb +83 -0
- data/app/subscribers/spree/webhook_event_subscriber.rb +67 -0
- data/config/routes.rb +0 -2
- data/lib/generators/spree/api/install/install_generator.rb +24 -0
- data/lib/spree/api/configuration.rb +3 -0
- data/lib/spree/api/dependencies.rb +1 -1
- data/lib/spree/api/engine.rb +6 -0
- data/lib/spree/api/testing_support/matchers/webhooks.rb +1 -67
- data/lib/spree/api/testing_support/spree_webhooks.rb +1 -9
- data/lib/spree/api/testing_support/v2/current_order.rb +1 -2
- data/lib/spree/api.rb +3 -0
- data/lib/spree_api.rb +0 -2
- metadata +25 -33
- data/app/controllers/spree/api/v2/platform/webhooks/events_controller.rb +0 -25
- data/app/controllers/spree/api/v2/platform/webhooks/subscribers_controller.rb +0 -25
- data/app/jobs/spree/webhooks/subscribers/make_request_job.rb +0 -17
- data/app/models/concerns/spree/webhooks/has_webhooks.rb +0 -95
- data/app/models/spree/order/webhooks.rb +0 -39
- data/app/models/spree/payment/webhooks.rb +0 -23
- data/app/models/spree/product/webhooks.rb +0 -42
- data/app/models/spree/shipment/webhooks.rb +0 -19
- data/app/models/spree/stock_item/webhooks.rb +0 -40
- data/app/models/spree/stock_movement/webhooks.rb +0 -49
- data/app/models/spree/variant/webhooks.rb +0 -25
- data/app/models/spree/webhooks/base.rb +0 -11
- data/app/models/spree/webhooks/event.rb +0 -20
- data/app/models/spree/webhooks/event_signature.rb +0 -33
- data/app/models/spree/webhooks/subscriber.rb +0 -88
- data/app/serializers/spree/api/v2/platform/webhooks/event_serializer.rb +0 -15
- data/app/serializers/spree/api/v2/platform/webhooks/subscriber_serializer.rb +0 -13
- data/app/services/spree/webhooks/subscribers/handle_request.rb +0 -77
- data/app/services/spree/webhooks/subscribers/make_request.rb +0 -83
- data/app/services/spree/webhooks/subscribers/queue_requests.rb +0 -27
- data/db/migrate/20210902162826_create_spree_webhooks_tables.rb +0 -16
- data/db/migrate/20211025162826_create_spree_webhooks_events.rb +0 -14
- data/db/migrate/20221221122100_add_secret_key_to_spree_webhooks_subscribers.rb +0 -5
- data/db/migrate/20230116204600_backfill_secret_key_for_spree_webhooks_subscribers.rb +0 -5
- data/db/migrate/20230116205000_change_secret_key_to_non_null_column.rb +0 -5
- data/lib/spree/api/testing_support/factories/webhook_event_factory.rb +0 -27
- data/lib/spree/api/testing_support/factories/webhook_subscriber_factory.rb +0 -13
|
@@ -5,8 +5,8 @@ module Spree
|
|
|
5
5
|
class TaxRateSerializer < BaseSerializer
|
|
6
6
|
include ResourceSerializerConcern
|
|
7
7
|
|
|
8
|
-
belongs_to :zone, serializer: Spree
|
|
9
|
-
belongs_to :tax_category, serializer: Spree
|
|
8
|
+
belongs_to :zone, serializer: Spree.api.platform_zone_serializer
|
|
9
|
+
belongs_to :tax_category, serializer: Spree.api.platform_tax_category_serializer
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
12
|
end
|
|
@@ -27,19 +27,19 @@ module Spree
|
|
|
27
27
|
taxon.leaf?
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
belongs_to :parent, record_type: :taxon, serializer: Spree
|
|
31
|
-
belongs_to :taxonomy, record_type: :taxonomy, serializer: Spree
|
|
30
|
+
belongs_to :parent, record_type: :taxon, serializer: Spree.api.platform_taxon_serializer
|
|
31
|
+
belongs_to :taxonomy, record_type: :taxonomy, serializer: Spree.api.platform_taxonomy_serializer
|
|
32
32
|
|
|
33
|
-
has_many :children, record_type: :taxon, serializer: Spree
|
|
33
|
+
has_many :children, record_type: :taxon, serializer: Spree.api.platform_taxon_serializer
|
|
34
34
|
has_many :products, record_type: :product,
|
|
35
|
-
serializer: Spree
|
|
35
|
+
serializer: Spree.api.platform_product_serializer,
|
|
36
36
|
if: proc { |_taxon, params| params && params[:include_products] == true }
|
|
37
37
|
|
|
38
38
|
has_one :image,
|
|
39
39
|
object_method_name: :icon,
|
|
40
40
|
id_method_name: :icon_id,
|
|
41
41
|
record_type: :taxon_image,
|
|
42
|
-
serializer: Spree
|
|
42
|
+
serializer: Spree.api.platform_taxon_image_serializer
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
end
|
|
@@ -5,8 +5,8 @@ module Spree
|
|
|
5
5
|
class TaxonomySerializer < BaseSerializer
|
|
6
6
|
include ResourceSerializerConcern
|
|
7
7
|
|
|
8
|
-
has_many :taxons, serializer: Spree
|
|
9
|
-
has_one :root, serializer: Spree
|
|
8
|
+
has_many :taxons, serializer: Spree.api.platform_taxon_serializer
|
|
9
|
+
has_one :root, serializer: Spree.api.platform_taxon_serializer
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
12
|
end
|
|
@@ -21,11 +21,11 @@ module Spree
|
|
|
21
21
|
|
|
22
22
|
has_one :bill_address,
|
|
23
23
|
record_type: :address,
|
|
24
|
-
serializer: Spree
|
|
24
|
+
serializer: Spree.api.platform_address_serializer
|
|
25
25
|
|
|
26
26
|
has_one :ship_address,
|
|
27
27
|
record_type: :address,
|
|
28
|
-
serializer: Spree
|
|
28
|
+
serializer: Spree.api.platform_address_serializer
|
|
29
29
|
|
|
30
30
|
def self.price_stats(stats)
|
|
31
31
|
stats.map { |value| { currency: value.currency.to_s, amount: value.money.to_s } }
|
|
@@ -29,28 +29,36 @@ module Spree
|
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
attribute :price do |object, params|
|
|
32
|
-
price(object, params[:currency])
|
|
32
|
+
price(object, params[:currency], pricing_context_options(params))
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
attribute :display_price do |object, params|
|
|
36
|
-
display_price(object, params[:currency])
|
|
36
|
+
display_price(object, params[:currency], pricing_context_options(params))
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
attribute :compare_at_price do |object, params|
|
|
40
|
-
compare_at_price(object, params[:currency])
|
|
40
|
+
compare_at_price(object, params[:currency], pricing_context_options(params))
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
attribute :display_compare_at_price do |object, params|
|
|
44
|
-
display_compare_at_price(object, params[:currency])
|
|
44
|
+
display_compare_at_price(object, params[:currency], pricing_context_options(params))
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
def self.pricing_context_options(params)
|
|
48
|
+
{
|
|
49
|
+
store: params[:store],
|
|
50
|
+
user: params[:user],
|
|
51
|
+
tax_zone: params.dig(:price_options, :tax_zone)
|
|
52
|
+
}
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
belongs_to :product, serializer: Spree.api.platform_product_serializer
|
|
56
|
+
belongs_to :tax_category, serializer: Spree.api.platform_tax_category_serializer
|
|
57
|
+
has_many :digitals, serializer: Spree.api.platform_digital_serializer
|
|
58
|
+
has_many :images, serializer: Spree.api.platform_image_serializer
|
|
59
|
+
has_many :option_values, serializer: Spree.api.platform_option_value_serializer
|
|
60
|
+
has_many :stock_items, serializer: Spree.api.platform_stock_item_serializer
|
|
61
|
+
has_many :stock_locations, serializer: Spree.api.platform_stock_location_serializer
|
|
54
62
|
end
|
|
55
63
|
end
|
|
56
64
|
end
|
|
@@ -21,7 +21,7 @@ module Spree
|
|
|
21
21
|
wished_item.display_total(currency: params[:currency]).to_s
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
belongs_to :variant, serializer: Spree
|
|
24
|
+
belongs_to :variant, serializer: Spree.api.platform_variant_serializer
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
end
|
|
@@ -11,7 +11,7 @@ module Spree
|
|
|
11
11
|
wishlist.include?(params[:is_variant_included])
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
has_many :wished_items, serializer: Spree
|
|
14
|
+
has_many :wished_items, serializer: Spree.api.platform_wished_item_serializer
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
end
|
|
@@ -5,7 +5,7 @@ module Spree
|
|
|
5
5
|
class ZoneSerializer < BaseSerializer
|
|
6
6
|
include ResourceSerializerConcern
|
|
7
7
|
|
|
8
|
-
has_many :zone_members, serializer: Spree
|
|
8
|
+
has_many :zone_members, serializer: Spree.api.platform_zone_member_serializer
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
end
|
|
@@ -42,25 +42,25 @@ module Spree
|
|
|
42
42
|
cart.display_total_minus_store_credits.amount_in_cents
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
has_many :line_items, serializer: Spree
|
|
46
|
-
has_many :variants, serializer: Spree
|
|
47
|
-
has_many :promotions, serializer: Spree
|
|
48
|
-
has_many :payments, serializer: Spree
|
|
45
|
+
has_many :line_items, serializer: Spree.api.storefront_line_item_serializer
|
|
46
|
+
has_many :variants, serializer: Spree.api.storefront_variant_serializer
|
|
47
|
+
has_many :promotions, serializer: Spree.api.storefront_order_promotion_serializer, object_method_name: :valid_promotions, id_method_name: :valid_promotion_ids
|
|
48
|
+
has_many :payments, serializer: Spree.api.storefront_payment_serializer do |cart|
|
|
49
49
|
cart.payments.valid
|
|
50
50
|
end
|
|
51
|
-
has_many :shipments, serializer: Spree
|
|
51
|
+
has_many :shipments, serializer: Spree.api.storefront_shipment_serializer
|
|
52
52
|
|
|
53
|
-
belongs_to :user, serializer: Spree
|
|
53
|
+
belongs_to :user, serializer: Spree.api.storefront_user_serializer
|
|
54
54
|
belongs_to :billing_address,
|
|
55
55
|
id_method_name: :bill_address_id,
|
|
56
|
-
serializer: Spree
|
|
56
|
+
serializer: Spree.api.storefront_address_serializer,
|
|
57
57
|
record_type: :address
|
|
58
58
|
|
|
59
59
|
belongs_to :shipping_address,
|
|
60
60
|
id_method_name: :ship_address_id,
|
|
61
|
-
serializer: Spree
|
|
61
|
+
serializer: Spree.api.storefront_address_serializer,
|
|
62
62
|
record_type: :address
|
|
63
|
-
belongs_to :gift_card, serializer: Spree
|
|
63
|
+
belongs_to :gift_card, serializer: Spree.api.storefront_gift_card_serializer
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
end
|
|
@@ -8,7 +8,7 @@ module Spree
|
|
|
8
8
|
|
|
9
9
|
attributes :cc_type, :last_digits, :month, :year, :name, :default, :gateway_payment_profile_id, :public_metadata
|
|
10
10
|
|
|
11
|
-
belongs_to :payment_method, serializer: Spree
|
|
11
|
+
belongs_to :payment_method, serializer: Spree.api.storefront_payment_method_serializer
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
end
|
|
@@ -12,7 +12,7 @@ module Spree
|
|
|
12
12
|
shipping_rate.shipping_method_id.to_s
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
belongs_to :shipping_method, serializer: Spree
|
|
15
|
+
belongs_to :shipping_method, serializer: Spree.api.storefront_shipping_method_serializer
|
|
16
16
|
|
|
17
17
|
attribute :final_price do |shipping_rate|
|
|
18
18
|
shipping_rate.cost
|
|
@@ -15,8 +15,8 @@ module Spree
|
|
|
15
15
|
:pre_tax_amount, :display_pre_tax_amount, :compare_at_amount, :display_compare_at_amount,
|
|
16
16
|
:public_metadata
|
|
17
17
|
|
|
18
|
-
belongs_to :variant, serializer: Spree
|
|
19
|
-
has_many :digital_links, serializer: Spree
|
|
18
|
+
belongs_to :variant, serializer: Spree.api.storefront_variant_serializer
|
|
19
|
+
has_many :digital_links, serializer: Spree.api.storefront_digital_link_serializer
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
end
|
|
@@ -8,7 +8,7 @@ module Spree
|
|
|
8
8
|
|
|
9
9
|
attributes :name, :presentation, :position, :public_metadata
|
|
10
10
|
|
|
11
|
-
has_many :option_values, serializer: Spree
|
|
11
|
+
has_many :option_values, serializer: Spree.api.storefront_option_value_serializer
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
end
|
|
@@ -6,7 +6,7 @@ module Spree
|
|
|
6
6
|
|
|
7
7
|
attributes :name, :presentation, :position, :public_metadata
|
|
8
8
|
|
|
9
|
-
belongs_to :option_type, serializer: Spree
|
|
9
|
+
belongs_to :option_type, serializer: Spree.api.storefront_option_type_serializer
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
12
|
end
|
|
@@ -7,7 +7,7 @@ module Spree
|
|
|
7
7
|
set_type :payment
|
|
8
8
|
|
|
9
9
|
has_one :source, polymorphic: true
|
|
10
|
-
has_one :payment_method, serializer: Spree
|
|
10
|
+
has_one :payment_method, serializer: Spree.api.storefront_payment_method_serializer
|
|
11
11
|
|
|
12
12
|
attributes :amount, :response_code, :number, :cvv_response_code, :cvv_response_message, :payment_method_name, :state, :public_metadata
|
|
13
13
|
|
|
@@ -4,8 +4,8 @@ module Spree
|
|
|
4
4
|
class PaymentSourceSerializer < BaseSerializer
|
|
5
5
|
include Spree::Api::V2::PublicMetafieldsConcern
|
|
6
6
|
|
|
7
|
-
belongs_to :payment_method, serializer: Spree
|
|
8
|
-
belongs_to :user, serializer: Spree
|
|
7
|
+
belongs_to :payment_method, serializer: Spree.api.storefront_payment_method_serializer
|
|
8
|
+
belongs_to :user, serializer: Spree.api.storefront_user_serializer
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
end
|
|
@@ -12,7 +12,7 @@ module Spree
|
|
|
12
12
|
category.description.to_plain_text if category.description.present?
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
has_many :posts, serializer: Spree
|
|
15
|
+
has_many :posts, serializer: Spree.api.storefront_post_serializer, record_type: :post, if: proc { |_record, params|
|
|
16
16
|
params[:include_posts] == true
|
|
17
17
|
} do |category|
|
|
18
18
|
category.posts.published.by_newest
|
|
@@ -44,7 +44,7 @@ module Spree
|
|
|
44
44
|
url_helpers.cdn_image_url(post.image.attachment) if post.image.present? && post.image.attached?
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
belongs_to :post_category, serializer: Spree
|
|
47
|
+
belongs_to :post_category, serializer: Spree.api.storefront_post_category_serializer, record_type: :post_category
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
end
|
|
@@ -30,19 +30,27 @@ module Spree
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
attribute :price do |product, params|
|
|
33
|
-
price(product, params[:currency])
|
|
33
|
+
price(product, params[:currency], pricing_context_options(params))
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
attribute :display_price do |product, params|
|
|
37
|
-
display_price(product, params[:currency])
|
|
37
|
+
display_price(product, params[:currency], pricing_context_options(params))
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
attribute :compare_at_price do |product, params|
|
|
41
|
-
compare_at_price(product, params[:currency])
|
|
41
|
+
compare_at_price(product, params[:currency], pricing_context_options(params))
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
attribute :display_compare_at_price do |product, params|
|
|
45
|
-
display_compare_at_price(product, params[:currency])
|
|
45
|
+
display_compare_at_price(product, params[:currency], pricing_context_options(params))
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.pricing_context_options(params)
|
|
49
|
+
{
|
|
50
|
+
store: params[:store],
|
|
51
|
+
user: params[:user],
|
|
52
|
+
tax_zone: params.dig(:price_options, :tax_zone)
|
|
53
|
+
}
|
|
46
54
|
end
|
|
47
55
|
|
|
48
56
|
attribute :localized_slugs do |product, params|
|
|
@@ -52,12 +60,12 @@ module Spree
|
|
|
52
60
|
attribute :tags, &:tag_list
|
|
53
61
|
attribute :labels, &:label_list
|
|
54
62
|
|
|
55
|
-
has_many :variants, serializer: Spree
|
|
56
|
-
has_many :option_types, serializer: Spree
|
|
57
|
-
has_many :product_properties, serializer: Spree
|
|
63
|
+
has_many :variants, serializer: Spree.api.storefront_variant_serializer
|
|
64
|
+
has_many :option_types, serializer: Spree.api.storefront_option_type_serializer
|
|
65
|
+
has_many :product_properties, serializer: Spree.api.storefront_product_property_serializer
|
|
58
66
|
|
|
59
|
-
has_many :taxons, serializer: Spree
|
|
60
|
-
object.taxons_for_store(params[:store])
|
|
67
|
+
has_many :taxons, serializer: Spree.api.storefront_taxon_serializer, record_type: :taxon do |object, params|
|
|
68
|
+
object.taxons_for_store(params[:store])
|
|
61
69
|
end
|
|
62
70
|
|
|
63
71
|
# all images from all variants
|
|
@@ -65,19 +73,19 @@ module Spree
|
|
|
65
73
|
object_method_name: :variant_images,
|
|
66
74
|
id_method_name: :variant_image_ids,
|
|
67
75
|
record_type: :image,
|
|
68
|
-
serializer: Spree
|
|
76
|
+
serializer: Spree.api.storefront_image_serializer
|
|
69
77
|
|
|
70
78
|
has_one :default_variant,
|
|
71
79
|
object_method_name: :default_variant,
|
|
72
80
|
id_method_name: :default_variant_id,
|
|
73
81
|
record_type: :variant,
|
|
74
|
-
serializer: Spree
|
|
82
|
+
serializer: Spree.api.storefront_variant_serializer
|
|
75
83
|
|
|
76
84
|
has_one :primary_variant,
|
|
77
85
|
object_method_name: :master,
|
|
78
86
|
id_method_name: :master_id,
|
|
79
87
|
record_type: :variant,
|
|
80
|
-
serializer: Spree
|
|
88
|
+
serializer: Spree.api.storefront_variant_serializer
|
|
81
89
|
end
|
|
82
90
|
end
|
|
83
91
|
end
|
|
@@ -13,11 +13,11 @@ module Spree
|
|
|
13
13
|
shipment.free?
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
has_many :shipping_rates, serializer: Spree
|
|
17
|
-
has_one :selected_shipping_rate, serializer: Spree
|
|
16
|
+
has_many :shipping_rates, serializer: Spree.api.storefront_shipping_rate_serializer
|
|
17
|
+
has_one :selected_shipping_rate, serializer: Spree.api.storefront_shipping_rate_serializer
|
|
18
18
|
|
|
19
|
-
belongs_to :stock_location, serializer: Spree
|
|
20
|
-
has_many :line_items, serializer: Spree
|
|
19
|
+
belongs_to :stock_location, serializer: Spree.api.storefront_stock_location_serializer
|
|
20
|
+
has_many :line_items, serializer: Spree.api.storefront_line_item_serializer do |shipment|
|
|
21
21
|
shipment.line_items
|
|
22
22
|
end
|
|
23
23
|
end
|
|
@@ -11,7 +11,7 @@ module Spree
|
|
|
11
11
|
shipping_rate.shipping_method_id.to_s
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
belongs_to :shipping_method, serializer: Spree
|
|
14
|
+
belongs_to :shipping_method, serializer: Spree.api.storefront_shipping_method_serializer
|
|
15
15
|
|
|
16
16
|
attribute :free do |shipping_rate|
|
|
17
17
|
shipping_rate.free?
|
|
@@ -6,11 +6,11 @@ module Spree
|
|
|
6
6
|
|
|
7
7
|
set_type :store_credit
|
|
8
8
|
|
|
9
|
-
belongs_to :category, serializer: Spree
|
|
10
|
-
has_many :store_credit_events, serializer: Spree
|
|
9
|
+
belongs_to :category, serializer: Spree.api.storefront_store_credit_category_serializer
|
|
10
|
+
has_many :store_credit_events, serializer: Spree.api.storefront_store_credit_event_serializer
|
|
11
11
|
belongs_to :credit_type,
|
|
12
12
|
id_method_name: :type_id,
|
|
13
|
-
serializer: Spree
|
|
13
|
+
serializer: Spree.api.storefront_store_credit_type_serializer
|
|
14
14
|
|
|
15
15
|
attributes :amount, :amount_used, :created_at, :public_metadata
|
|
16
16
|
end
|
|
@@ -11,7 +11,7 @@ module Spree
|
|
|
11
11
|
:default, :supported_currencies, :facebook, :twitter, :instagram, :default_locale,
|
|
12
12
|
:customer_support_email, :description, :address, :contact_phone, :supported_locales
|
|
13
13
|
|
|
14
|
-
has_one :default_country, serializer: Spree
|
|
14
|
+
has_one :default_country, serializer: Spree.api.storefront_country_serializer, record_type: :country, id_method_name: :default_country_id
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
end
|
|
@@ -14,7 +14,7 @@ module Spree
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
attribute :has_products do |taxon|
|
|
17
|
-
taxon.active_products_with_descendants.exists?
|
|
17
|
+
taxon.classification_count.positive? || taxon.active_products_with_descendants.exists?
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
attribute :header_url do |taxon|
|
|
@@ -37,18 +37,18 @@ module Spree
|
|
|
37
37
|
taxon.localized_slugs_for_store(params[:store])
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
belongs_to :parent, record_type: :taxon, serializer: Spree
|
|
41
|
-
belongs_to :taxonomy, record_type: :taxonomy, serializer: Spree
|
|
40
|
+
belongs_to :parent, record_type: :taxon, serializer: Spree.api.storefront_taxon_serializer
|
|
41
|
+
belongs_to :taxonomy, record_type: :taxonomy, serializer: Spree.api.storefront_taxonomy_serializer
|
|
42
42
|
|
|
43
|
-
has_many :children, record_type: :taxon, serializer: Spree
|
|
44
|
-
has_many :products, record_type: :product, serializer: Spree
|
|
43
|
+
has_many :children, record_type: :taxon, serializer: Spree.api.storefront_taxon_serializer
|
|
44
|
+
has_many :products, record_type: :product, serializer: Spree.api.storefront_product_serializer,
|
|
45
45
|
if: proc { |_taxon, params| params && params[:include_products] == true }
|
|
46
46
|
|
|
47
47
|
has_one :image,
|
|
48
48
|
object_method_name: :icon,
|
|
49
49
|
id_method_name: :icon_id,
|
|
50
50
|
record_type: :taxon_image,
|
|
51
|
-
serializer: Spree
|
|
51
|
+
serializer: Spree.api.storefront_taxon_image_serializer
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
end
|
|
@@ -20,13 +20,13 @@ module Spree
|
|
|
20
20
|
id_method_name: :bill_address_id,
|
|
21
21
|
object_method_name: :bill_address,
|
|
22
22
|
record_type: :address,
|
|
23
|
-
serializer: Spree
|
|
23
|
+
serializer: Spree.api.storefront_address_serializer
|
|
24
24
|
|
|
25
25
|
has_one :default_shipping_address,
|
|
26
26
|
id_method_name: :ship_address_id,
|
|
27
27
|
object_method_name: :ship_address,
|
|
28
28
|
record_type: :address,
|
|
29
|
-
serializer: Spree
|
|
29
|
+
serializer: Spree.api.storefront_address_serializer
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
end
|
|
@@ -26,24 +26,32 @@ module Spree
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
attribute :price do |product, params|
|
|
29
|
-
price(product, params[:currency])
|
|
29
|
+
price(product, params[:currency], pricing_context_options(params))
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
attribute :display_price do |product, params|
|
|
33
|
-
display_price(product, params[:currency])
|
|
33
|
+
display_price(product, params[:currency], pricing_context_options(params))
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
attribute :compare_at_price do |product, params|
|
|
37
|
-
compare_at_price(product, params[:currency])
|
|
37
|
+
compare_at_price(product, params[:currency], pricing_context_options(params))
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
attribute :display_compare_at_price do |product, params|
|
|
41
|
-
display_compare_at_price(product, params[:currency])
|
|
41
|
+
display_compare_at_price(product, params[:currency], pricing_context_options(params))
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
def self.pricing_context_options(params)
|
|
45
|
+
{
|
|
46
|
+
store: params[:store],
|
|
47
|
+
user: params[:user],
|
|
48
|
+
tax_zone: params.dig(:price_options, :tax_zone)
|
|
49
|
+
}
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
belongs_to :product, serializer: Spree.api.storefront_product_serializer
|
|
53
|
+
has_many :images, serializer: Spree.api.storefront_image_serializer
|
|
54
|
+
has_many :option_values, serializer: Spree.api.storefront_option_value_serializer
|
|
47
55
|
end
|
|
48
56
|
end
|
|
49
57
|
end
|
|
@@ -22,7 +22,7 @@ module Spree
|
|
|
22
22
|
wished_item.display_total(currency: params[:currency]).to_s
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
belongs_to :variant, serializer: Spree
|
|
25
|
+
belongs_to :variant, serializer: Spree.api.storefront_variant_serializer
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
end
|
|
@@ -10,7 +10,7 @@ module Spree
|
|
|
10
10
|
wishlist.include?(params[:is_variant_included])
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
has_many :wished_items, serializer: Spree
|
|
13
|
+
has_many :wished_items, serializer: Spree.api.storefront_wished_item_serializer
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'net/http'
|
|
4
|
+
require 'openssl'
|
|
5
|
+
|
|
6
|
+
module Spree
|
|
7
|
+
module Webhooks
|
|
8
|
+
class DeliverWebhook
|
|
9
|
+
TIMEOUT = 30
|
|
10
|
+
|
|
11
|
+
def self.call(delivery:, secret_key:)
|
|
12
|
+
new(delivery: delivery, secret_key: secret_key).call
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def initialize(delivery:, secret_key:)
|
|
16
|
+
@delivery = delivery
|
|
17
|
+
@secret_key = secret_key
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def call
|
|
21
|
+
start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
22
|
+
|
|
23
|
+
response = make_request
|
|
24
|
+
execution_time = ((Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time) * 1000).round
|
|
25
|
+
|
|
26
|
+
@delivery.complete!(
|
|
27
|
+
response_code: response.code.to_i,
|
|
28
|
+
execution_time: execution_time,
|
|
29
|
+
response_body: response.body.to_s.truncate(10_000)
|
|
30
|
+
)
|
|
31
|
+
rescue Net::OpenTimeout, Net::ReadTimeout => e
|
|
32
|
+
execution_time = ((Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time) * 1000).round
|
|
33
|
+
Rails.error.report(e, context: { webhook_delivery_id: @delivery.id, url: @delivery.url })
|
|
34
|
+
@delivery.complete!(
|
|
35
|
+
execution_time: execution_time,
|
|
36
|
+
error_type: 'timeout',
|
|
37
|
+
request_errors: e.message
|
|
38
|
+
)
|
|
39
|
+
rescue StandardError => e
|
|
40
|
+
execution_time = ((Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time) * 1000).round
|
|
41
|
+
Rails.error.report(e, context: { webhook_delivery_id: @delivery.id, url: @delivery.url })
|
|
42
|
+
@delivery.complete!(
|
|
43
|
+
execution_time: execution_time,
|
|
44
|
+
error_type: 'connection_error',
|
|
45
|
+
request_errors: e.message
|
|
46
|
+
)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
private
|
|
50
|
+
|
|
51
|
+
def make_request
|
|
52
|
+
uri = URI.parse(@delivery.url)
|
|
53
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
|
54
|
+
http.use_ssl = uri.scheme == 'https'
|
|
55
|
+
http.verify_mode = ssl_verify_mode
|
|
56
|
+
http.open_timeout = TIMEOUT
|
|
57
|
+
http.read_timeout = TIMEOUT
|
|
58
|
+
|
|
59
|
+
request = Net::HTTP::Post.new(uri.request_uri)
|
|
60
|
+
request['Content-Type'] = 'application/json'
|
|
61
|
+
request['User-Agent'] = 'Spree-Webhooks/1.0'
|
|
62
|
+
request['X-Spree-Webhook-Signature'] = generate_signature
|
|
63
|
+
request['X-Spree-Webhook-Event'] = @delivery.event_name
|
|
64
|
+
request.body = @delivery.payload.to_json
|
|
65
|
+
|
|
66
|
+
http.request(request)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def generate_signature
|
|
70
|
+
payload_json = @delivery.payload.to_json
|
|
71
|
+
OpenSSL::HMAC.hexdigest('SHA256', @secret_key, payload_json)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def ssl_verify_mode
|
|
75
|
+
if Spree::Api::Config.webhooks_verify_ssl
|
|
76
|
+
OpenSSL::SSL::VERIFY_PEER
|
|
77
|
+
else
|
|
78
|
+
OpenSSL::SSL::VERIFY_NONE
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|