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,304 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module Api
|
|
3
|
+
module Admin
|
|
4
|
+
class ReleasesController < Admin::ApplicationController
|
|
5
|
+
before_action :find_release, except: [:index, :create, :bulk]
|
|
6
|
+
|
|
7
|
+
swagger_path '/releases' do
|
|
8
|
+
operation :get do
|
|
9
|
+
key :summary, 'All Releases'
|
|
10
|
+
key :description, 'Returns all releases from the system'
|
|
11
|
+
key :operationId, 'listReleases'
|
|
12
|
+
key :produces, ['application/json']
|
|
13
|
+
|
|
14
|
+
parameter do
|
|
15
|
+
key :name, :page
|
|
16
|
+
key :in, :query
|
|
17
|
+
key :description, 'Current page'
|
|
18
|
+
key :required, false
|
|
19
|
+
key :type, :integer
|
|
20
|
+
key :default, 1
|
|
21
|
+
end
|
|
22
|
+
parameter do
|
|
23
|
+
key :name, :sort_by
|
|
24
|
+
key :in, :query
|
|
25
|
+
key :description, 'Field on which to sort (see responses for possible values)'
|
|
26
|
+
key :required, false
|
|
27
|
+
key :type, :string
|
|
28
|
+
key :default, 'created_at'
|
|
29
|
+
end
|
|
30
|
+
parameter do
|
|
31
|
+
key :name, :sort_direction
|
|
32
|
+
key :in, :query
|
|
33
|
+
key :description, 'Direction for sort by'
|
|
34
|
+
key :type, :string
|
|
35
|
+
key :enum, %w(asc desc)
|
|
36
|
+
key :default, 'desc'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
response 200 do
|
|
40
|
+
key :description, 'Releases'
|
|
41
|
+
schema do
|
|
42
|
+
key :type, :object
|
|
43
|
+
property :releases do
|
|
44
|
+
key :type, :array
|
|
45
|
+
items do
|
|
46
|
+
key :'$ref', 'Workarea::Release'
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
operation :post do
|
|
54
|
+
key :summary, 'Create Release'
|
|
55
|
+
key :description, 'Creates a new release.'
|
|
56
|
+
key :operationId, 'addRelease'
|
|
57
|
+
key :produces, ['application/json']
|
|
58
|
+
|
|
59
|
+
parameter do
|
|
60
|
+
key :name, :body
|
|
61
|
+
key :in, :body
|
|
62
|
+
key :description, 'Release to add'
|
|
63
|
+
key :required, true
|
|
64
|
+
schema do
|
|
65
|
+
key :type, :object
|
|
66
|
+
property :release do
|
|
67
|
+
key :'$ref', 'Workarea::Release'
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
response 201 do
|
|
73
|
+
key :description, 'Release created'
|
|
74
|
+
schema do
|
|
75
|
+
key :type, :object
|
|
76
|
+
property :release do
|
|
77
|
+
key :'$ref', 'Workarea::Release'
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
response 422 do
|
|
83
|
+
key :description, 'Validation failure'
|
|
84
|
+
schema do
|
|
85
|
+
key :type, :object
|
|
86
|
+
property :problem do
|
|
87
|
+
key :type, :string
|
|
88
|
+
end
|
|
89
|
+
property :document do
|
|
90
|
+
key :'$ref', 'Workarea::Release'
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def index
|
|
98
|
+
@releases = Release
|
|
99
|
+
.all
|
|
100
|
+
.order_by(sort_field => sort_direction)
|
|
101
|
+
.page(params[:page])
|
|
102
|
+
respond_with releases: @releases
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def create
|
|
106
|
+
@release = Release.create!(params[:release])
|
|
107
|
+
respond_with(
|
|
108
|
+
{ release: @release },
|
|
109
|
+
{ status: :created,
|
|
110
|
+
location: release_path(@release) }
|
|
111
|
+
)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
swagger_path '/releases/{id}' do
|
|
115
|
+
operation :get do
|
|
116
|
+
key :summary, 'Find Release by ID'
|
|
117
|
+
key :description, 'Returns a single release'
|
|
118
|
+
key :operationId, 'showRelease'
|
|
119
|
+
|
|
120
|
+
parameter do
|
|
121
|
+
key :name, :id
|
|
122
|
+
key :in, :path
|
|
123
|
+
key :description, 'ID of release to fetch'
|
|
124
|
+
key :required, true
|
|
125
|
+
key :type, :string
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
response 200 do
|
|
129
|
+
key :description, 'Release details'
|
|
130
|
+
schema do
|
|
131
|
+
key :type, :object
|
|
132
|
+
property :release do
|
|
133
|
+
key :'$ref', 'Workarea::Release'
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
response 404 do
|
|
139
|
+
key :description, 'Release not found'
|
|
140
|
+
schema do
|
|
141
|
+
key :type, :object
|
|
142
|
+
property :problem do
|
|
143
|
+
key :type, :string
|
|
144
|
+
end
|
|
145
|
+
property :params do
|
|
146
|
+
key :type, :object
|
|
147
|
+
key :additionalProperties, true
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
operation :patch do
|
|
154
|
+
key :summary, 'Update a Release'
|
|
155
|
+
key :description, 'Updates attributes on a release'
|
|
156
|
+
key :operationId, 'updateRelease'
|
|
157
|
+
|
|
158
|
+
parameter do
|
|
159
|
+
key :name, :id
|
|
160
|
+
key :in, :path
|
|
161
|
+
key :description, 'ID of release to update'
|
|
162
|
+
key :required, true
|
|
163
|
+
key :type, :string
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
parameter do
|
|
167
|
+
key :name, :body
|
|
168
|
+
key :in, :body
|
|
169
|
+
key :required, true
|
|
170
|
+
schema do
|
|
171
|
+
key :type, :object
|
|
172
|
+
property :release do
|
|
173
|
+
key :description, 'New attributes'
|
|
174
|
+
key :'$ref', 'Workarea::Release'
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
response 204 do
|
|
180
|
+
key :description, 'Release updated successfully'
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
response 422 do
|
|
184
|
+
key :description, 'Validation failure'
|
|
185
|
+
schema do
|
|
186
|
+
key :type, :object
|
|
187
|
+
property :problem do
|
|
188
|
+
key :type, :string
|
|
189
|
+
end
|
|
190
|
+
property :document do
|
|
191
|
+
key :'$ref', 'Workarea::Release'
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
response 404 do
|
|
197
|
+
key :description, 'Release not found'
|
|
198
|
+
schema do
|
|
199
|
+
key :type, :object
|
|
200
|
+
property :problem do
|
|
201
|
+
key :type, :string
|
|
202
|
+
end
|
|
203
|
+
property :params do
|
|
204
|
+
key :type, :object
|
|
205
|
+
key :additionalProperties, true
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
operation :delete do
|
|
212
|
+
key :summary, 'Remove a Release'
|
|
213
|
+
key :description, 'Remove a release'
|
|
214
|
+
key :operationId, 'removeRelease'
|
|
215
|
+
|
|
216
|
+
parameter do
|
|
217
|
+
key :name, :id
|
|
218
|
+
key :in, :path
|
|
219
|
+
key :description, 'ID of release to remove'
|
|
220
|
+
key :required, true
|
|
221
|
+
key :type, :string
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
response 204 do
|
|
225
|
+
key :description, 'Release removed successfully'
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
response 404 do
|
|
229
|
+
key :description, 'Release not found'
|
|
230
|
+
schema do
|
|
231
|
+
key :type, :object
|
|
232
|
+
property :problem do
|
|
233
|
+
key :type, :string
|
|
234
|
+
end
|
|
235
|
+
property :params do
|
|
236
|
+
key :type, :object
|
|
237
|
+
key :additionalProperties, true
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
def show
|
|
245
|
+
respond_with release: @release
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
def update
|
|
249
|
+
@release.update_attributes!(params[:release])
|
|
250
|
+
respond_with release: @release
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
swagger_path '/releases/bulk' do
|
|
254
|
+
operation :patch do
|
|
255
|
+
key :summary, 'Bulk Upsert Releases'
|
|
256
|
+
key :description, 'Creates new releases or updates existing ones in bulk.'
|
|
257
|
+
key :operationId, 'upsertReleases'
|
|
258
|
+
key :produces, ['application/json']
|
|
259
|
+
|
|
260
|
+
parameter do
|
|
261
|
+
key :name, :body
|
|
262
|
+
key :in, :body
|
|
263
|
+
key :description, 'Array of releases to upsert'
|
|
264
|
+
key :required, true
|
|
265
|
+
schema do
|
|
266
|
+
key :type, :object
|
|
267
|
+
property :releases do
|
|
268
|
+
key :type, :array
|
|
269
|
+
items do
|
|
270
|
+
key :'$ref', 'Workarea::Release'
|
|
271
|
+
end
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
response 204 do
|
|
277
|
+
key :description, 'Upsert received'
|
|
278
|
+
end
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
def bulk
|
|
283
|
+
@bulk = Api::Admin::BulkUpsert.create!(
|
|
284
|
+
klass: Release,
|
|
285
|
+
data: params[:releases].map(&:to_h)
|
|
286
|
+
)
|
|
287
|
+
|
|
288
|
+
head :no_content
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
def destroy
|
|
292
|
+
@release.destroy
|
|
293
|
+
head :no_content
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
private
|
|
297
|
+
|
|
298
|
+
def find_release
|
|
299
|
+
@release = Release.find(params[:id])
|
|
300
|
+
end
|
|
301
|
+
end
|
|
302
|
+
end
|
|
303
|
+
end
|
|
304
|
+
end
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
module Workarea
|
|
2
|
+
module Api
|
|
3
|
+
module Admin
|
|
4
|
+
class SavedAddressesController < Admin::ApplicationController
|
|
5
|
+
before_action :find_user
|
|
6
|
+
before_action :find_saved_address, except: [:index, :create]
|
|
7
|
+
|
|
8
|
+
swagger_path '/users/{id}/saved_addresses' do
|
|
9
|
+
operation :get do
|
|
10
|
+
key :summary, 'All Saved Addresses'
|
|
11
|
+
key :description, 'Returns all saved addresses for a user'
|
|
12
|
+
key :operationId, 'listSavedAddresses'
|
|
13
|
+
key :produces, ['application/json']
|
|
14
|
+
|
|
15
|
+
parameter do
|
|
16
|
+
key :name, :id
|
|
17
|
+
key :in, :path
|
|
18
|
+
key :description, 'user ID'
|
|
19
|
+
key :required, true
|
|
20
|
+
key :type, :string
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
response 200 do
|
|
24
|
+
key :description, 'Saved addresses'
|
|
25
|
+
schema do
|
|
26
|
+
key :type, :object
|
|
27
|
+
property :saved_addresses do
|
|
28
|
+
key :type, :array
|
|
29
|
+
items do
|
|
30
|
+
key :'$ref', 'Workarea::User::SavedAddress'
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
operation :post do
|
|
38
|
+
key :summary, 'Create Saved Address'
|
|
39
|
+
key :description, 'Creates a new saved address'
|
|
40
|
+
key :operationId, 'addSavedAddress'
|
|
41
|
+
key :produces, ['application/json']
|
|
42
|
+
|
|
43
|
+
parameter do
|
|
44
|
+
key :name, :id
|
|
45
|
+
key :in, :path
|
|
46
|
+
key :description, 'product 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 address to add'
|
|
55
|
+
key :required, true
|
|
56
|
+
schema do
|
|
57
|
+
key :type, :object
|
|
58
|
+
property :saved_address do
|
|
59
|
+
key :'$ref', 'Workarea::User::SavedAddress'
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
response 201 do
|
|
65
|
+
key :description, 'Saved address created'
|
|
66
|
+
schema do
|
|
67
|
+
key :type, :object
|
|
68
|
+
property :saved_address do
|
|
69
|
+
key :'$ref', 'Workarea::User::SavedAddress'
|
|
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::User::SavedAddress'
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def index
|
|
90
|
+
respond_with saved_addresses: @user.addresses
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def create
|
|
94
|
+
@saved_address = @user.addresses.create!(params[:saved_address])
|
|
95
|
+
respond_with(
|
|
96
|
+
{ saved_address: @saved_address },
|
|
97
|
+
{ status: :created,
|
|
98
|
+
location: user_saved_addresses_path(@user) }
|
|
99
|
+
)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
swagger_path '/users/{user_id}/saved_addresses/{id}' do
|
|
103
|
+
operation :patch do
|
|
104
|
+
key :summary, 'Update a saved address'
|
|
105
|
+
key :description, 'Updates attributes on a saved address'
|
|
106
|
+
key :operationId, 'updateSavedAddress'
|
|
107
|
+
|
|
108
|
+
parameter do
|
|
109
|
+
key :name, :user_id
|
|
110
|
+
key :in, :path
|
|
111
|
+
key :description, 'ID of user'
|
|
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 saved address 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 :saved_address do
|
|
132
|
+
key :'$ref', 'Workarea::User::SavedAddress'
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
response 204 do
|
|
138
|
+
key :description, 'Saved address 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::User::SavedAddress'
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
response 404 do
|
|
155
|
+
key :description, 'User or saved address 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 Saved Address'
|
|
171
|
+
key :description, 'Remove a saved address'
|
|
172
|
+
key :operationId, 'removeSavedAddress'
|
|
173
|
+
|
|
174
|
+
parameter do
|
|
175
|
+
key :name, :user_id
|
|
176
|
+
key :in, :path
|
|
177
|
+
key :description, 'ID of user'
|
|
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 saved address to update'
|
|
186
|
+
key :required, true
|
|
187
|
+
key :type, :string
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
response 204 do
|
|
191
|
+
key :description, 'Saved address removed successfully'
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
response 404 do
|
|
195
|
+
key :description, 'User or saved address 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
|
+
@saved_address.update_attributes!(params[:saved_address])
|
|
212
|
+
respond_with saved_address: @saved_address
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def destroy
|
|
216
|
+
@saved_address.destroy
|
|
217
|
+
head :no_content
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
private
|
|
221
|
+
|
|
222
|
+
def find_user
|
|
223
|
+
@user = User.find(params[:user_id])
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def find_saved_address
|
|
227
|
+
@saved_address = @user.addresses.find(params[:id])
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
end
|