swagger_autogenerate 1.0.2 → 1.0.4

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: 0b52220aecae46c5818f0640a1ca979f59d38fba0720e2d5a35685fbb6c06bbd
4
- data.tar.gz: 995666a3bd4de256824656420231be0c38d564aa236a6bfca10659d1474908ff
3
+ metadata.gz: 9156a7957bb459cdcea51aa4aaac537911daeefa44cb6cbceb6756666a924048
4
+ data.tar.gz: 7505182c0f2e8875ecef5a19bdc1fa63f5af1586896c5d3d9c6fcd8607f4e416
5
5
  SHA512:
6
- metadata.gz: c966988c943c3d108a30fa1abc38cef2295679e8f02b2f1dd302a64eedca45d5c97f37ff2c30f7ca35c516b92fa797ea6a0670a25ef1c587cef97ab22433f569
7
- data.tar.gz: a6e6c285bdad27980d524f221c8ae5204e06a3ed222de805c2c5a6ebcda637c5e312712f395aa9247bae4002182fad5d264056c0b837a9a38c7ff5dd0d105d1c
6
+ metadata.gz: 723c04173492313fe145364f36a0237b6c0ac490d82ef6bdc57ddd9949180a51319a77af17af6cef65b037811f1771eaa92fab052353ded4751de335e22ef07d
7
+ data.tar.gz: b1f5897b9e943f27a607575867b3f1fc229888947cffa8ee9ac37e23d76ebc442d6656527216d974bbb2ea9fb8333549833c1e95f6eac538d0c9fc3f75e734d5
data/CHANGELOG.md CHANGED
@@ -2,4 +2,6 @@
2
2
 
3
3
  ## [0.1.1] - 2024-05-27
4
4
  ## [1.0.2] - 2024-05-31
5
+ ## [1.0.4] - 2024-06-01
6
+
5
7
  - Initial release
data/README.md CHANGED
@@ -37,28 +37,21 @@ To configure the swagger_autogenerate gem in your Rails application, follow thes
37
37
  2) Inside the class ApplicationController block.
38
38
  3) Add the following code:
39
39
  ```
40
- include SwaggerAutogenerate if Rails.env.test? && ENV['SWAGGER'].present?
40
+ include SwaggerAutogenerate if Rails.env.test?
41
41
  ```
42
- in the #Example-step you will set the ENV['SWAGGER'],
43
-
44
- By setting the ENV['SWAGGER'] environment variable, you can specify the path to the new file,
45
- whether it's a specific file (e.g., ../myfile.yaml) or a directory (e.g., ../docs).
46
- This flexibility ensures that the documentation can be easily integrated into your project's structure and workflow.
47
42
 
48
43
  ### Step 2 (optional)
49
44
  1) Create a file called swagger_autogenerate.rb in the ./config/initializers
50
- 2) Open the ./config/initializers/swagger/swagger_autogenerate.rb
45
+ 2) Open the ./config/initializers/swagger_autogenerate.rb
51
46
  3) Add the following code to the swagger_autogenerate.rb
52
47
  ```
53
- module SwaggerAutogenerate
54
- class SwaggerTrace
55
- WITH_CONFIG = true
56
- WITH_MULTIPLE_EXAMPLES = true
57
- WITH_EXAMPLE_DESCRIPTION = true
58
- WITH_RESPONSE_DESCRIPTION = true
59
- SWAGGER_ENVIRONMENT_VARIABLE = 'SWAGGER'
60
- end
48
+ SwaggerAutogenerate.configure do |config|
49
+ config.with_config = true
50
+ config.with_example_description = true
51
+ config.with_multiple_examples = true
52
+ config.with_response_description = true
61
53
  end
54
+
62
55
  ```
63
56
  $ This file is optional and allows you to customize the behavior of the gem by providing additional options.
64
57
 
@@ -1,5 +1,19 @@
1
1
  module SwaggerAutogenerate
2
- module SwaggerPublicMethods
2
+ class Configuration
3
+ attr_accessor :with_config, :with_multiple_examples, :with_example_description,
4
+ :with_response_description, :swagger_environment_variable
5
+
6
+ def initialize
7
+ @with_config = true
8
+ @with_multiple_examples = true
9
+ @with_example_description = true
10
+ @with_response_description = true
11
+ @swagger_environment_variable = 'SWAGGER'
12
+ @security = security
13
+ @swagger_config = swagger_config
14
+ @response_status = response_status
15
+ end
16
+
3
17
  def response_status
