omniauth-swagger 0.1.3 → 0.2.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
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e9d3e6a898c3f01e4e7dadf5346a80eadb9f1b43
         | 
| 4 | 
            +
              data.tar.gz: 2864dd4622faf11d5446adc016fed566085001d6
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 72f09e591ba504b9a0f14ca04965a38105d427555cc5753fef031b529d292b2ae98849600dcfb24fb6a98caf737b26fc4675b25650edb8be198279b7fc65245e
         | 
| 7 | 
            +
              data.tar.gz: b86613fb5f762a38df03cdd986f92a390eaf2cc8c244c2f50292b81620caab42bf4ae7e9f99448427b95fec568922c9cd6e2439480e7922b3b2b31f9ce17215e
         | 
| @@ -1,7 +1,8 @@ | |
| 1 1 | 
             
            require 'omniauth-oauth2'
         | 
| 2 2 | 
             
            require 'omniauth/swagger/oauth2_definition'
         | 
| 3 3 | 
             
            require 'omniauth/swagger/default_provider_lookup'
         | 
| 4 | 
            -
            require ' | 
| 4 | 
            +
            require 'omniauth/swagger/uid_options'
         | 
| 5 | 
            +
            require 'apiture'
         | 
| 5 6 |  | 
| 6 7 | 
             
            module OmniAuth
         | 
| 7 8 | 
             
              module Strategies
         | 
| @@ -9,8 +10,6 @@ module OmniAuth | |
| 9 10 | 
             
                class Swagger < OmniAuth::Strategies::OAuth2
         | 
| 10 11 |  | 
| 11 12 | 
             
                  OPTION_UID = 'uid'.freeze
         | 
| 12 | 
            -
                  OPTION_UID_API = 'api'.freeze
         | 
| 13 | 
            -
                  OPTION_UID_PARAM = 'param'.freeze
         | 
| 14 13 | 
             
                  OPTION_SPECIFICATION = 'specification'.freeze
         | 
| 15 14 | 
             
                  OPTION_SUBDOMAIN = 'subdomain'.freeze
         | 
| 16 15 |  | 
| @@ -44,17 +43,25 @@ module OmniAuth | |
| 44 43 | 
             
                  end
         | 
| 45 44 |  | 
| 46 45 | 
             
                  uid do
         | 
| 47 | 
            -
                    if  | 
| 48 | 
            -
                       | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
                         | 
| 46 | 
            +
                    if uid_options.nil?
         | 
| 47 | 
            +
                      raise "Missing #{OPTION_UID} setting for provider '#{provider_name}'"
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                    elsif uid_options.api?
         | 
| 50 | 
            +
                      val = uid_options.
         | 
| 51 | 
            +
                        api_value_path.
         | 
| 52 | 
            +
                        split('.').
         | 
| 53 | 
            +
                        reduce(raw_info) { |memo, key| memo && memo[key] }
         | 
| 54 | 
            +
                      if val
         | 
| 55 | 
            +
                        val.to_s
         | 
| 55 56 | 
             
                      else
         | 
| 56 | 
            -
                        raise " | 
| 57 | 
            +
                        raise "Invalid UID value path #{uid_options.api_value_path}: #{raw_info.inspect}"
         | 
| 57 58 | 
             
                      end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                    elsif uid_options.access_token_param?
         | 
| 61 | 
            +
                      access_token.params[uid_options.param]
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                    else
         | 
| 64 | 
            +
                      raise "Unsupported UID option: #{provider_options[OPTION_UID].inspect}"
         | 
| 58 65 | 
             
                    end
         | 
| 59 66 | 
             
                  end
         | 
| 60 67 |  | 
| @@ -64,7 +71,12 @@ module OmniAuth | |
| 64 71 |  | 
| 65 72 | 
             
                  protected
         | 
| 66 73 | 
             
                    def provider_name
         | 
| 67 | 
            -
                      @provider_name ||=  | 
| 74 | 
            +
                      @provider_name ||= begin
         | 
| 75 | 
            +
                                           unless nm = request.params[options[:provider_param]]
         | 
| 76 | 
            +
                                             raise OmniAuth::Error, "Unable to determine provider"
         | 
| 77 | 
            +
                                           end
         | 
| 78 | 
            +
                                           nm.to_sym
         | 
| 79 | 
            +
                                         end
         | 
| 68 80 | 
             
                    end
         | 
| 69 81 |  | 
| 70 82 | 
             
                    def provider_options
         | 
| @@ -85,21 +97,19 @@ module OmniAuth | |
| 85 97 | 
             
                                           end
         | 
| 86 98 | 
             
                    end
         | 
| 87 99 |  | 
| 88 | 
            -
                    def  | 
| 89 | 
            -
                       | 
| 90 | 
            -
                      opt.kind_of?(Hash) ? opt[OPTION_UID_API] : opt
         | 
| 100 | 
            +
                    def uid_options
         | 
| 101 | 
            +
                      @uid_options ||= OmniAuth::Swagger::UIDOptions.from_options(provider_options[OPTION_UID])
         | 
| 91 102 | 
             
                    end
         | 
| 92 103 |  | 
| 93 104 | 
             
                    def raw_info
         | 
| 94 | 
            -
                      if  | 
| 105 | 
            +
                      if uid_options
         | 
| 95 106 | 
             
                        api_options = {@definition.oauth2_key => {token: access_token.token}}
         | 
| 96 107 | 
             
                        if provider_options[OPTION_SUBDOMAIN]
         | 
| 97 108 | 
             
                          api_options[:subdomain] = provider_options[OPTION_SUBDOMAIN]
         | 
| 98 109 | 
             
                        end
         | 
| 99 | 
            -
                        api_class =  | 
| 110 | 
            +
                        api_class = Apiture.build_api(specification)
         | 
| 100 111 | 
             
                        api = api_class.new(api_options)
         | 
| 101 | 
            -
                         | 
| 102 | 
            -
                        api.__send__(operation, {})
         | 
| 112 | 
            +
                        api.__send__(uid_options.api_operation, uid_options.api_params).body
         | 
| 103 113 | 
             
                      else
         | 
| 104 114 | 
             
                        {}
         | 
| 105 115 | 
             
                      end
         | 
| @@ -0,0 +1,45 @@ | |
| 1 | 
            +
            module OmniAuth
         | 
| 2 | 
            +
              module Swagger
         | 
| 3 | 
            +
                class UIDOptions
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                  OPTION_API = 'api'.freeze
         | 
| 6 | 
            +
                  OPTION_API_PARAMS = 'api_params'.freeze
         | 
| 7 | 
            +
                  OPTION_PARAM = 'param'.freeze
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  attr_accessor :api, :api_params, :param
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  def self.from_options(opts)
         | 
| 12 | 
            +
                    return nil if opts.nil?
         | 
| 13 | 
            +
                    unless opts.kind_of?(Hash)
         | 
| 14 | 
            +
                      opts = {OPTION_API => opts}
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                    uid_options = new
         | 
| 17 | 
            +
                    uid_options.api = opts[OPTION_API]
         | 
| 18 | 
            +
                    uid_options.api_params = opts[OPTION_API_PARAMS]
         | 
| 19 | 
            +
                    uid_options.param = opts[OPTION_PARAM]
         | 
| 20 | 
            +
                    uid_options
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  def api?
         | 
| 24 | 
            +
                    api != nil
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  def access_token_param?
         | 
| 28 | 
            +
                    param != nil
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  def api_value_path
         | 
| 32 | 
            +
                    @api_value_path ||= api.split("#")[1]
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  def api_operation
         | 
| 36 | 
            +
                    @api_operation ||= api.split("#").first
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  def api_params
         | 
| 40 | 
            +
                    @api_params || {}
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
            end
         | 
    
        data/omniauth-swagger.gemspec
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: omniauth-swagger
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Calvin Yu
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2016-07-23 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -53,19 +53,19 @@ dependencies: | |
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: 1.3.0
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name:  | 
| 56 | 
            +
              name: apiture
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 | 
            -
                - - " | 
| 59 | 
            +
                - - "~>"
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: 0. | 
| 61 | 
            +
                    version: 0.2.3
         | 
| 62 62 | 
             
              type: :runtime
         | 
| 63 63 | 
             
              prerelease: false
         | 
| 64 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 | 
            -
                - - " | 
| 66 | 
            +
                - - "~>"
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: 0. | 
| 68 | 
            +
                    version: 0.2.3
         | 
| 69 69 | 
             
            description: Uses a spec's security definition information to build the oauth2 strategy
         | 
| 70 70 | 
             
            email:
         | 
| 71 71 | 
             
            - me@sourcebender.com
         | 
| @@ -99,6 +99,7 @@ files: | |
| 99 99 | 
             
            - lib/omniauth/swagger/oauth2_definition.rb
         | 
| 100 100 | 
             
            - lib/omniauth/swagger/provider_defaults.rb
         | 
| 101 101 | 
             
            - lib/omniauth/swagger/providers.yml
         | 
| 102 | 
            +
            - lib/omniauth/swagger/uid_options.rb
         | 
| 102 103 | 
             
            - lib/omniauth/swagger/version.rb
         | 
| 103 104 | 
             
            - omniauth-swagger.gemspec
         | 
| 104 105 | 
             
            homepage: http://github.com/incominghq/omniauth-swagger
         |