swaggard 1.4.0 → 1.5.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 +4 -4
- data/README.md +11 -2
- data/lib/swaggard/api_definition.rb +18 -1
- data/lib/swaggard/configuration.rb +23 -1
- data/lib/swaggard/parsers/controller.rb +4 -0
- data/lib/swaggard/swagger/operation.rb +1 -0
- data/lib/swaggard/version.rb +1 -1
- data/spec/fixtures/dummy/config/application.rb +0 -3
- data/spec/fixtures/dummy/log/development.log +0 -0
- data/spec/integration/swaggard_spec.rb +1 -0
- metadata +5 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: d74cf8955c1980e4153b8a1af250e09471b2bdce60e7e59aba84520aaeb66c40
         | 
| 4 | 
            +
              data.tar.gz: c82d51b65fe90228bb4428c16426332a69a2af202e442a4e3b728cf6d48581c7
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ca72d1996855482ef03474325479dae941fbd68b5d2ab7d928c0c132992156bcfe91391ab5bb3aa9b6c48174171a66d9cbf67006e77fab977aec2daab5b1bb9d
         | 
| 7 | 
            +
              data.tar.gz: 5d824f78de1e1a2096899be9378e336631fdb4abd5a6b3185d9d6e368353e73a142cf8e942b5315c2557b2f8ef45e48fa5e092cd3f54f0eacf9ff0a5e2847d25
         | 
    
        data/README.md
    CHANGED
    
    | @@ -49,7 +49,7 @@ Make sure the asset pipeline is enabled by either requiring all railties | |
| 49 49 | 
             
            or just the sprockets one:
         | 
| 50 50 |  | 
| 51 51 | 
             
                # config/application.rb
         | 
| 52 | 
            -
             | 
| 52 | 
            +
             | 
| 53 53 | 
             
                require 'sprockets/railtie'
         | 
| 54 54 |  | 
| 55 55 | 
             
            Access your service documentation
         | 
| @@ -154,7 +154,7 @@ Will generate | |
| 154 154 |  | 
| 155 155 | 
             
            ### Controllers
         | 
| 156 156 |  | 
| 157 | 
            -
            - `@tag name` This is used to indicate under what `name` tag this controller needs to be grouped. If not provided it will use the full controller class name.
         | 
| 157 | 
            +
            - `@tag name` This is used to indicate under what `name` tag this controller needs to be grouped. If not provided and Con.ignore_untagged_controllers = true it will use the full controller class name.
         | 
| 158 158 | 
             
            - `@query_parameter [type] name` This is used to indicate that your action receives the `name` parameter of `type` on the query string.
         | 
| 159 159 | 
             
            - `@body_parameter [type] name` This is used to indicate that your action receives the `name` parameter of `type` on the body.
         | 
| 160 160 | 
             
            - `@response_class type` This is used to indicate that your action returns a response of `type`.
         | 
| @@ -163,6 +163,15 @@ Will generate | |
| 163 163 | 
             
            - `@form_parameter`
         | 
| 164 164 | 
             
            - `@parameter_list`
         | 
| 165 165 |  | 
| 166 | 
            +
            If you want to generate documentation for all controllers even for those that don't have a tag do:
         | 
| 167 | 
            +
                # config/initializers/swaggard.rb
         | 
| 168 | 
            +
                Swaggard.configure do |config|
         | 
| 169 | 
            +
                  ...
         | 
| 170 | 
            +
                  config.ignore_untagged_controllers = false
         | 
| 171 | 
            +
                  ...
         | 
| 172 | 
            +
                end
         | 
| 173 | 
            +
             | 
| 174 | 
            +
             | 
| 166 175 | 
             
            ### Models
         | 
| 167 176 |  | 
| 168 177 | 
             
            - `@attr [type] name` This is used to indicate that your models has an attribute `name` of `type`.
         | 
| @@ -52,7 +52,7 @@ module Swaggard | |
| 52 52 | 
             
                    'tags'        => @tags.map { |_, tag| tag.to_doc },
         | 
