insights-api-common 3.1.0 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a539b3339e7b65eb26ab1920ab25bc151125250f80a7d03e856981685323149d
|
4
|
+
data.tar.gz: 1f72cb479407b8407fc802d668641bcf6a05bdab3bc250dcab339694a8388e61
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b6c6bc264eff66c71a00e9147217c93cf4681d97d1694c3145e78b9f3576f70bfec6f1a7c40f1baa94573970bd4250e07eb5bd1fe55b6239142559f21c8fc8a
|
7
|
+
data.tar.gz: 7922ce22df6e493ca3b45d2853450f887fc2679011c1d23542d8519d0f531d273ba29b9c27e6ca3f4ad3a0353497fb544f0de8340ba815634cfde9f734f9704f
|
@@ -17,10 +17,13 @@ module Insights
|
|
17
17
|
private
|
18
18
|
|
19
19
|
def body_params
|
20
|
-
@body_params ||=
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
@body_params ||= ActionController::Parameters.new(parsed_body).permit!
|
21
|
+
end
|
22
|
+
|
23
|
+
def parsed_body
|
24
|
+
@parsed_body ||= begin
|
25
|
+
request_body = request.body.read
|
26
|
+
request_body.blank? ? {} : JSON.parse(request_body)
|
24
27
|
rescue JSON::ParserError
|
25
28
|
raise Insights::API::Common::ApplicationControllerMixins::RequestBodyValidation::BodyParseError, "Failed to parse request body, expected JSON"
|
26
29
|
end
|
@@ -38,7 +41,7 @@ module Insights
|
|
38
41
|
request.method,
|
39
42
|
request.path,
|
40
43
|
api_version,
|
41
|
-
|
44
|
+
parsed_body
|
42
45
|
)
|
43
46
|
end
|
44
47
|
end
|
@@ -304,20 +304,59 @@ module Insights
|
|
304
304
|
}
|
305
305
|
end
|
306
306
|
|
307
|
+
def openapi_tag_description(klass_name)
|
308
|
+
{
|
309
|
+
"summary" => "Tag a #{klass_name}",
|
310
|
+
"operationId" => "tag#{klass_name}",
|
311
|
+
"description" => "Tags a #{klass_name} object",
|
312
|
+
"parameters" => [
|
313
|
+
{ "$ref" => build_parameter("ID") }
|
314
|
+
],
|
315
|
+
"requestBody" => request_body("Tag", "add", :single => false),
|
316
|
+
"responses" => {
|
317
|
+
"201" => {
|
318
|
+
"description" => "#{klass_name} tagged successful",
|
319
|
+
"content" => {
|
320
|
+
"application/json" => {
|
321
|
+
"schema" => {
|
322
|
+
"type" => "array",
|
323
|
+
"items" => {
|
324
|
+
"$ref" => build_schema("Tag")
|
325
|
+
}
|
326
|
+
}
|
327
|
+
}
|
328
|
+
}
|
329
|
+
},
|
330
|
+
"304" => {
|
331
|
+
"description" => "Not modified"
|
332
|
+
}
|
333
|
+
}
|
334
|
+
}
|
335
|
+
end
|
336
|
+
|
337
|
+
def openapi_untag_description(klass_name)
|
338
|
+
{
|
339
|
+
"summary" => "Untag a #{klass_name}",
|
340
|
+
"operationId" => "untag#{klass_name}",
|
341
|
+
"description" => "Untags a #{klass_name} object",
|
342
|
+
"parameters" => [
|
343
|
+
{ "$ref" => build_parameter("ID") }
|
344
|
+
],
|
345
|
+
"requestBody" => request_body("Tag", "removed", :single => false),
|
346
|
+
"responses" => {
|
347
|
+
"204" => {
|
348
|
+
"description" => "#{klass_name} untagged successfully",
|
349
|
+
}
|
350
|
+
}
|
351
|
+
}
|
352
|
+
end
|
353
|
+
|
307
354
|
def openapi_create_description(klass_name)
|
308
355
|
{
|
309
356
|
"summary" => "Create a new #{klass_name}",
|
310
357
|
"operationId" => "create#{klass_name}",
|
311
358
|
"description" => "Creates a #{klass_name} object",
|
312
|
-
"requestBody" =>
|
313
|
-
"content" => {
|
314
|
-
"application/json" => {
|
315
|
-
"schema" => { "$ref" => build_schema(klass_name) }
|
316
|
-
}
|
317
|
-
},
|
318
|
-
"description" => "#{klass_name} attributes to create",
|
319
|
-
"required" => true
|
320
|
-
},
|
359
|
+
"requestBody" => request_body(klass_name, "create"),
|
321
360
|
"responses" => {
|
322
361
|
"201" => {
|
323
362
|
"description" => "#{klass_name} creation successful",
|
@@ -331,6 +370,20 @@ module Insights
|
|
331
370
|
}
|
332
371
|
end
|
333
372
|
|
373
|
+
def request_body(klass_name, action, single: true)
|
374
|
+
schema = single ? { "$ref" => build_schema(klass_name) } : {"type" => "array", "items" => {"$ref" => build_schema(klass_name)}}
|
375
|
+
|
376
|
+
{
|
377
|
+
"content" => {
|
378
|
+
"application/json" => {
|
379
|
+
"schema" => schema
|
380
|
+
}
|
381
|
+
},
|
382
|
+
"description" => "#{klass_name} attributes to #{action}",
|
383
|
+
"required" => true
|
384
|
+
}
|
385
|
+
end
|
386
|
+
|
334
387
|
def openapi_update_description(klass_name, verb)
|
335
388
|
action = verb == "patch" ? "Update" : "Replace"
|
336
389
|
{
|
@@ -340,15 +393,7 @@ module Insights
|
|
340
393
|
"parameters" => [
|
341
394
|
{ "$ref" => build_parameter("ID") }
|
342
395
|
],
|
343
|
-
"requestBody" =>
|
344
|
-
"content" => {
|
345
|
-
"application/json" => {
|
346
|
-
"schema" => { "$ref" => build_schema(klass_name) }
|
347
|
-
}
|
348
|
-
},
|
349
|
-
"description" => "#{klass_name} attributes to update",
|
350
|
-
"required" => true
|
351
|
-
},
|
396
|
+
"requestBody" => request_body(klass_name, "update"),
|
352
397
|
"responses" => {
|
353
398
|
"204" => { "description" => "Updated, no content" },
|
354
399
|
"400" => { "description" => "Bad request" },
|
@@ -490,6 +535,8 @@ module Insights
|
|
490
535
|
when "destroy" then openapi_destroy_description(klass_name)
|
491
536
|
when "create" then openapi_create_description(klass_name)
|
492
537
|
when "update" then openapi_update_description(klass_name, verb)
|
538
|
+
when "tag" then openapi_tag_description(primary_collection)
|
539
|
+
when "untag" then openapi_untag_description(primary_collection)
|
493
540
|
else handle_custom_route_action(route.action.camelize, verb, primary_collection)
|
494
541
|
end
|
495
542
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: insights-api-common
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Insights Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: acts_as_tenant
|