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.
Files changed (173) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/spree/api/v2/product_list_includes.rb +10 -21
  3. data/app/controllers/concerns/spree/api/v2/storefront/order_concern.rb +2 -2
  4. data/app/controllers/spree/api/v2/base_controller.rb +2 -2
  5. data/app/controllers/spree/api/v2/data_feeds/google_controller.rb +1 -1
  6. data/app/controllers/spree/api/v2/platform/addresses_controller.rb +1 -1
  7. data/app/controllers/spree/api/v2/platform/adjustments_controller.rb +1 -1
  8. data/app/controllers/spree/api/v2/platform/classifications_controller.rb +2 -2
  9. data/app/controllers/spree/api/v2/platform/countries_controller.rb +1 -1
  10. data/app/controllers/spree/api/v2/platform/data_feeds_controller.rb +1 -1
  11. data/app/controllers/spree/api/v2/platform/digital_links_controller.rb +1 -1
  12. data/app/controllers/spree/api/v2/platform/digitals_controller.rb +1 -1
  13. data/app/controllers/spree/api/v2/platform/gift_cards_controller.rb +1 -1
  14. data/app/controllers/spree/api/v2/platform/line_items_controller.rb +4 -4
  15. data/app/controllers/spree/api/v2/platform/option_types_controller.rb +1 -1
  16. data/app/controllers/spree/api/v2/platform/option_values_controller.rb +1 -1
  17. data/app/controllers/spree/api/v2/platform/orders_controller.rb +11 -11
  18. data/app/controllers/spree/api/v2/platform/payment_methods_controller.rb +1 -1
  19. data/app/controllers/spree/api/v2/platform/payments_controller.rb +1 -1
  20. data/app/controllers/spree/api/v2/platform/products_controller.rb +2 -2
  21. data/app/controllers/spree/api/v2/platform/promotion_actions_controller.rb +1 -1
  22. data/app/controllers/spree/api/v2/platform/promotion_categories_controller.rb +1 -1
  23. data/app/controllers/spree/api/v2/platform/promotion_rules_controller.rb +1 -1
  24. data/app/controllers/spree/api/v2/platform/promotions_controller.rb +1 -1
  25. data/app/controllers/spree/api/v2/platform/roles_controller.rb +1 -1
  26. data/app/controllers/spree/api/v2/platform/shipments_controller.rb +6 -6
  27. data/app/controllers/spree/api/v2/platform/shipping_categories_controller.rb +1 -1
  28. data/app/controllers/spree/api/v2/platform/shipping_methods_controller.rb +1 -1
  29. data/app/controllers/spree/api/v2/platform/states_controller.rb +1 -1
  30. data/app/controllers/spree/api/v2/platform/stock_items_controller.rb +1 -1
  31. data/app/controllers/spree/api/v2/platform/stock_locations_controller.rb +1 -1
  32. data/app/controllers/spree/api/v2/platform/store_credit_categories_controller.rb +1 -1
  33. data/app/controllers/spree/api/v2/platform/store_credit_types_controller.rb +1 -1
  34. data/app/controllers/spree/api/v2/platform/store_credits_controller.rb +1 -1
  35. data/app/controllers/spree/api/v2/platform/tax_categories_controller.rb +1 -1
  36. data/app/controllers/spree/api/v2/platform/tax_rates_controller.rb +1 -1
  37. data/app/controllers/spree/api/v2/platform/taxonomies_controller.rb +1 -1
  38. data/app/controllers/spree/api/v2/platform/taxons_controller.rb +1 -1
  39. data/app/controllers/spree/api/v2/platform/users_controller.rb +1 -1
  40. data/app/controllers/spree/api/v2/platform/variants_controller.rb +1 -1
  41. data/app/controllers/spree/api/v2/platform/wished_items_controller.rb +1 -1
  42. data/app/controllers/spree/api/v2/platform/wishlists_controller.rb +1 -1
  43. data/app/controllers/spree/api/v2/platform/zones_controller.rb +1 -1
  44. data/app/controllers/spree/api/v2/resource_controller.rb +9 -6
  45. data/app/controllers/spree/api/v2/storefront/account/addresses_controller.rb +5 -5
  46. data/app/controllers/spree/api/v2/storefront/account/credit_cards_controller.rb +4 -4
  47. data/app/controllers/spree/api/v2/storefront/account/orders_controller.rb +4 -4
  48. data/app/controllers/spree/api/v2/storefront/account_controller.rb +3 -3
  49. data/app/controllers/spree/api/v2/storefront/cart_controller.rb +13 -13
  50. data/app/controllers/spree/api/v2/storefront/checkout_controller.rb +12 -12
  51. data/app/controllers/spree/api/v2/storefront/countries_controller.rb +3 -3
  52. data/app/controllers/spree/api/v2/storefront/order_status_controller.rb +2 -2
  53. data/app/controllers/spree/api/v2/storefront/policies_controller.rb +2 -2
  54. data/app/controllers/spree/api/v2/storefront/posts_controller.rb +2 -2
  55. data/app/controllers/spree/api/v2/storefront/products_controller.rb +5 -8
  56. data/app/controllers/spree/api/v2/storefront/stores_controller.rb +1 -1
  57. data/app/controllers/spree/api/v2/storefront/taxons_controller.rb +3 -3
  58. data/app/controllers/spree/api/v2/storefront/variants_controller.rb +2 -2
  59. data/app/helpers/spree/api/v2/display_money_helper.rb +30 -10
  60. data/app/jobs/spree/webhook_delivery_job.rb +16 -0
  61. data/app/paginators/spree/api/paginate.rb +68 -0
  62. data/app/serializers/concerns/spree/api/v2/public_metafields_concern.rb +1 -1
  63. data/app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb +1 -1
  64. data/app/serializers/spree/api/v2/platform/address_serializer.rb +3 -3
  65. data/app/serializers/spree/api/v2/platform/adjustment_serializer.rb +5 -5
  66. data/app/serializers/spree/api/v2/platform/classification_serializer.rb +2 -2
  67. data/app/serializers/spree/api/v2/platform/country_serializer.rb +1 -1
  68. data/app/serializers/spree/api/v2/platform/credit_card_serializer.rb +2 -2
  69. data/app/serializers/spree/api/v2/platform/customer_return_serializer.rb +4 -4
  70. data/app/serializers/spree/api/v2/platform/digital_link_serializer.rb +2 -2
  71. data/app/serializers/spree/api/v2/platform/digital_serializer.rb +1 -1
  72. data/app/serializers/spree/api/v2/platform/gift_card_serializer.rb +2 -2
  73. data/app/serializers/spree/api/v2/platform/inventory_unit_serializer.rb +7 -7
  74. data/app/serializers/spree/api/v2/platform/line_item_serializer.rb +6 -6
  75. data/app/serializers/spree/api/v2/platform/option_type_serializer.rb +1 -1
  76. data/app/serializers/spree/api/v2/platform/option_value_serializer.rb +1 -1
  77. data/app/serializers/spree/api/v2/platform/order_promotion_serializer.rb +2 -2
  78. data/app/serializers/spree/api/v2/platform/order_serializer.rb +15 -15
  79. data/app/serializers/spree/api/v2/platform/payment_capture_event_serializer.rb +1 -1
  80. data/app/serializers/spree/api/v2/platform/payment_method_serializer.rb +1 -1
  81. data/app/serializers/spree/api/v2/platform/payment_serializer.rb +7 -7
  82. data/app/serializers/spree/api/v2/platform/payment_source_serializer.rb +2 -2
  83. data/app/serializers/spree/api/v2/platform/product_serializer.rb +20 -12
  84. data/app/serializers/spree/api/v2/platform/promotion_action_line_item_serializer.rb +2 -2
  85. data/app/serializers/spree/api/v2/platform/promotion_action_serializer.rb +3 -3
  86. data/app/serializers/spree/api/v2/platform/promotion_category_serializer.rb +1 -1
  87. data/app/serializers/spree/api/v2/platform/promotion_rule_serializer.rb +4 -4
  88. data/app/serializers/spree/api/v2/platform/promotion_serializer.rb +4 -4
  89. data/app/serializers/spree/api/v2/platform/prototype_serializer.rb +3 -3
  90. data/app/serializers/spree/api/v2/platform/refund_serializer.rb +5 -5
  91. data/app/serializers/spree/api/v2/platform/reimbursement_serializer.rb +6 -6
  92. data/app/serializers/spree/api/v2/platform/return_authorization_serializer.rb +4 -4
  93. data/app/serializers/spree/api/v2/platform/return_item_serializer.rb +4 -4
  94. data/app/serializers/spree/api/v2/platform/shipment_serializer.rb +8 -8
  95. data/app/serializers/spree/api/v2/platform/shipping_method_serializer.rb +4 -4
  96. data/app/serializers/spree/api/v2/platform/shipping_rate_serializer.rb +3 -3
  97. data/app/serializers/spree/api/v2/platform/state_change_serializer.rb +1 -1
  98. data/app/serializers/spree/api/v2/platform/state_serializer.rb +1 -1
  99. data/app/serializers/spree/api/v2/platform/stock_item_serializer.rb +2 -2
  100. data/app/serializers/spree/api/v2/platform/stock_location_serializer.rb +1 -1
  101. data/app/serializers/spree/api/v2/platform/stock_transfer_serializer.rb +3 -3
  102. data/app/serializers/spree/api/v2/platform/store_credit_event_serializer.rb +1 -1
  103. data/app/serializers/spree/api/v2/platform/store_credit_serializer.rb +5 -5
  104. data/app/serializers/spree/api/v2/platform/store_serializer.rb +1 -1
  105. data/app/serializers/spree/api/v2/platform/tax_category_serializer.rb +1 -1
  106. data/app/serializers/spree/api/v2/platform/tax_rate_serializer.rb +2 -2
  107. data/app/serializers/spree/api/v2/platform/taxon_serializer.rb +5 -5
  108. data/app/serializers/spree/api/v2/platform/taxonomy_serializer.rb +2 -2
  109. data/app/serializers/spree/api/v2/platform/user_serializer.rb +2 -2
  110. data/app/serializers/spree/api/v2/platform/variant_serializer.rb +19 -11
  111. data/app/serializers/spree/api/v2/platform/wished_item_serializer.rb +1 -1
  112. data/app/serializers/spree/api/v2/platform/wishlist_serializer.rb +1 -1
  113. data/app/serializers/spree/api/v2/platform/zone_serializer.rb +1 -1
  114. data/app/serializers/spree/v2/storefront/cart_serializer.rb +9 -9
  115. data/app/serializers/spree/v2/storefront/credit_card_serializer.rb +1 -1
  116. data/app/serializers/spree/v2/storefront/estimated_shipping_rate_serializer.rb +1 -1
  117. data/app/serializers/spree/v2/storefront/line_item_serializer.rb +2 -2
  118. data/app/serializers/spree/v2/storefront/option_type_serializer.rb +1 -1
  119. data/app/serializers/spree/v2/storefront/option_value_serializer.rb +1 -1
  120. data/app/serializers/spree/v2/storefront/payment_serializer.rb +1 -1
  121. data/app/serializers/spree/v2/storefront/payment_source_serializer.rb +2 -2
  122. data/app/serializers/spree/v2/storefront/post_category_serializer.rb +1 -1
  123. data/app/serializers/spree/v2/storefront/post_serializer.rb +1 -1
  124. data/app/serializers/spree/v2/storefront/product_serializer.rb +20 -12
  125. data/app/serializers/spree/v2/storefront/shipment_serializer.rb +4 -4
  126. data/app/serializers/spree/v2/storefront/shipping_rate_serializer.rb +1 -1
  127. data/app/serializers/spree/v2/storefront/store_credit_serializer.rb +3 -3
  128. data/app/serializers/spree/v2/storefront/store_serializer.rb +1 -1
  129. data/app/serializers/spree/v2/storefront/taxon_serializer.rb +6 -6
  130. data/app/serializers/spree/v2/storefront/user_serializer.rb +2 -2
  131. data/app/serializers/spree/v2/storefront/variant_serializer.rb +15 -7
  132. data/app/serializers/spree/v2/storefront/wished_item_serializer.rb +1 -1
  133. data/app/serializers/spree/v2/storefront/wishlist_serializer.rb +1 -1
  134. data/app/services/spree/webhooks/deliver_webhook.rb +83 -0
  135. data/app/subscribers/spree/webhook_event_subscriber.rb +67 -0
  136. data/config/routes.rb +0 -2
  137. data/lib/generators/spree/api/install/install_generator.rb +24 -0
  138. data/lib/spree/api/configuration.rb +3 -0
  139. data/lib/spree/api/dependencies.rb +1 -1
  140. data/lib/spree/api/engine.rb +6 -0
  141. data/lib/spree/api/testing_support/matchers/webhooks.rb +1 -67
  142. data/lib/spree/api/testing_support/spree_webhooks.rb +1 -9
  143. data/lib/spree/api/testing_support/v2/current_order.rb +1 -2
  144. data/lib/spree/api.rb +3 -0
  145. data/lib/spree_api.rb +0 -2
  146. metadata +25 -33
  147. data/app/controllers/spree/api/v2/platform/webhooks/events_controller.rb +0 -25
  148. data/app/controllers/spree/api/v2/platform/webhooks/subscribers_controller.rb +0 -25
  149. data/app/jobs/spree/webhooks/subscribers/make_request_job.rb +0 -17
  150. data/app/models/concerns/spree/webhooks/has_webhooks.rb +0 -95
  151. data/app/models/spree/order/webhooks.rb +0 -39
  152. data/app/models/spree/payment/webhooks.rb +0 -23
  153. data/app/models/spree/product/webhooks.rb +0 -42
  154. data/app/models/spree/shipment/webhooks.rb +0 -19
  155. data/app/models/spree/stock_item/webhooks.rb +0 -40
  156. data/app/models/spree/stock_movement/webhooks.rb +0 -49
  157. data/app/models/spree/variant/webhooks.rb +0 -25
  158. data/app/models/spree/webhooks/base.rb +0 -11
  159. data/app/models/spree/webhooks/event.rb +0 -20
  160. data/app/models/spree/webhooks/event_signature.rb +0 -33
  161. data/app/models/spree/webhooks/subscriber.rb +0 -88
  162. data/app/serializers/spree/api/v2/platform/webhooks/event_serializer.rb +0 -15
  163. data/app/serializers/spree/api/v2/platform/webhooks/subscriber_serializer.rb +0 -13
  164. data/app/services/spree/webhooks/subscribers/handle_request.rb +0 -77
  165. data/app/services/spree/webhooks/subscribers/make_request.rb +0 -83
  166. data/app/services/spree/webhooks/subscribers/queue_requests.rb +0 -27
  167. data/db/migrate/20210902162826_create_spree_webhooks_tables.rb +0 -16
  168. data/db/migrate/20211025162826_create_spree_webhooks_events.rb +0 -14
  169. data/db/migrate/20221221122100_add_secret_key_to_spree_webhooks_subscribers.rb +0 -5
  170. data/db/migrate/20230116204600_backfill_secret_key_for_spree_webhooks_subscribers.rb +0 -5
  171. data/db/migrate/20230116205000_change_secret_key_to_non_null_column.rb +0 -5
  172. data/lib/spree/api/testing_support/factories/webhook_event_factory.rb +0 -27
  173. data/lib/spree/api/testing_support/factories/webhook_subscriber_factory.rb +0 -13
@@ -47,23 +47,23 @@ module Spree
47
47
  end
48
48
 
49
49
  def collection_finder
50
- Spree::Api::Dependencies.storefront_address_finder.constantize
50
+ Spree.api.storefront_address_finder
51
51
  end
52
52
 
53
53
  def collection_serializer
54
- Spree::Api::Dependencies.storefront_address_serializer.constantize
54
+ Spree.api.storefront_address_serializer
55
55
  end
56
56
 
57
57
  def resource_serializer
58
- Spree::Api::Dependencies.storefront_address_serializer.constantize
58
+ Spree.api.storefront_address_serializer
59
59
  end
60
60
 
61
61
  def create_service
62
- Spree::Api::Dependencies.storefront_address_create_service.constantize
62
+ Spree.api.storefront_address_create_service
63
63
  end
64
64
 
65
65
  def update_service
66
- Spree::Api::Dependencies.storefront_address_update_service.constantize
66
+ Spree.api.storefront_address_update_service
67
67
  end
68
68
 
69
69
  def address_params
@@ -30,19 +30,19 @@ module Spree
30
30
  end
31
31
 
32
32
  def collection_serializer
33
- Spree::Api::Dependencies.storefront_credit_card_serializer.constantize
33
+ Spree.api.storefront_credit_card_serializer
34
34
  end
