rswag_json_loader 0.1.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: cf033d1d25c1b9c51a9d2c94b207083fb98ac9eb36a6d8c19a37ac1f227fd95b
4
+ data.tar.gz: eca584d0039102f80d56399d1776561020de819cdfeecc1ec2a0fd03c7a1672e
5
+ SHA512:
6
+ metadata.gz: 9c8713d307347c8820b87246185cd232404932d759b7a9ddd44651e1eb01aeb847caa6bdbe109499e8a0cdbc5b0f54d3b6ec536bb3d8c2f4578c3f38cab61891
7
+ data.tar.gz: d61f091f7a8efa77aafb894c0f2131f38af98450e08295abb58bc6b453e08f0af4970c9294346184795cb022fc32089684a6310112dbba06277be42837e3e6b4
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rubocop/rake_task"
5
+
6
+ RuboCop::RakeTask.new
7
+
8
+ task default: :rubocop
@@ -0,0 +1,25 @@
1
+ module RswagJsonLoaderConfig
2
+ def configuration
3
+ yield self
4
+ end
5
+
6
+ def define_setting(name, default = nil)
7
+ class_variable_set("@@#{name}", default)
8
+
9
+ define_class_method "#{name}=" do |value|
10
+ class_variable_set("@@#{name}", value)
11
+ end
12
+
13
+ define_class_method name do
14
+ class_variable_get("@@#{name}")
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def define_class_method(name, &block)
21
+ (class << self; self; end).instance_eval do
22
+ define_method name, &block
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RswagJsonLoader
4
+ VERSION = "0.1.0"
5
+ end
@@ -0,0 +1,29 @@
1
+ require "json_schemer"
2
+ require "helpers/rswag_json_loader_config"
3
+ require "schema_loader"
4
+
5
+ module RswagJsonLoader
6
+ extend RswagJsonLoaderConfig
7
+
8
+ define_setting :schema_path, "./spec/requests/api/schemas/json/*.json"
9
+ define_setting :openapi_path, "v1/openapi.json"
10
+
11
+ class SchemaHandler
12
+ def self.json_schemas
13
+ schemas = {}
14
+
15
+ Dir[RswagJsonLoader.schema_path].each do |json|
16
+ file_name = File.basename(json, ".json")
17
+ humanized = file_name.split("_").map(&:capitalize).join
18
+ schemas[humanized] = Schemas::Loader.new(json).load
19
+ end
20
+ schemas
21
+ end
22
+
23
+ def self.setup!
24
+ RSpec.configure do |config|
25
+ config.swagger_docs[RswagJsonLoader.openapi_path][:components][:schemas].merge!(json_schemas)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,13 @@
1
+ require "json"
2
+
3
+ module Schemas
4
+ class Loader
5
+ def initialize(filename)
6
+ @filename = filename
7
+ end
8
+
9
+ def load
10
+ JSON.parse(File.read(@filename))
11
+ end
12
+ end
13
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rswag_json_loader
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Matija Munjakovic
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2023-10-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json_schemer
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.2.18
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.2.18
27
+ - !ruby/object:Gem::Dependency
28
+ name: rswag-specs
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 2.6.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 2.6.0
41
+ description: Load JSON schemas into RSwag's Swagger/OpenAPI spec
42
+ email:
43
+ - matija@kodius.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - Rakefile
49
+ - lib/helpers/rswag_json_loader_config.rb
50
+ - lib/rswag_json_loader.rb
51
+ - lib/rswag_json_loader/version.rb
52
+ - lib/schema_loader.rb
53
+ homepage: https://github.com/kodius/rswag_json_loader
54
+ licenses:
55
+ - MIT
56
+ metadata:
57
+ allowed_push_host: https://rubygems.org
58
+ homepage_uri: https://github.com/kodius/rswag_json_loader
59
+ source_code_uri: https://github.com/kodius/rswag_json_loader
60
+ changelog_uri: https://github.com/kodius/rswag_json_loader/releases
61
+ post_install_message:
62
+ rdoc_options: []
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 2.6.0
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubygems_version: 3.4.14
77
+ signing_key:
78
+ specification_version: 4
79
+ summary: Rswag JSON schema loader
80
+ test_files: []