| 53 53 | 
             
                    'paths'       => Hash[@paths.values.map { |path| [format_path(path.path), path.to_doc] }],
         | 
| 54 54 | 
             
                    'definitions' => Hash[@definitions.merge(Swaggard.configuration.definitions).map { |id, definition| [id, definition.to_doc(@definitions)] }]
         | 
| 55 | 
            -
                  }
         | 
| 55 | 
            +
                  }.merge(security_definitions)
         | 
| 56 56 | 
             
                end
         | 
| 57 57 |  | 
| 58 58 | 
             
                private
         | 
| @@ -62,5 +62,22 @@ module Swaggard | |
| 62 62 |  | 
| 63 63 | 
             
                  path.gsub(Swaggard.configuration.api_base_path, '')
         | 
| 64 64 | 
             
                end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                def security_definitions
         | 
| 67 | 
            +
                  security_definitions = Swaggard.configuration.security_definitions
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                  return {} if security_definitions.empty? && Swaggard.configuration.security.empty?
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                  Swaggard.configuration.security.keys.each do |authentication_type|
         | 
| 72 | 
            +
                    next if security_definitions.key?(authentication_type)
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                    warn "#{authentication_type} not supported by securityDefinitions"
         | 
| 75 | 
            +
                  end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                  {
         | 
| 78 | 
            +
                    'securityDefinitions' => security_definitions,
         | 
| 79 | 
            +
                    'security' => Swaggard.configuration.security,
         | 
| 80 | 
            +
                  }
         | 
| 81 | 
            +
                end
         | 
| 65 82 | 
             
              end
         | 
| 66 83 | 
             
            end
         | 
| @@ -21,7 +21,7 @@ module Swaggard | |
| 21 21 | 
             
                            :language, :additional_parameters, :schemes, :ignore_undocumented_paths,
         | 
| 22 22 | 
             
                            :license_name, :exclude_base_path_from_paths, :default_response_description,
         | 
| 23 23 | 
             
                            :default_response_status_code, :excluded_paths, :path_parameter_description,
         | 
| 24 | 
            -
                            :ignore_put_if_patch_exists
         | 
| 24 | 
            +
                            :ignore_put_if_patch_exists, :ignore_untagged_controllers
         | 
| 25 25 |  | 
| 26 26 | 
             
                def swagger_version
         | 
| 27 27 | 
             
                  @swagger_version ||= '2.0'
         | 
| @@ -117,6 +117,12 @@ module Swaggard | |
| 117 117 | 
             
                  @ignore_undocumented_paths = false
         | 
| 118 118 | 
             
                end
         | 
| 119 119 |  | 
| 120 | 
            +
                def ignore_untagged_controllers
         | 
| 121 | 
            +
                  return @ignore_untagged_controllers unless @ignore_untagged_controllers.nil?
         | 
| 122 | 
            +
             | 
| 123 | 
            +
                  @ignore_untagged_controllers = true
         | 
| 124 | 
            +
                end
         | 
| 125 | 
            +
             | 
| 120 126 | 
             
                def exclude_base_path_from_paths
         | 
| 121 127 | 
             
                  return @exclude_base_path_from_paths unless @exclude_base_path_from_paths.nil?
         | 
| 122 128 |  | 
| @@ -164,5 +170,21 @@ module Swaggard | |
| 164 170 |  | 
| 165 171 | 
             
                  @ignore_put_if_patch_exists = false
         | 
| 166 172 | 
             
                end
         | 
| 173 | 
            +
             | 
| 174 | 
            +
                def security_definitions
         | 
| 175 | 
            +
                  @security_definitions ||= {}
         | 
| 176 | 
            +
                end
         | 
| 177 | 
            +
             | 
| 178 | 
            +
                def security
         | 
| 179 | 
            +
                  @security ||= {}
         | 
| 180 | 
            +
                end
         | 
| 181 | 
            +
             | 