35
35
 
36
36
  def collection_finder
37
- Spree::Api::Dependencies.storefront_credit_card_finder.constantize
37
+ Spree.api.storefront_credit_card_finder
38
38
  end
39
39
 
40
40
  def resource_serializer
41
- Spree::Api::Dependencies.storefront_credit_card_serializer.constantize
41
+ Spree.api.storefront_credit_card_serializer
42
42
  end
43
43
 
44
44
  def destroy_service
45
- Spree::Api::Dependencies.storefront_credit_cards_destroy_service.constantize
45
+ Spree.api.storefront_credit_cards_destroy_service
46
46
  end
47
47
  end
48
48
  end
@@ -24,19 +24,19 @@ module Spree
24
24
  end
25
25
 
26
26
  def collection_serializer
27
- Spree::Api::Dependencies.storefront_order_serializer.constantize
27
+ Spree.api.storefront_order_serializer
28
28
  end
29
29
 
30
30
  def resource_serializer
31
- Spree::Api::Dependencies.storefront_order_serializer.constantize
31
+ Spree.api.storefront_order_serializer
32
32
  end
33
33
 
34
34
  def collection_finder
35
- Spree::Api::Dependencies.storefront_completed_order_finder.constantize
35
+ Spree.api.storefront_completed_order_finder
36
36
  end