4
18
  {
5
19
  100 => 'The initial part of the request has been received, and the client should proceed with sending the remainder of the request',
@@ -46,5 +60,20 @@ module SwaggerAutogenerate
46
60
  }
47
61
  }
48
62
  end
63
+
64
+ def security
65
+ [
66
+ { 'org_slug' => [] },
67
+ { 'locale' => [] }
68
+ ]
69
+ end
70
+ end
71
+
72
+ def self.configuration
73
+ @configuration ||= Configuration.new
74
+ end
75
+
76
+ def self.configure
77
+ yield(configuration)
49
78
  end
50
79
  end
@@ -1,31 +1,40 @@
1
- require_relative 'swagger_public_methods'
1
+ require_relative 'configuration'
2
2
 
3
3
  module SwaggerAutogenerate
4
4
  class SwaggerTrace
5
- WITH_CONFIG = true
6
- WITH_MULTIPLE_EXAMPLES = true
7
- WITH_EXAMPLE_DESCRIPTION = true
8
- WITH_RESPONSE_DESCRIPTION = true
9
- SWAGGER_ENVIRONMENT_VARIABLE = 'SWAGGER'
10
-
11
- include SwaggerPublicMethods
12
-
13
5
  def initialize(request, response)
6
+ @with_config = ::SwaggerAutogenerate.configuration.with_config
7
+ @with_multiple_examples = ::SwaggerAutogenerate.configuration.with_multiple_examples
8
+ @with_example_description = ::SwaggerAutogenerate.configuration.with_example_description
9
+ @with_response_description = ::SwaggerAutogenerate.configuration.with_response_description
10
+ @security = ::SwaggerAutogenerate.configuration.security
11
+ @swagger_config = ::SwaggerAutogenerate.configuration.swagger_config
12
+ @response_status = ::SwaggerAutogenerate.configuration.response_status
14
13
  @request = request
15
14
  @response = response
16
15
  @@paths = {}
17
16
  end
18
17
 
19
18
  def call
20
- if ENV[SWAGGER_ENVIRONMENT_VARIABLE].present?
19
+ if ENV[swagger_environment_variable].present?
21
20
  read_swagger_trace
22
21
  write_swagger_trace
23
22
  end
24
23
  end
25
24
 
25
+ def self.swagger_environment_variable
26
+ ::SwaggerAutogenerate.configuration.swagger_environment_variable
27
+ end
28
+
29
+ def swagger_environment_variable
30
+ SwaggerTrace.swagger_environment_variable
31
+ end
32
+
26
33
  private
27
34
 
28
- attr_reader :request, :response, :current_path, :yaml_file
35
+ attr_reader :request, :response, :current_path, :yaml_file, :configuration,
36
+ :with_config, :with_multiple_examples, :with_example_description,
37
+ :with_response_description, :security, :response_status
29
38
 
30
39
  # main methods
31
40
 
@@ -69,7 +78,7 @@ module SwaggerAutogenerate
69
78
 
70
79
  def create_file
71
80
  File.open(swagger_location, 'w') do |file|
72
- data = WITH_CONFIG ? swagger_config : {}
81
+ data = with_config ? swagger_config : {}
73
82
  data['paths'] = paths
74
83
  organize_result(data['paths'])
75
84
  data = data.to_hash
@@ -87,7 +96,7 @@ module SwaggerAutogenerate
87
96
 
88
97
  return create_file if yaml_file.nil? || yaml_file['paths'].nil?
89
98
 
90
- yaml_file.merge!(swagger_config) if WITH_CONFIG
99
+ yaml_file.merge!(swagger_config) if with_config
91
100
 
92
101
  apply_yaml_file_changes
93
102
  organize_result(yaml_file['paths'])
@@ -185,7 +194,7 @@ module SwaggerAutogenerate
185
194
  swagger_response = { 'file' => 'file/data' }
186
195
  end
187
196
 
188
- hash['description'] = response_description if WITH_RESPONSE_DESCRIPTION
197
+ hash['description'] = response_description if with_response_description
189
198
  hash['headers'] = {} # response.headers
190
199
  hash['content'] = content_json_example(swagger_response)
191
200
 
