workarea-api-admin 4.4.6
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 +7 -0
- data/.gitignore +12 -0
- data/README.md +82 -0
- data/Rakefile +10 -0
- data/app/assets/images/workarea/api/admin/icons/api.svg +1 -0
- data/app/controllers/workarea/api/admin/application_controller.rb +73 -0
- data/app/controllers/workarea/api/admin/categories_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/category_product_rules_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/content_assets_controller.rb +299 -0
- data/app/controllers/workarea/api/admin/content_controller.rb +268 -0
- data/app/controllers/workarea/api/admin/discounts_controller.rb +271 -0
- data/app/controllers/workarea/api/admin/email_signups_controller.rb +108 -0
- data/app/controllers/workarea/api/admin/fulfillments_controller.rb +268 -0
- data/app/controllers/workarea/api/admin/inventory_skus_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/navigation_menus_controller.rb +267 -0
- data/app/controllers/workarea/api/admin/navigation_taxons_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/orders_controller.rb +160 -0
- data/app/controllers/workarea/api/admin/pages_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/payment_profiles_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/payment_transactions_controller.rb +108 -0
- data/app/controllers/workarea/api/admin/payments_controller.rb +115 -0
- data/app/controllers/workarea/api/admin/prices_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/pricing_skus_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/product_images_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/products_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/promo_code_lists_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/recommendation_settings_controller.rb +122 -0
- data/app/controllers/workarea/api/admin/redirects_controller.rb +305 -0
- data/app/controllers/workarea/api/admin/releases_controller.rb +304 -0
- data/app/controllers/workarea/api/admin/saved_addresses_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/saved_credit_cards_controller.rb +256 -0
- data/app/controllers/workarea/api/admin/shipping_rates_controller.rb +232 -0
- data/app/controllers/workarea/api/admin/shipping_services_controller.rb +299 -0
- data/app/controllers/workarea/api/admin/shippings_controller.rb +105 -0
- data/app/controllers/workarea/api/admin/swagger_controller.rb +41 -0
- data/app/controllers/workarea/api/admin/tax_categories_controller.rb +242 -0
- data/app/controllers/workarea/api/admin/tax_rates_controller.rb +292 -0
- data/app/controllers/workarea/api/admin/users_controller.rb +296 -0
- data/app/controllers/workarea/api/admin/variants_controller.rb +232 -0
- data/app/models/workarea/api/admin/bulk_upsert.rb +74 -0
- data/app/models/workarea/user.decorator +7 -0
- data/app/views/workarea/admin/users/_api_permissions.html.haml +6 -0
- data/app/workers/workarea/perform_api_bulk_upsert.rb +15 -0
- data/bin/rails +18 -0
- data/config/initializers/append_points.rb +4 -0
- data/config/initializers/config.rb +15 -0
- data/config/locales/en.yml +9 -0
- data/config/routes.rb +81 -0
- data/lib/workarea/api/admin.rb +21 -0
- data/lib/workarea/api/admin/engine.rb +14 -0
- data/lib/workarea/api/admin/swagger.rb +106 -0
- data/test/documentation/workarea/api/admin/categories_documentation_test.rb +106 -0
- data/test/documentation/workarea/api/admin/category_product_rules_documentation_test.rb +78 -0
- data/test/documentation/workarea/api/admin/content_assets_documentation_test.rb +94 -0
- data/test/documentation/workarea/api/admin/content_documentation_test.rb +87 -0
- data/test/documentation/workarea/api/admin/discounts_documentation_test.rb +85 -0
- data/test/documentation/workarea/api/admin/email_signups_documentation_test.rb +41 -0
- data/test/documentation/workarea/api/admin/fulfillment_documentation_test.rb +84 -0
- data/test/documentation/workarea/api/admin/inventory_skus_documentation_test.rb +95 -0
- data/test/documentation/workarea/api/admin/navigation_menus_documentation_test.rb +81 -0
- data/test/documentation/workarea/api/admin/navigation_taxons_documentation_test.rb +94 -0
- data/test/documentation/workarea/api/admin/orders_documentation_test.rb +65 -0
- data/test/documentation/workarea/api/admin/pages_documentation_test.rb +93 -0
- data/test/documentation/workarea/api/admin/payment_profiles_documentation_test.rb +98 -0
- data/test/documentation/workarea/api/admin/payment_transactions_documentation_test.rb +43 -0
- data/test/documentation/workarea/api/admin/payments_documentation_test.rb +41 -0
- data/test/documentation/workarea/api/admin/prices_documentation_test.rb +82 -0
- data/test/documentation/workarea/api/admin/pricing_skus_documentation_test.rb +95 -0
- data/test/documentation/workarea/api/admin/product_images_documentation_test.rb +101 -0
- data/test/documentation/workarea/api/admin/products_documentation_test.rb +96 -0
- data/test/documentation/workarea/api/admin/promo_code_lists_documentation_test.rb +94 -0
- data/test/documentation/workarea/api/admin/recommendation_settings_documentation_test.rb +37 -0
- data/test/documentation/workarea/api/admin/redirects_documentation_test.rb +96 -0
- data/test/documentation/workarea/api/admin/release_changes_documentation_test.rb +32 -0
- data/test/documentation/workarea/api/admin/releases_documentation_test.rb +93 -0
- data/test/documentation/workarea/api/admin/saved_addresses_documentation_test.rb +92 -0
- data/test/documentation/workarea/api/admin/saved_credit_cards_documentation_test.rb +86 -0
- data/test/documentation/workarea/api/admin/shipping_rates_documentation_test.rb +78 -0
- data/test/documentation/workarea/api/admin/shipping_services_documentation_test.rb +93 -0
- data/test/documentation/workarea/api/admin/shippings_documentation_test.rb +41 -0
- data/test/documentation/workarea/api/admin/tax_categories_documentation_test.rb +95 -0
- data/test/documentation/workarea/api/admin/tax_rates_documentation_test.rb +78 -0
- data/test/documentation/workarea/api/admin/users_documentation_test.rb +99 -0
- data/test/documentation/workarea/api/admin/variants_documentation_test.rb +80 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/config/manifest.js +4 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/jobs/application_job.rb +2 -0
- data/test/dummy/app/mailers/.keep +0 -0
- data/test/dummy/app/mailers/application_mailer.rb +4 -0
- data/test/dummy/app/models/.keep +0 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +34 -0
- data/test/dummy/bin/update +29 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +25 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/cable.yml +9 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +55 -0
- data/test/dummy/config/environments/production.rb +86 -0
- data/test/dummy/config/environments/test.rb +43 -0
- data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/new_framework_defaults.rb +21 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/workarea.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/puma.rb +47 -0
- data/test/dummy/config/routes.rb +6 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config/spring.rb +6 -0
- data/test/dummy/db/seeds.rb +2 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
- data/test/dummy/public/apple-touch-icon.png +0 -0
- data/test/dummy/public/favicon.ico +1 -0
- data/test/integration/workarea/api/admin/audit_log_integration_test.rb +20 -0
- data/test/integration/workarea/api/admin/authentication_integration_test.rb +61 -0
- data/test/integration/workarea/api/admin/categories_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/category_product_rules_integration_test.rb +58 -0
- data/test/integration/workarea/api/admin/content_assets_integration_test.rb +65 -0
- data/test/integration/workarea/api/admin/content_integration_test.rb +59 -0
- data/test/integration/workarea/api/admin/discounts_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/email_signups_integration_test.rb +32 -0
- data/test/integration/workarea/api/admin/error_handling_integration_test.rb +16 -0
- data/test/integration/workarea/api/admin/fulfillments_integration_test.rb +62 -0
- data/test/integration/workarea/api/admin/inventory_skus_integration_test.rb +70 -0
- data/test/integration/workarea/api/admin/navigation_menus_integration_test.rb +54 -0
- data/test/integration/workarea/api/admin/navigation_taxons_integration_test.rb +63 -0
- data/test/integration/workarea/api/admin/orders_integration_test.rb +53 -0
- data/test/integration/workarea/api/admin/pages_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/payment_profiles_integration_test.rb +75 -0
- data/test/integration/workarea/api/admin/payment_transactions_integration_test.rb +45 -0
- data/test/integration/workarea/api/admin/payments_integration_test.rb +29 -0
- data/test/integration/workarea/api/admin/prices_integration_test.rb +55 -0
- data/test/integration/workarea/api/admin/pricing_skus_integration_test.rb +72 -0
- data/test/integration/workarea/api/admin/product_images_integration_test.rb +56 -0
- data/test/integration/workarea/api/admin/products_integration_test.rb +66 -0
- data/test/integration/workarea/api/admin/promo_code_lists_integration_test.rb +70 -0
- data/test/integration/workarea/api/admin/recommendation_settings_integration_test.rb +41 -0
- data/test/integration/workarea/api/admin/redirects_integration_test.rb +69 -0
- data/test/integration/workarea/api/admin/release_changes_integration_test.rb +32 -0
- data/test/integration/workarea/api/admin/releases_integration_test.rb +60 -0
- data/test/integration/workarea/api/admin/saved_addresses_integration_test.rb +70 -0
- data/test/integration/workarea/api/admin/saved_credit_cards_integration_test.rb +76 -0
- data/test/integration/workarea/api/admin/shipping_rates_integration_test.rb +54 -0
- data/test/integration/workarea/api/admin/shipping_services_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/shippings_integration_test.rb +34 -0
- data/test/integration/workarea/api/admin/tax_categories_integration_test.rb +64 -0
- data/test/integration/workarea/api/admin/tax_rates_integration_test.rb +66 -0
- data/test/integration/workarea/api/admin/users_integration_test.rb +67 -0
- data/test/integration/workarea/api/admin/variants_integration_test.rb +59 -0
- data/test/models/workarea/api/admin/bulk_upsert_test.rb +79 -0
- data/test/test_helper.rb +10 -0
- data/test/vcr_cassettes/product_image_from_url.yml +43 -0
- data/workarea-api-admin.gemspec +18 -0
- metadata +252 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module Api
|
|
3
|
+
module Admin
|
|
4
|
+
class SavedCreditCardsController < Admin::ApplicationController
|
|
5
|
+
before_action :find_payment_profile
|
|
6
|
+
before_action :find_saved_credit_card, except: [:index, :create, :bulk]
|
|
7
|
+
|
|
8
|
+
swagger_path '/payment_profiles/{id}/saved_credit_cards' do
|
|
9
|
+
operation :get do
|
|
10
|
+
key :summary, 'All Saved Credit Cards'
|
|
11
|
+
key :description, 'Returns all saved credit cards for a payment profile'
|
|
12
|
+
key :operationId, 'listSavedCreditCards'
|
|
13
|
+
key :produces, ['application/json']
|
|
14
|
+
|
|
15
|
+
parameter do
|
|
16
|
+
key :name, :id
|
|
17
|
+
key :in, :path
|
|
18
|
+
key :description, 'payment profile ID'
|
|
19
|
+
key :required, true
|
|
20
|
+
key :type, :string
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
response 200 do
|
|
24
|
+
key :description, 'Saved credit cards'
|
|
25
|
+
schema do
|
|
26
|
+
key :type, :object
|
|
27
|
+
property :saved_credit_cards do
|
|
28
|
+
key :type, :array
|
|
29
|
+
items do
|
|
30
|
+
key :'$ref', 'Workarea::Payment::SavedCreditCard'
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
operation :post do
|
|
38
|
+
key :summary, 'Create Saved Credit Card'
|
|
39
|
+
key :description, 'Creates a new saved credit card'
|
|
40
|
+
key :operationId, 'addSavedCreditCard'
|
|
41
|
+
key :produces, ['application/json']
|
|
42
|
+
|
|
43
|
+
parameter do
|
|
44
|
+
key :name, :id
|
|
45
|
+
key :in, :path
|
|
46
|
+
key :description, 'saved credit card ID'
|
|
47
|
+
key :required, true
|
|
48
|
+
key :type, :string
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
parameter do
|
|
52
|
+
key :name, :body
|
|
53
|
+
key :in, :body
|
|
54
|
+
key :description, 'Saved credit card to add'
|
|
55
|
+
key :required, true
|
|
56
|
+
schema do
|
|
57
|
+
key :type, :object
|
|
58
|
+
property :saved_credit_card do
|
|
59
|
+
key :'$ref', 'Workarea::Payment::SavedCreditCard'
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
response 201 do
|
|
65
|
+
key :description, 'Saved credit card created'
|
|
66
|
+
schema do
|
|
67
|
+
key :type, :object
|
|
68
|
+
property :saved_credit_card do
|
|
69
|
+
key :'$ref', 'Workarea::Payment::SavedCreditCard'
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
response 422 do
|
|
75
|
+
key :description, 'Validation failure'
|
|
76
|
+
schema do
|
|
77
|
+
key :type, :object
|
|
78
|
+
property :problem do
|
|
79
|
+
key :type, :string
|
|
80
|
+
end
|
|
81
|
+
property :document do
|
|
82
|
+
key :'$ref', 'Workarea::Payment::SavedCreditCard'
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def index
|
|
90
|
+
@saved_credit_cards = @payment_profile.credit_cards.page(params[:page])
|
|
91
|
+
respond_with saved_credit_cards: @saved_credit_cards
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def create
|
|
95
|
+
@saved_credit_card = @payment_profile.credit_cards.create!(
|
|
96
|
+
params[:saved_credit_card]
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
respond_with(
|
|
100
|
+
{ saved_credit_card: @saved_credit_card },
|
|
101
|
+
{ status: :created,
|
|
102
|
+
location: payment_profile_saved_credit_card_path(
|
|
103
|
+
@payment_profile,
|
|
104
|
+
@saved_credit_card
|
|
105
|
+
) }
|
|
106
|
+
)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def show
|
|
110
|
+
respond_with saved_credit_card: @saved_credit_card
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
swagger_path '/payment_profiles/{payment_profile_id}/saved_credit_cards/{id}' do
|
|
114
|
+
operation :patch do
|
|
115
|
+
key :summary, 'Update a Saved Credit Card'
|
|
116
|
+
key :description, 'Updates attributes on a saved credit card'
|
|
117
|
+
key :operationId, 'updateSavedCreditCard'
|
|
118
|
+
|
|
119
|
+
parameter do
|
|
120
|
+
key :name, :payment_profile_id
|
|
121
|
+
key :in, :path
|
|
122
|
+
key :description, 'ID of payment profile'
|
|
123
|
+
key :required, true
|
|
124
|
+
key :type, :string
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
parameter do
|
|
128
|
+
key :name, :id
|
|
129
|
+
key :in, :path
|
|
130
|
+
key :description, 'ID of saved credit card to update'
|
|
131
|
+
key :required, true
|
|
132
|
+
key :type, :string
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
parameter do
|
|
136
|
+
key :name, :body
|
|
137
|
+
key :in, :body
|
|
138
|
+
key :description, 'New attributes'
|
|
139
|
+
key :required, true
|
|
140
|
+
schema do
|
|
141
|
+
key :type, :object
|
|
142
|
+
property :saved_credit_card do
|
|
143
|
+
key :'$ref', 'Workarea::Payment::SavedCreditCard'
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
response 204 do
|
|
149
|
+
key :description, 'Saved credit card updated successfully'
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
response 422 do
|
|
153
|
+
key :description, 'Validation failure'
|
|
154
|
+
schema do
|
|
155
|
+
key :type, :object
|
|
156
|
+
property :problem do
|
|
157
|
+
key :type, :string
|
|
158
|
+
end
|
|
159
|
+
property :document do
|
|
160
|
+
key :'$ref', 'Workarea::Payment::SavedCreditCard'
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
response 404 do
|
|
166
|
+
key :description, 'Payment profile or saved credit card not found'
|
|
167
|
+
schema do
|
|
168
|
+
key :type, :object
|
|
169
|
+
property :problem do
|
|
170
|
+
key :type, :string
|
|
171
|
+
end
|
|
172
|
+
property :params do
|
|
173
|
+
key :type, :object
|
|
174
|
+
key :additionalProperties, true
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
operation :delete do
|
|
181
|
+
key :summary, 'Remove a Saved Credit Card'
|
|
182
|
+
key :description, 'Remove a saved credit card'
|
|
183
|
+
key :operationId, 'removeSavedCreditCard'
|
|
184
|
+
|
|
185
|
+
parameter do
|
|
186
|
+
key :name, :payment_profile_id
|
|
187
|
+
key :in, :path
|
|
188
|
+
key :description, 'ID of payment profile'
|
|
189
|
+
key :required, true
|
|
190
|
+
key :type, :string
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
parameter do
|
|
194
|
+
key :name, :id
|
|
195
|
+
key :in, :path
|
|
196
|
+
key :description, 'ID of saved credit card to update'
|
|
197
|
+
key :required, true
|
|
198
|
+
key :type, :string
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
response 204 do
|
|
202
|
+
key :description, 'Saved credit card removed successfully'
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
response 404 do
|
|
206
|
+
key :description, 'Payment profile or saved credit card not found'
|
|
207
|
+
schema do
|
|
208
|
+
key :type, :object
|
|
209
|
+
property :problem do
|
|
210
|
+
key :type, :string
|
|
211
|
+
end
|
|
212
|
+
property :params do
|
|
213
|
+
key :type, :object
|
|
214
|
+
key :additionalProperties, true
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def update
|
|
222
|
+
@saved_credit_card.update_attributes!(params[:saved_credit_card])
|
|
223
|
+
respond_with saved_credit_card: @saved_credit_card
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def bulk
|
|
227
|
+
data = params[:saved_credit_cards].presence || []
|
|
228
|
+
data.map!(&:to_h)
|
|
229
|
+
data.map! { |attrs| attrs.merge(profile_id: @payment_profile.id) }
|
|
230
|
+
|
|
231
|
+
@bulk = Api::Admin::BulkUpsert.create!(
|
|
232
|
+
klass: Payment::SavedCreditCard,
|
|
233
|
+
data: data
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
head :no_content
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
def destroy
|
|
240
|
+
@saved_credit_card.destroy
|
|
241
|
+
head :no_content
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
private
|
|
245
|
+
|
|
246
|
+
def find_payment_profile
|
|
247
|
+
@payment_profile = Payment::Profile.find(params[:payment_profile_id])
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
def find_saved_credit_card
|
|
251
|
+
@saved_credit_card = @payment_profile.credit_cards.find(params[:id])
|
|
252
|
+
end
|
|
253
|
+
end
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
end
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module Api
|
|
3
|
+
module Admin
|
|
4
|
+
class ShippingRatesController < Admin::ApplicationController
|
|
5
|
+
before_action :find_shipping_service
|
|
6
|
+
before_action :find_rate, except: [:index, :create]
|
|
7
|
+
|
|
8
|
+
swagger_path '/shipping_services/{id}/rates' do
|
|
9
|
+
operation :get do
|
|
10
|
+
key :summary, 'All Shipping Service Rates'
|
|
11
|
+
key :description, 'Returns all rates for a shipping service'
|
|
12
|
+
key :operationId, 'listShippingServiceRates'
|
|
13
|
+
key :produces, ['application/json']
|
|
14
|
+
|
|
15
|
+
parameter do
|
|
16
|
+
key :name, :id
|
|
17
|
+
key :in, :path
|
|
18
|
+
key :description, 'shipping service ID'
|
|
19
|
+
key :required, true
|
|
20
|
+
key :type, :string
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
response 200 do
|
|
24
|
+
key :description, 'Shipping service rates'
|
|
25
|
+
schema do
|
|
26
|
+
key :type, :object
|
|
27
|
+
property :rates do
|
|
28
|
+
key :type, :array
|
|
29
|
+
items do
|
|
30
|
+
key :'$ref', 'Workarea::Shipping::Rate'
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
operation :post do
|
|
38
|
+
key :summary, 'Create Shipping Service Rate'
|
|
39
|
+
key :description, 'Creates a new shipping service rate.'
|
|
40
|
+
key :operationId, 'addShippingServiceRate'
|
|
41
|
+
key :produces, ['application/json']
|
|
42
|
+
|
|
43
|
+
parameter do
|
|
44
|
+
key :name, :id
|
|
45
|
+
key :in, :path
|
|
46
|
+
key :description, 'shipping service ID'
|
|
47
|
+
key :required, true
|
|
48
|
+
key :type, :string
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
parameter do
|
|
52
|
+
key :name, :body
|
|
53
|
+
key :in, :body
|
|
54
|
+
key :description, 'Rate to add'
|
|
55
|
+
key :required, true
|
|
56
|
+
schema do
|
|
57
|
+
key :type, :object
|
|
58
|
+
property :rate do
|
|
59
|
+
key :'$ref', 'Workarea::Shipping::Rate'
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
response 201 do
|
|
65
|
+
key :description, 'Tax rate created'
|
|
66
|
+
schema do
|
|
67
|
+
key :type, :object
|
|
68
|
+
property :rate do
|
|
69
|
+
key :'$ref', 'Workarea::Shipping::Rate'
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
response 422 do
|
|
75
|
+
key :description, 'Validation failure'
|
|
76
|
+
schema do
|
|
77
|
+
key :type, :object
|
|
78
|
+
property :problem do
|
|
79
|
+
key :type, :string
|
|
80
|
+
end
|
|
81
|
+
property :document do
|
|
82
|
+
key :'$ref', 'Workarea::Shipping::Rate'
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def index
|
|
90
|
+
respond_with rates: @shipping_service.rates
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def create
|
|
94
|
+
@rate = @shipping_service.rates.create!(params[:rate])
|
|
95
|
+
respond_with(
|
|
96
|
+
{ rate: @rate },
|
|
97
|
+
{ status: :created,
|
|
98
|
+
location: shipping_service_rates_path(@shipping_service) }
|
|
99
|
+
)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
swagger_path '/shipping_services/{shipping_service_id}/rates/{id}' do
|
|
103
|
+
operation :patch do
|
|
104
|
+
key :summary, 'Update a shipping service rate'
|
|
105
|
+
key :description, 'Updates attributes on a shipping service rate'
|
|
106
|
+
key :operationId, 'updateShippingServiceRate'
|
|
107
|
+
|
|
108
|
+
parameter do
|
|
109
|
+
key :name, :shipping_service_id
|
|
110
|
+
key :in, :path
|
|
111
|
+
key :description, 'ID of shipping service to update'
|
|
112
|
+
key :required, true
|
|
113
|
+
key :type, :string
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
parameter do
|
|
117
|
+
key :name, :id
|
|
118
|
+
key :in, :path
|
|
119
|
+
key :description, 'ID of shipping service rate to update'
|
|
120
|
+
key :required, true
|
|
121
|
+
key :type, :string
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
parameter do
|
|
125
|
+
key :name, :body
|
|
126
|
+
key :in, :body
|
|
127
|
+
key :description, 'New attributes'
|
|
128
|
+
key :required, true
|
|
129
|
+
schema do
|
|
130
|
+
key :type, :object
|
|
131
|
+
property :rate do
|
|
132
|
+
key :'$ref', 'Workarea::Shipping::Rate'
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
response 204 do
|
|
138
|
+
key :description, 'Shipping service rate updated successfully'
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
response 422 do
|
|
142
|
+
key :description, 'Validation failure'
|
|
143
|
+
schema do
|
|
144
|
+
key :type, :object
|
|
145
|
+
property :problem do
|
|
146
|
+
key :type, :string
|
|
147
|
+
end
|
|
148
|
+
property :document do
|
|
149
|
+
key :'$ref', 'Workarea::Shipping::Rate'
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
response 404 do
|
|
155
|
+
key :description, 'Shipping service or rate not found'
|
|
156
|
+
schema do
|
|
157
|
+
key :type, :object
|
|
158
|
+
property :problem do
|
|
159
|
+
key :type, :string
|
|
160
|
+
end
|
|
161
|
+
property :params do
|
|
162
|
+
key :type, :object
|
|
163
|
+
key :additionalProperties, true
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
operation :delete do
|
|
170
|
+
key :summary, 'Remove a Shipping Service Rate'
|
|
171
|
+
key :description, 'Remove a shipping service rate'
|
|
172
|
+
key :operationId, 'removeShippingServiceRate'
|
|
173
|
+
|
|
174
|
+
parameter do
|
|
175
|
+
key :name, :shipping_service_id
|
|
176
|
+
key :in, :path
|
|
177
|
+
key :description, 'ID of shipping service'
|
|
178
|
+
key :required, true
|
|
179
|
+
key :type, :string
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
parameter do
|
|
183
|
+
key :name, :id
|
|
184
|
+
key :in, :path
|
|
185
|
+
key :description, 'ID of rate to update'
|
|
186
|
+
key :required, true
|
|
187
|
+
key :type, :string
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
response 204 do
|
|
191
|
+
key :description, 'Shipping service rate removed successfully'
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
response 404 do
|
|
195
|
+
key :description, 'Shipping service or rate not found'
|
|
196
|
+
schema do
|
|
197
|
+
key :type, :object
|
|
198
|
+
property :problem do
|
|
199
|
+
key :type, :string
|
|
200
|
+
end
|
|
201
|
+
property :params do
|
|
202
|
+
key :type, :object
|
|
203
|
+
key :additionalProperties, true
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def update
|
|
211
|
+
@rate.update_attributes!(params[:rate])
|
|
212
|
+
respond_with rate: @rate
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def destroy
|
|
216
|
+
@rate.destroy
|
|
217
|
+
head :no_content
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
private
|
|
221
|
+
|
|
222
|
+
def find_shipping_service
|
|
223
|
+
@shipping_service = Shipping::Service.find(params[:shipping_service_id])
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def find_rate
|
|
227
|
+
@rate = @shipping_service.rates.find(params[:id])
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
end
|