37
37
 
38
38
  def resource_finder
39
- Spree::Api::Dependencies.storefront_completed_order_finder.constantize
39
+ Spree.api.storefront_completed_order_finder
40
40
  end
41
41
 
42
42
  def model_class
@@ -23,7 +23,7 @@ module Spree
23
23
  end
24
24
 
25
25
  def resource_serializer
26
- Spree::Api::Dependencies.storefront_user_serializer.constantize
26
+ Spree.api.storefront_user_serializer
27
27
  end
28
28
 
29
29
  def model_class
@@ -31,11 +31,11 @@ module Spree
31
31
  end
32
32
 
33
33
  def create_service
34
- Spree::Api::Dependencies.storefront_account_create_service.constantize
34
+ Spree.api.storefront_account_create_service
35
35
  end
36
36
 
37
37
  def update_service
38
- Spree::Api::Dependencies.storefront_account_update_service.constantize
38
+ Spree.api.storefront_account_update_service
39
39
  end
40
40
 
41
41
  def user_create_params
@@ -141,7 +141,7 @@ module Spree
141
141
 
142
142
  def associate
143
143
  guest_order_token = params[:guest_order_token]
144
- guest_order = ::Spree::Api::Dependencies.storefront_current_order_finder.constantize.new.execute(
144
+ guest_order = ::Spree.api.storefront_current_order_finder.new.execute(
145
145
  store: current_store,
146
146
  user: nil,
147
147
  token: guest_order_token,
@@ -170,47 +170,47 @@ module Spree
170
170
  private
171
171
 
172
172
  def resource_serializer
173
- Spree::Api::Dependencies.storefront_cart_serializer.constantize
173
+ Spree.api.storefront_cart_serializer
174
174
  end
175
175
 
176
176
  def create_service
177
- Spree::Api::Dependencies.storefront_cart_create_service.constantize
177
+ Spree.api.storefront_cart_create_service
178
178
  end
179
179
 
180
180
  def add_item_service
181
- Spree::Api::Dependencies.storefront_cart_add_item_service.constantize
181
+ Spree.api.storefront_cart_add_item_service
182
182
  end
183
183
 
184
184
  def empty_cart_service
185
- Spree::Api::Dependencies.storefront_cart_empty_service.constantize
185
+ Spree.api.storefront_cart_empty_service
186
186
  end
187
187
 
188
188
  def destroy_cart_service
189
- Spree::Api::Dependencies.storefront_cart_destroy_service.constantize
189
+ Spree.api.storefront_cart_destroy_service
190
190
  end
191
191
 
192
192
  def set_item_quantity_service
193
- Spree::Api::Dependencies.storefront_cart_set_item_quantity_service.constantize
193
+ Spree.api.storefront_cart_set_item_quantity_service
194
194
  end
195
195
 
196
196
  def remove_line_item_service
197
- Spree::Api::Dependencies.storefront_cart_remove_line_item_service.constantize
197
+ Spree.api.storefront_cart_remove_line_item_service
198
198
  end
199
199
 
200
200
  def coupon_handler
201
- Spree::Api::Dependencies.storefront_coupon_handler.constantize
201
+ Spree.api.storefront_coupon_handler
202
202
  end
203
203
 
204
204
  def estimate_shipping_rates_service
205
- Spree::Api::Dependencies.storefront_cart_estimate_shipping_rates_service.constantize
205
+ Spree.api.storefront_cart_estimate_shipping_rates_service
206
206
  end
207
207
 
208
208
  def associate_service
209
- Spree::Api::Dependencies.storefront_cart_associate_service.constantize
209
+ Spree.api.storefront_cart_associate_service
210
210
  end
211
211
 
212
212
  def change_currency_service
213
- Spree::Api::Dependencies.storefront_cart_change_currency_service.constantize
213
+ Spree.api.storefront_cart_change_currency_service
214
214
  end
215
215
 
216
216
  def line_item
@@ -226,7 +226,7 @@ module Spree
226
226
  end
227
227
 
228
228
  def estimate_shipping_rates_serializer
229
- Spree::Api::Dependencies.storefront_estimated_shipment_serializer.constantize
229
+ Spree.api.storefront_estimated_shipment_serializer
230
230
  end
231
231
 
232
232
  def serialize_estimated_shipping_rates(shipping_rates)
@@ -114,51 +114,51 @@ module Spree
114
114
  private
115
115
 
116
116
  def resource_serializer
117
- Spree::Api::Dependencies.storefront_cart_serializer.constantize
117
+ Spree.api.storefront_cart_serializer
118
118
  end
119
119
 
120
120
  def next_service
121
- Spree::Api::Dependencies.storefront_checkout_next_service.constantize
121
+ Spree.api.storefront_checkout_next_service
122
122
  end
123
123
 
124
124
  def advance_service
125
- Spree::Api::Dependencies.storefront_checkout_advance_service.constantize
125
+ Spree.api.storefront_checkout_advance_service
126
126
  end
127
127
 
128
128
  def add_store_credit_service
129
- Spree::Api::Dependencies.storefront_checkout_add_store_credit_service.constantize
129
+ Spree.api.storefront_checkout_add_store_credit_service
130
130
  end
131
131
 
132
132
  def remove_store_credit_service
133
- Spree::Api::Dependencies.storefront_checkout_remove_store_credit_service.constantize
133
+ Spree.api.storefront_checkout_remove_store_credit_service
134
134
  end
135
135
 
136
136
  def complete_service
137
- Spree::Api::Dependencies.storefront_checkout_complete_service.constantize
137
+ Spree.api.storefront_checkout_complete_service
138
138
  end
139
139
 
140
140
  def update_service
141
- Spree::Api::Dependencies.storefront_checkout_update_service.constantize
141
+ Spree.api.storefront_checkout_update_service
142
142
  end
143
143
 
144
144
  def payment_methods_serializer
145
- Spree::Api::Dependencies.storefront_payment_method_serializer.constantize
145
+ Spree.api.storefront_payment_method_serializer
146
146
  end
147
147
 
148
148
  def shipping_rates_service
149
- Spree::Api::Dependencies.storefront_checkout_get_shipping_rates_service.constantize
149
+ Spree.api.storefront_checkout_get_shipping_rates_service
150
150
  end
151
151
 
152
152
  def shipping_rates_serializer
153
- Spree::Api::Dependencies.storefront_shipment_serializer.constantize
153
+ Spree.api.storefront_shipment_serializer
154
154
  end
155
155
 
156
156
  def create_payment_service
157
- Spree::Api::Dependencies.storefront_payment_create_service.constantize
157
+ Spree.api.storefront_payment_create_service
158
158
  end
159
159
 
160
160
  def select_shipping_method_service
161
- Spree::Api::Dependencies.storefront_checkout_select_shipping_method_service.constantize
161
+ Spree.api.storefront_checkout_select_shipping_method_service
162
162
  end
163
163
 
164
164
  def serialize_payment_methods(payment_methods)
@@ -31,15 +31,15 @@ module Spree
31
31
  end
32
32
 
33
33
  def resource_serializer
34
- Spree::Api::Dependencies.storefront_country_serializer.constantize
34
+ Spree.api.storefront_country_serializer
35
35
  end
36
36
 
37
37
  def collection_serializer
38
- Spree::Api::Dependencies.storefront_country_serializer.constantize
38
+ Spree.api.storefront_country_serializer
39
39
  end
40
40
 
41
41
  def collection_finder
42
- Spree::Api::Dependencies.storefront_country_finder.constantize
42
+ Spree.api.storefront_country_finder
43
43
  end
44
44
 
45
45
  def model_class
@@ -17,11 +17,11 @@ module Spree
17
17
  end
18
18
 
19
19
  def resource_finder
20
- Spree::Api::Dependencies.storefront_completed_order_finder.constantize
20
+ Spree.api.storefront_completed_order_finder
21
21
  end
22
22
 
23
23
  def resource_serializer
24
- Spree::Api::Dependencies.storefront_cart_serializer.constantize
24
+ Spree.api.storefront_cart_serializer
25
25
  end
26
26
 
27
27
  def ensure_order_token
@@ -6,11 +6,11 @@ module Spree
6
6
  private
7
7
 
8
8
  def collection_serializer
9
- Spree::Api::Dependencies.storefront_policy_serializer.constantize
9
+ Spree.api.storefront_policy_serializer
10
10
  end
11
11
 
12
12
  def resource_serializer
13
- Spree::Api::Dependencies.storefront_policy_serializer.constantize
13
+ Spree.api.storefront_policy_serializer
14
14
  end
15
15
 
16
16
  def resource
@@ -18,11 +18,11 @@ module Spree
18
18
  end
19
19
 
20
20
  def collection_finder
21
- Spree::Api::Dependencies.storefront_posts_finder.constantize
21
+ Spree.api.storefront_posts_finder
22
22
  end
23
23
 
24
24
  def collection_sorter
25
- Spree::Api::Dependencies.storefront_posts_sorter.constantize
25
+ Spree.api.storefront_posts_sorter
26
26
  end
27
27
 
28
28
  def collection_serializer
@@ -21,26 +21,23 @@ module Spree
21
21
  end
22
22
 
23
23
  def variant_includes
24
- [
25
- :prices,
26
- { option_values: [:option_type] }
27
- ]
24
+ [:images, :prices, { stock_items: :stock_location }]
28
25
  end
29
26
 
30
27
  def collection_sorter
31
- Spree::Api::Dependencies.storefront_products_sorter.constantize
28
+ Spree.api.storefront_products_sorter
32
29
  end
33
30
 
34
31
  def collection_finder
35
- Spree::Api::Dependencies.storefront_products_finder.constantize
32
+ Spree.api.storefront_products_finder
36
33
  end
37
34
 
38
35
  def collection_serializer
39
- Spree::Api::Dependencies.storefront_product_serializer.constantize
36
+ Spree.api.storefront_product_serializer
40
37
  end
41
38
 
42
39
  def resource_serializer
43
- Spree::Api::Dependencies.storefront_product_serializer.constantize
40
+ Spree.api.storefront_product_serializer
44
41
  end
45
42
 
46
43
  def model_class
@@ -18,7 +18,7 @@ module Spree
18
18
  end
19
19
 
20
20
  def resource_serializer
21
- Spree::Api::Dependencies.storefront_store_serializer.constantize
21
+ Spree.api.storefront_store_serializer
22
22
  end
23
23
  end
24
24
  end
@@ -6,15 +6,15 @@ module Spree
6
6
  private
7
7
 
8
8
  def collection_serializer
9
- Spree::Api::Dependencies.storefront_taxon_serializer.constantize
9
+ Spree.api.storefront_taxon_serializer
10
10
  end
11
11
 
12
12
  def resource_serializer
13
- Spree::Api::Dependencies.storefront_taxon_serializer.constantize
13
+ Spree.api.storefront_taxon_serializer
14
14
  end
15
15
 
16
16
  def collection_finder
17
- Spree::Api::Dependencies.storefront_taxon_finder.constantize
17
+ Spree.api.storefront_taxon_finder
18
18
  end
19
19
 
20
20
  def paginated_collection
@@ -19,11 +19,11 @@ module Spree
19
19
  end
20
20
 
21
21
  def collection_finder
22
- Spree::Api::Dependencies.storefront_variant_finder.constantize
22
+ Spree.api.storefront_variant_finder
23
23
  end
24
24
 
25
25
  def collection_serializer
26
- Spree::Api::Dependencies.storefront_variant_serializer.constantize
26
+ Spree.api.storefront_variant_serializer
27
27
  end
28
28
 
29
29
  def scope_includes
@@ -5,37 +5,57 @@ module Spree
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  class_methods do
8
- def find_price(product_or_variant, currency)
9
- product_or_variant.price_in(currency)
8
+ def find_price(product_or_variant, currency, context_options = {})
9
+ variant = product_or_variant.is_a?(Spree::Product) ? product_or_variant.default_variant : product_or_variant
10
+
11
+ if context_options.present?
12
+ context = build_pricing_context(variant, currency, context_options)
13
+ variant.price_for(context)
14
+ else
15
+ variant.price_in(currency)
16
+ end
10
17
  end
11
18
 
12
- def price(product_or_variant, currency)
13
- price = find_price(product_or_variant, currency)
19
+ def price(product_or_variant, currency, context_options = {})
20
+ price = find_price(product_or_variant, currency, context_options)
14
21
  return nil if price.new_record?
15
22
 
16
23
  price.amount
17
24
  end
18
25
 
19
- def display_price(product_or_variant, currency)
20
- price = find_price(product_or_variant, currency)
26
+ def display_price(product_or_variant, currency, context_options = {})
27
+ price = find_price(product_or_variant, currency, context_options)
21
28
  return nil if price.new_record?
22
29
 
23
30
  Spree::Money.new(price.amount, currency: currency).to_s
24
31
  end
25
32
 
26
- def compare_at_price(product_or_variant, currency)
27
- price = find_price(product_or_variant, currency)
33
+ def compare_at_price(product_or_variant, currency, context_options = {})
34
+ price = find_price(product_or_variant, currency, context_options)
28
35
  return nil if price.new_record? || price.compare_at_amount.blank?
29
36
 
30
37
  price.compare_at_amount
31
38
  end
32
39
 
33
- def display_compare_at_price(product_or_variant, currency)
34
- price = find_price(product_or_variant, currency)
40
+ def display_compare_at_price(product_or_variant, currency, context_options = {})
41
+ price = find_price(product_or_variant, currency, context_options)
35
42
  return nil if price.new_record? || price.compare_at_amount.blank?
36
43
 
37
44
  Spree::Money.new(price.compare_at_amount, currency: currency).to_s
38
45
  end
46
+
47
+ private
48
+
49
+ def build_pricing_context(variant, currency, options)
50
+ Spree::Pricing::Context.new(
51
+ variant: variant,
52
+ currency: currency,
53
+ store: options[:store],
54
+ zone: options[:tax_zone] || options[:zone],
55
+ user: options[:user],
56
+ quantity: options[:quantity]
57
+ )
58
+ end
39
59
  end
40
60
  end
41
61
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ class WebhookDeliveryJob < Spree::BaseJob
5
+ queue_as Spree.queues.webhooks
6
+
7
+ retry_on StandardError, wait: :polynomially_longer, attempts: 5
8
+
9
+ def perform(delivery_id, secret_key)
10
+ delivery = Spree::WebhookDelivery.find_by(id: delivery_id)
11
+ return if delivery.nil?
12
+
13
+ Spree::Webhooks::DeliverWebhook.call(delivery: delivery, secret_key: secret_key)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,68 @@
1
+ require 'pagy'
2
+
3
+ module Spree
4
+ module Api
5
+ class Paginate
6
+ include Pagy::Method
7
+
8
+ def initialize(collection, params)
9
+ @collection = collection
10
+ @params = params
11
+
12
+ per_page_limit = Spree::Api::Config[:api_v2_per_page_limit]
13
+ @per_page = if params[:per_page].to_i.between?(1, per_page_limit)
14
+ params[:per_page].to_i
15
+ else
16
+ 25
17
+ end
18
+ end
19
+
20
+ def call
21
+ # Pass params as a hash-based request object for Pagy
22
+ # Pagy::Request accepts a hash with :params key
23
+ # Use to_unsafe_h for ActionController::Parameters, fallback to to_h for regular hashes
24
+ params_hash = @params.respond_to?(:to_unsafe_h) ? @params.to_unsafe_h : @params.to_h
25
+ request_hash = { params: params_hash }
26
+
27
+ # Uses countish paginator which is faster as it avoids COUNT queries
28
+ pagy, records = pagy(:countish, @collection, limit: @per_page, request: request_hash)
29
+
30
+ PagyCollection.new(records, pagy)
31
+ end
32
+ end
33
+
34
+ # Wrapper providing Kaminari-compatible interface for CollectionOptionsHelpers
35
+ # Includes Enumerable so jsonapi-serializer detects it as a collection
36
+ class PagyCollection < SimpleDelegator
37
+ include Enumerable
38
+
39
+ attr_reader :pagy
40
+
41
+ def initialize(records, pagy)
42
+ super(records)
43
+ @pagy = pagy
44
+ end
45
+
46
+ # Enumerable requires #each to be defined
47
+ def each(&block)
48
+ __getobj__.each(&block)
49
+ end
50
+
51
+ def next_page
52
+ @pagy.next
53
+ end
54
+
55
+ def prev_page
56
+ @pagy.previous
57
+ end
58
+
59
+ def total_pages
60
+ @pagy.pages
61
+ end
62
+
63
+ def total_count
64
+ @pagy.count
65
+ end
66
+ end
67
+ end
68
+ end
@@ -5,7 +5,7 @@ module Spree
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  included do
8
- has_many :metafields, serializer: Spree::Api::Dependencies.storefront_metafield_serializer.constantize,
8
+ has_many :metafields, serializer: Spree.api.storefront_metafield_serializer,
9
9
  record_type: :metafield,
10
10
  object_method_name: :public_metafields
11
11
  end
@@ -20,7 +20,7 @@ module Spree
20
20
 
21
21
  metafield_enabled_resources = Spree::MetafieldDefinition.available_resources || []
22
22
  if metafield_enabled_resources.map(&:name).include?(model_klazz.name) && model_klazz.method_defined?(:metafields)
23
- base.has_many :metafields, serializer: Spree::Api::Dependencies.platform_metafield_serializer.constantize,
23
+ base.has_many :metafields, serializer: Spree.api.platform_metafield_serializer,
24
24
  record_type: :metafield,
25
25
  object_method_name: :metafields
26
26
  end
@@ -5,9 +5,9 @@ module Spree
5
5
  class AddressSerializer < BaseSerializer
6
6
  include ResourceSerializerConcern
7
7
 
8
- belongs_to :country, serializer: Spree::Api::Dependencies.platform_country_serializer.constantize
9
- belongs_to :state, serializer: Spree::Api::Dependencies.platform_state_serializer.constantize
10
- belongs_to :user, serializer: Spree::Api::Dependencies.platform_user_serializer.constantize
8
+ belongs_to :country, serializer: Spree.api.platform_country_serializer
9
+ belongs_to :state, serializer: Spree.api.platform_state_serializer
10
+ belongs_to :user, serializer: Spree.api.platform_user_serializer
11
11
  end
12
12
  end
13
13
  end
@@ -5,13 +5,13 @@ module Spree
5
5
  class AdjustmentSerializer < BaseSerializer
6
6
  include ResourceSerializerConcern
7
7
 
8
- belongs_to :order, serializer: Spree::Api::Dependencies.platform_order_serializer.constantize
8
+ belongs_to :order, serializer: Spree.api.platform_order_serializer
9
9
  belongs_to :adjustable, polymorphic: true
10
10
  belongs_to :source, polymorphic: {
11
- Spree::Promotion::Actions::FreeShipping => Spree::Api::Dependencies.platform_promotion_action_serializer.constantize,
12
- Spree::Promotion::Actions::CreateAdjustment => Spree::Api::Dependencies.platform_promotion_action_serializer.constantize,
13
- Spree::Promotion::Actions::CreateItemAdjustments => Spree::Api::Dependencies.platform_promotion_action_serializer.constantize,
14
- Spree::Promotion::Actions::CreateLineItems => Spree::Api::Dependencies.platform_promotion_action_serializer.constantize
11
+ Spree::Promotion::Actions::FreeShipping => Spree.api.platform_promotion_action_serializer,
12
+ Spree::Promotion::Actions::CreateAdjustment => Spree.api.platform_promotion_action_serializer,
13
+ Spree::Promotion::Actions::CreateItemAdjustments => Spree.api.platform_promotion_action_serializer,
14
+ Spree::Promotion::Actions::CreateLineItems => Spree.api.platform_promotion_action_serializer
15
15
  }
16
16
  end
17
17
  end
@@ -5,8 +5,8 @@ module Spree
5
5
  class ClassificationSerializer < BaseSerializer
6
6
  include ResourceSerializerConcern
7
7
 
8
- belongs_to :product, serializer: Spree::Api::Dependencies.platform_product_serializer.constantize
9
- belongs_to :taxon, serializer: Spree::Api::Dependencies.platform_taxon_serializer.constantize
8
+ belongs_to :product, serializer: Spree.api.platform_product_serializer
9
+ belongs_to :taxon, serializer: Spree.api.platform_taxon_serializer
10
10
  end
11
11
  end
12
12
  end
@@ -5,7 +5,7 @@ module Spree
5
5
  class CountrySerializer < BaseSerializer
6
6
  include ResourceSerializerConcern
7
7
 
8
- has_many :states, serializer: Spree::Api::Dependencies.platform_state_serializer.constantize
8
+ has_many :states, serializer: Spree.api.platform_state_serializer
9
9
  end
10
10
  end
11
11
  end
@@ -5,8 +5,8 @@ module Spree
5
5
  class CreditCardSerializer < BaseSerializer
6
6
  include ResourceSerializerConcern
7
7
 
8
- belongs_to :payment_method, serializer: Spree::Api::Dependencies.platform_payment_method_serializer.constantize
9
- belongs_to :user, serializer: Spree::Api::Dependencies.platform_user_serializer.constantize
8
+ belongs_to :payment_method, serializer: Spree.api.platform_payment_method_serializer
9
+ belongs_to :user, serializer: Spree.api.platform_user_serializer
10
10
  end
11
11
  end
12
12
  end
@@ -5,11 +5,11 @@ module Spree
5
5
  class CustomerReturnSerializer < BaseSerializer
6
6
  include ResourceSerializerConcern
7
7
 
8
- belongs_to :stock_location, serializer: Spree::Api::Dependencies.platform_stock_location_serializer.constantize
8
+ belongs_to :stock_location, serializer: Spree.api.platform_stock_location_serializer
9
9
 
10
- has_many :reimbursements, serializer: Spree::Api::Dependencies.platform_reimbursement_serializer.constantize
11
- has_many :return_items, serializer: Spree::Api::Dependencies.platform_return_item_serializer.constantize
12
- has_many :return_authorizations, serializer: Spree::Api::Dependencies.platform_return_authorization_serializer.constantize
10
+ has_many :reimbursements, serializer: Spree.api.platform_reimbursement_serializer
11
+ has_many :return_items, serializer: Spree.api.platform_return_item_serializer
12
+ has_many :return_authorizations, serializer: Spree.api.platform_return_authorization_serializer
13
13
  end
14
14
  end
15
15
  end