| 182 | 
            +
                def add_security_definition(authentication_key, definition)
         | 
| 183 | 
            +
                  security_definitions[authentication_key] = definition
         | 
| 184 | 
            +
                end
         | 
| 185 | 
            +
             | 
| 186 | 
            +
                def add_security(authentication_key, scopes = [])
         | 
| 187 | 
            +
                  security[authentication_key] = scopes
         | 
| 188 | 
            +
                end
         | 
| 167 189 | 
             
              end
         | 
| 168 190 | 
             
            end
         | 
| @@ -25,6 +25,10 @@ module Swaggard | |
| 25 25 | 
             
                  def get_tags(yard_object)
         | 
| 26 26 | 
             
                    tags = yard_object.tags.select { |tag| tag.tag_name == 'tag' }
         | 
| 27 27 |  | 
| 28 | 
            +
                    if tags.empty? && !Swaggard.configuration.ignore_untagged_controllers
         | 
| 29 | 
            +
                      tags << nil
         | 
| 30 | 
            +
                    end
         | 
| 31 | 
            +
             | 
| 28 32 | 
             
                    tags.map { |tag| Swagger::Tag.new(yard_object, tag) }
         | 
| 29 33 | 
             
                  end
         | 
| 30 34 | 
             
                end
         | 
    
        data/lib/swaggard/version.rb
    CHANGED
    
    
| 
            File without changes
         | 
| @@ -12,6 +12,7 @@ describe Swaggard, '.get_doc' do | |
| 12 12 | 
             
                Swaggard.configure do |config|
         | 
| 13 13 | 
             
                  config.controllers_path = controller_path
         | 
| 14 14 | 
             
                  config.routes = Dummy::Application.routes.routes
         | 
| 15 | 
            +
                  config.ignore_untagged_controllers = false
         | 
| 15 16 | 
             
                end
         | 
| 16 17 |  | 
| 17 18 | 
             
                swagger_json = JSON.dump(Swaggard.get_doc(host))
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: swaggard
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.5.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Adrian Gomez
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2024-07-09 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -194,6 +194,7 @@ files: | |
| 194 194 | 
             
            - spec/fixtures/dummy/config/application.rb
         | 
| 195 195 | 
             
            - spec/fixtures/dummy/config/environments/development.rb
         | 
| 196 196 | 
             
            - spec/fixtures/dummy/config/routes.rb
         | 
| 197 | 
            +
            - spec/fixtures/dummy/log/development.log
         | 
| 197 198 | 
             
            - spec/fixtures/swagger_schema.json
         | 
| 198 199 | 
             
            - spec/integration/swaggard_spec.rb
         | 
| 199 200 | 
             
            - spec/spec_helper.rb
         | 
| @@ -216,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 216 217 | 
             
                - !ruby/object:Gem::Version
         | 
| 217 218 | 
             
                  version: '0'
         | 
| 218 219 | 
             
            requirements: []
         | 
| 219 | 
            -
            rubygems_version: 3. | 
| 220 | 
            +
            rubygems_version: 3.3.7
         | 
| 220 221 | 
             
            signing_key:
         | 
| 221 222 | 
             
            specification_version: 4
         | 
| 222 223 | 
             
            summary: 'Swaggard: Swagger Rails REST API doc using yard YARD'
         | 
| @@ -228,6 +229,7 @@ test_files: | |
| 228 229 | 
             
            - spec/fixtures/dummy/config/application.rb
         | 
| 229 230 | 
             
            - spec/fixtures/dummy/config/environments/development.rb
         | 
| 230 231 | 
             
            - spec/fixtures/dummy/config/routes.rb
         | 
| 232 | 
            +
            - spec/fixtures/dummy/log/development.log
         | 
| 231 233 | 
             
            - spec/fixtures/swagger_schema.json
         | 
| 232 234 | 
             
            - spec/integration/swaggard_spec.rb
         | 
| 233 235 | 
             
            - spec/spec_helper.rb
         |