zero-rails_openapi 1.4.1 → 1.4.2

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
  SHA1:
3
- metadata.gz: fab58d6a912611eb51d9d86bc69401c5feb70f06
4
- data.tar.gz: 2aa24ae7d92823d075cbb21acf09949e365d13ab
3
+ metadata.gz: 5f96bf52633bfd7fe91394003f64571c24bfc4ad
4
+ data.tar.gz: f44d8713d0691eacd66ae9a5ff62f90f21b97595
5
5
  SHA512:
6
- metadata.gz: c321e853c95bad0cc5324c9719b3e610c54b2bd4bb18190b2876d091a115b3d90f3b6450645684606ae295c230ab700bca3fa7461fc40a057753376ab6651a02
7
- data.tar.gz: 4e273a9871cd4e8078bad7cc56a7c6b5e6e40a26825f00e57cc28783d61cf49d7557829b76b7a55e6c3fd3297efc0b1bd124a6237685c4002599812ce55814bb
6
+ metadata.gz: 9ad13a356350c385963ac5a62233afc6f4a182360b6684e2536782ffaadb86d4458112844ec44eff8055adf5c1957c2dd2ac92b32c906445c221de17693aa34a
7
+ data.tar.gz: 1dc8b8bb3002a33ac62ab4016fb2359e72a4ce1e43b378c520cf3dbd40dd43227162e43a31801ef824a02323b1fbe5c9f9cdeb51cfe42cb6ee7ba6d3cc174cab
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- zero-rails_openapi (1.4.1)
4
+ zero-rails_openapi (1.4.2)
5
5
  activesupport (>= 3)
6
6
  rails (>= 3)
7
7
 
@@ -58,10 +58,12 @@ GEM
58
58
  loofah (2.1.1)
59
59
  crass (~> 1.0.2)
60
60
  nokogiri (>= 1.5.9)
61
- mail (2.7.0)
62
- mini_mime (>= 0.1.1)
61
+ mail (2.6.6)
62
+ mime-types (>= 1.16, < 4)
63
63
  method_source (0.9.0)
64
- mini_mime (1.0.0)
64
+ mime-types (3.1)
65
+ mime-types-data (~> 3.2015)
66
+ mime-types-data (3.2016.0521)
65
67
  mini_portile2 (2.3.0)
66
68
  minitest (5.10.3)
67
69
  nio4r (2.1.0)
@@ -120,7 +122,7 @@ GEM
120
122
  thread_safe (~> 0.1)
121
123
  websocket-driver (0.6.5)
122
124
  websocket-extensions (>= 0.1.0)
123
- websocket-extensions (0.1.3)
125
+ websocket-extensions (0.1.2)
124
126
 
125
127
  PLATFORMS
126
128
  ruby
data/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
  [![Gem Version](https://badge.fury.io/rb/zero-rails_openapi.svg)](https://badge.fury.io/rb/zero-rails_openapi)
4
4
  [![Build Status](https://travis-ci.org/zhandao/zero-rails_openapi.svg?branch=master)](https://travis-ci.org/zhandao/zero-rails_openapi)
5
5
  [![Maintainability](https://api.codeclimate.com/v1/badges/471fd60f6eb7b019ceed/maintainability)](https://codeclimate.com/github/zhandao/zero-rails_openapi/maintainability)
6
+ [![Gitter Chat](https://badges.gitter.im/zero-rails_openapi/Lobby.svg)](https://gitter.im/zero-rails_openapi/Lobby)
6
7
 
7
8
  Concise DSL for generating OpenAPI Specification 3 (**OAS3**, formerly Swagger3) JSON documentation for Rails application,
8
9
  then you can use Swagger UI 3.2.0+ to show the documentation.
data/README_zh.md CHANGED
@@ -3,6 +3,7 @@
3
3
  [![Gem Version](https://badge.fury.io/rb/zero-rails_openapi.svg)](https://badge.fury.io/rb/zero-rails_openapi)
4
4
  [![Build Status](https://travis-ci.org/zhandao/zero-rails_openapi.svg?branch=master)](https://travis-ci.org/zhandao/zero-rails_openapi)
5
5
  [![Maintainability](https://api.codeclimate.com/v1/badges/471fd60f6eb7b019ceed/maintainability)](https://codeclimate.com/github/zhandao/zero-rails_openapi/maintainability)
6
+ [![Gitter Chat](https://badges.gitter.im/zero-rails_openapi/Lobby.svg)](https://gitter.im/zero-rails_openapi/Lobby)
6
7
 
7
8
  一套简洁的 DSL,用于为 Rails 应用生成 OpenAPI Specification 3 (**OAS3**, 旧称「Swagger3」) 标准的 JSON 文档。
8
9
  (你还可以使用 Swagger-UI 3.2.0 以上版本来可视化所生成的文档。)
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "open_api"
3
+ require 'bundler/setup'
4
+ require 'open_api'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "open_api"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
@@ -51,20 +51,17 @@ module AutoGenDoc
51
51
  model = Object.const_get(action_path.split('#').first.split('/').last[0..-2].camelize) rescue nil
52
52
  type = action.in?(%w[ index show ]) ? Array[load_schema(model)] : String
53
53
  response '200', 'success', :json, type: {
54
- code: { type: Integer, dft: 200 },
55
- msg: { type: String, dft: 'success' },
56
- total: { type: Integer },
57
- timestamp: { type: Integer },
58
- language: { type: String, dft: 'Ruby' },
59
- data: { type: type }
54
+ code: { type: Integer, dft: 200 },
55
+ msg: { type: String, dft: 'success' },
56
+ data: { type: type }
60
57
  }
61
58
 
62
59
 
63
60
  ### Automatically generate responses based on the agreed error class.
64
61
  # The business error-class's implementation see:
65
- # https://github.com/zhandao/zero-rails/blob/master/lib/business_error/z_error.rb
62
+ # https://github.com/zhandao/zero-rails/blob/master/lib/business_error/dsl.rb
66
63
  # It's usage see:
67
- # https://github.com/zhandao/zero-rails/blob/master/app/controllers/api/v1/base_controller.rb
64
+ # https://github.com/zhandao/zero-rails/blob/master/app/_docs/api_error.rb
68
65
  # Then, the following code will auto generate error responses by
69
66
  # extracting the specified error classes info, for example,
70
67
  # in ExamplesError: `mattr_reader :name_not_found, 'can not find the name', 404`
@@ -11,9 +11,10 @@ module OpenApi
11
11
  include SchemaObjHelpers
12
12
  include Helpers
13
13
 
14
- attr_accessor :processed, :type
14
+ attr_accessor :processed, :type, :preprocessed
15
15
 
16
16
  def initialize(type, schema_hash)
17
+ self.preprocessed = false
17
18
  self.processed = { }
18
19
  # [Note] Here is no limit to type, even if the input isn't up to OAS,
19
20
  # like: double, float, hash.
@@ -51,7 +52,7 @@ module OpenApi
51
52
  def preprocess_with_desc desc, param_name = nil
52
53
  self.__desc = desc
53
54
  process_for param_name
54
- @preprocessed = true
55
+ self.preprocessed = true
55
56
  __desc
56
57
  end
57
58
 
@@ -23,7 +23,7 @@ module OpenApi
23
23
  end
24
24
 
25
25
  cattr_accessor :active_record_base do
26
- ApplicationRecord
26
+ nil
27
27
  end
28
28
 
29
29
  # Everything about OAS3 is on https://github.com/OAI/OpenAPI-Specification/blob/OpenAPI.next/versions/3.0.0.md
@@ -55,18 +55,6 @@ module OpenApi
55
55
  'binary'
56
56
  end
57
57
 
58
- cattr_accessor :generate_jbuilder_file do
59
- false
60
- end
61
-
62
- cattr_accessor :overwrite_jbuilder_file do
63
- false
64
- end
65
-
66
- cattr_accessor :jbuilder_templates do
67
- { }
68
- end
69
-
70
58
  def self.docs
71
59
  open_api_docs
72
60
  end
@@ -8,18 +8,19 @@ module OpenApi
8
8
 
9
9
  def schema component_key, type = nil, one_of: nil, all_of: nil, any_of: nil, not: nil, **schema_hash
10
10
  (schema_hash = type) and (type = type.delete(:type)) if type.is_a?(Hash) && type.key?(:type)
11
- type = schema_hash[:type] if type.nil?
12
- type = load_schema component_key if component_key.try(:superclass) == Config.active_record_base && type.nil?
11
+ type ||= schema_hash[:type]
12
+ type ||= load_schema component_key if component_key.try(:superclass) == Config.active_record_base || ApplicationRecord
13
13
 
14
- combined_schema = one_of || all_of || any_of || (_not = binding.local_variable_get(:not))
14
+ combined_schema = (_not = binding.local_variable_get(:not)) || one_of || all_of || any_of
15
15
  combined_schema = CombinedSchema.new(one_of: one_of, all_of: all_of, any_of: any_of, _not: _not) if combined_schema
16
16
  (self[:schemas] ||= { })[component_key.to_s.to_sym] = combined_schema&.process || SchemaObj.new(type, schema_hash).process
17
17
  end
18
18
  arrow_enable :schema
19
19
 
20
- def example summary, example_hash
21
- # TODO
20
+ def example component_key, examples_hash
21
+ (self[:examples] ||= { })[component_key] = ExampleObj.new(examples_hash).process
22
22
  end
23
+ arrow_enable :example
23
24
 
24
25
  def param component_key, param_type, name, type, required, schema_hash = { }
25
26
  (self[:parameters] ||= { })[component_key] = ParamObj.new(name, param_type, type, required, schema_hash).process
@@ -60,15 +61,18 @@ module OpenApi
60
61
  def base_auth scheme_name, other_info = { }
61
62
  security_scheme scheme_name, { type: 'http', scheme: 'basic' }.merge(other_info)
62
63
  end
64
+ arrow_enable :base_auth
63
65
 
64
66
  def bearer_auth scheme_name, format = 'JWT', other_info = { }
65
67
  security_scheme scheme_name, { type: 'http', scheme: 'bearer', bearerFormat: format }.merge(other_info)
66
68
  end
69
+ arrow_enable :bearer_auth
67
70
 
68
71
  def api_key scheme_name, field:, in:, **other_info
69
72
  _in = binding.local_variable_get(:in)
70
73
  security_scheme scheme_name, { type: 'apiKey', name: field, in: _in }.merge(other_info)
71
74
  end
75
+ arrow_enable :api_key
72
76
 
73
77
  def _process_objs
74
78
  self[:responses]&.each do |code, obj|
@@ -27,7 +27,7 @@ module OpenApi
27
27
  security: settings[:global_security], tags: [ ], paths: { },
28
28
  components: {
29
29
  securitySchemes: { }, schemas: { }, parameters: { }, requestBodies: { }
30
- }.merge(settings[:components])
30
+ }.merge(settings[:components] || { })
31
31
  )
32
32
 
33
33
  settings[:root_controller].descendants.each do |ctrl|
@@ -1,3 +1,3 @@
1
1
  module OpenApi
2
- VERSION = '1.4.1'
2
+ VERSION = '1.4.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zero-rails_openapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - zhandao
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-06 00:00:00.000000000 Z
11
+ date: 2017-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  version: '0'
151
151
  requirements: []
152
152
  rubyforge_project:
153
- rubygems_version: 2.6.12
153
+ rubygems_version: 2.6.13
154
154
  signing_key:
155
155
  specification_version: 4
156
156
  summary: Concise DSL for generating OpenAPI3 documentation.