@@ -301,13 +310,6 @@ module SwaggerAutogenerate
301
310
  @@paths ||= {}
302
311
  end
303
312
 
304
- def security
305
- [
306
- 'org_slug' => [],
307
- 'locale' => []
308
- ]
309
- end
310
-
311
313
  def controller_name
312
314
  request.params['controller'].split('/').last.to_s
313
315
  end
@@ -315,10 +317,10 @@ module SwaggerAutogenerate
315
317
  def swagger_location
316
318
  return @swagger_location if instance_variable_defined?(:@swagger_location)
317
319
 
318
- if ENV[SWAGGER_ENVIRONMENT_VARIABLE].include?('.yaml') || ENV[SWAGGER_ENVIRONMENT_VARIABLE].include?('.yml')
319
- @swagger_location = Rails.root.join(ENV.fetch(SWAGGER_ENVIRONMENT_VARIABLE, nil).to_s).to_s
320
+ if ENV[swagger_environment_variable].include?('.yaml') || ENV[swagger_environment_variable].include?('.yml')
321
+ @swagger_location = Rails.root.join(ENV.fetch(swagger_environment_variable, nil).to_s).to_s
320
322
  else
321
- directory_path = Rails.root.join(ENV.fetch(SWAGGER_ENVIRONMENT_VARIABLE, nil).to_s).to_s
323
+ directory_path = Rails.root.join(ENV.fetch(swagger_environment_variable, nil).to_s).to_s
322
324
  FileUtils.mkdir_p(directory_path) unless File.directory?(directory_path)
323
325
  @swagger_location = "#{directory_path}/#{tags.first}.yaml"
324
326
  end
@@ -344,7 +346,7 @@ module SwaggerAutogenerate
344
346
  }
345
347
  }
346
348
  }
347
- hash['application/json']['examples']['example-0']['description'] = "payload => #{example_description}" if WITH_EXAMPLE_DESCRIPTION && !example_description.empty?
349
+ hash['application/json']['examples']['example-0']['description'] = "payload => #{example_description}" if with_example_description && !example_description.empty?
348
350
 
349
351
  hash
350
352
  end
@@ -386,7 +388,7 @@ module SwaggerAutogenerate
386
388
  unless old_examples.value?(current_example)
387
389
  last_example = json_example_plus_one(old_examples.keys.last)
388
390
  last_example ||= 'example-0'
389
- last_example = 'example-0' unless WITH_MULTIPLE_EXAMPLES
391
+ last_example = 'example-0' unless with_multiple_examples
390
392
  yaml_file['paths'][current_path][request.method.downcase]['responses'][response.status.to_s]['content']['application/json']['examples'][last_example] = current_example
391
393
  end
392
394
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SwaggerAutogenerate
4
- VERSION = "1.0.2"
4
+ VERSION = "1.0.4"
5
5
  end
@@ -5,7 +5,7 @@ module SwaggerAutogenerate
5
5
  require_relative 'swagger_autogenerate/swagger_trace.rb'
6
6
 
7
7
  included do
8
- if defined?(Rails) && Rails.env.test? && ENV[SwaggerTrace::SWAGGER_ENVIRONMENT_VARIABLE].present?
8
+ if defined?(Rails) && ENV[SwaggerTrace.swagger_environment_variable].present?
9
9
  def process_action(*args)
10
10
  super
11
11
 
Binary file
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swagger_autogenerate
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - MohammedBuraiah
@@ -25,12 +25,14 @@ files:
25
25
  - Rakefile
26
26
  - lib/config/initializers/swagger_autogenerate.rb
27
27
  - lib/swagger_autogenerate.rb
28
- - lib/swagger_autogenerate/swagger_public_methods.rb
28
+ - lib/swagger_autogenerate/configuration.rb
29
29
  - lib/swagger_autogenerate/swagger_trace.rb
30
30
  - lib/swagger_autogenerate/version.rb
31
31
  - sig/swagger_autogenerate.rbs
32
32
  - swagger_autogenerate-0.1.0.gem
33
33
  - swagger_autogenerate-0.1.1.gem
34
+ - swagger_autogenerate-1.0.2.gem
35
+ - swagger_autogenerate-1.0.3.gem
34
36
  - swagger_autogenerate.gemspec
35
37
  homepage: https://github.com/MohammedBuraiah/swagger_autogenerate
36
38
  licenses: