openfeature-ruby-sdk-contrib 0.3.0 → 0.4.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 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: aa6213b99bd5852e81c1fe7184950031c35038513eeef5ac9003694197ba1633
         | 
| 4 | 
            +
              data.tar.gz: 3aa3234f79d229c9520580d217d8cdf859f6f95ec80967b5a63c994bea83f454
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 0c7d32302bfe0f293e9a7aaf00413a289ee7c0805dc76f5d623b7a0f972d156a63b5783e51a1ef55c6a39d47f6e48608d665d6d714e7161abd7e2eb37eafec08
         | 
| 7 | 
            +
              data.tar.gz: 48828fff61ed31bc5c97fabdccdf8c578091d8eb814cb9b21ec8a77a3ede301bed6f36a7fc87b32370b93dd494d15534605eaf83444e5375eb9c2fbc2a310b5b
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                openfeature-ruby-sdk-contrib (0. | 
| 4 | 
            +
                openfeature-ruby-sdk-contrib (0.3.0)
         | 
| 5 5 | 
             
                  concurrent-ruby (~> 1.2.2)
         | 
| 6 6 | 
             
                  faraday (~> 2.7.10)
         | 
| 7 7 | 
             
                  openfeature-sdk (~> 0.1)
         | 
| @@ -10,11 +10,13 @@ GEM | |
| 10 10 | 
             
              remote: https://rubygems.org/
         | 
| 11 11 | 
             
              specs:
         | 
| 12 12 | 
             
                ast (2.4.2)
         | 
| 13 | 
            +
                base64 (0.2.0)
         | 
| 13 14 | 
             
                byebug (11.1.3)
         | 
| 14 15 | 
             
                coderay (1.1.3)
         | 
| 15 16 | 
             
                concurrent-ruby (1.2.2)
         | 
| 16 17 | 
             
                diff-lcs (1.5.0)
         | 
| 17 | 
            -
                faraday (2.7. | 
| 18 | 
            +
                faraday (2.7.12)
         | 
| 19 | 
            +
                  base64
         | 
| 18 20 | 
             
                  faraday-net_http (>= 2.0, < 3.1)
         | 
| 19 21 | 
             
                  ruby2_keywords (>= 0.0.4)
         | 
| 20 22 | 
             
                faraday-net_http (3.0.2)
         | 
| @@ -95,6 +97,7 @@ GEM | |
| 95 97 |  | 
| 96 98 | 
             
            PLATFORMS
         | 
| 97 99 | 
             
              arm64-darwin-22
         | 
| 100 | 
            +
              arm64-darwin-23
         | 
| 98 101 |  | 
| 99 102 | 
             
            DEPENDENCIES
         | 
| 100 103 | 
             
              openfeature-ruby-sdk-contrib!
         | 
    
        data/README.md
    CHANGED
    
    | @@ -107,6 +107,32 @@ Rails.application.config.openfeature_client = OpenFeature::SDK::Contrib::Client. | |
| 107 107 | 
             
            )
         | 
| 108 108 | 
             
            ```
         | 
| 109 109 |  | 
| 110 | 
            +
            #### Custom Auth Strategy
         | 
| 111 | 
            +
             | 
| 112 | 
            +
            Some applications may require more finesse to authenticate, for example, an OAuth Flow. To use this style flow, the `extra_options` key that is passed to `HttpProvider.new` accepts an `authentication_strategy` key. This key gets passed to the internal Faraday client as a middleware, so it can be anything usable as a Faraday middleware. Example:
         | 
| 113 | 
            +
             | 
| 114 | 
            +
            ```
         | 
| 115 | 
            +
              module FaradayMiddleware
         | 
| 116 | 
            +
                class MyCustomMiddleware < Faraday::Middleware
         | 
| 117 | 
            +
                  def initialize(args)
         | 
| 118 | 
            +
                    # do stuff
         | 
| 119 | 
            +
                  end
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                  def call(env)
         | 
| 122 | 
            +
                    @app.call(env)
         | 
| 123 | 
            +
                  end
         | 
| 124 | 
            +
                end
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                Faraday::Request.register_middleware my_custom_middleware: -> { MyCustomMiddleware }
         | 
| 127 | 
            +
              end
         | 
| 128 | 
            +
             | 
| 129 | 
            +
              Rails.application.config.openfeature_provider = OpenFeature::SDK::Contrib::Providers::HttpProvider.new(
         | 
| 130 | 
            +
                extra_options: {
         | 
| 131 | 
            +
                  authentication_strategy: [:my_custom_middleware, my_custom_middleware_arguments]
         | 
| 132 | 
            +
                }
         | 
| 133 | 
            +
              )
         | 
| 134 | 
            +
            ```
         | 
| 135 | 
            +
             | 
| 110 136 | 
             
            ## Development
         | 
| 111 137 |  | 
| 112 138 | 
             
            After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
         | 
| @@ -155,7 +155,7 @@ module OpenFeature | |
| 155 155 | 
             
                      # Returns a value for the requested flag_key
         | 
| 156 156 | 
             
                      #
         | 
| 157 157 | 
             
                      # @param flag_key [String] requested flag key
         | 
| 158 | 
            -
                      # @param type ["boolean", "number", "float", "string"]
         | 
| 158 | 
            +
                      # @param type ["boolean", "number", "float", "string", "array"]
         | 
| 159 159 | 
             
                      def read_value_with_cache(flag_key:, type:)
         | 
| 160 160 | 
             
                        read_all_values_with_cache.detect { |f| f["kind"] == type && f["name"] == flag_key }
         | 
| 161 161 | 
             
                      end
         | 
| @@ -30,9 +30,10 @@ module OpenFeature | |
| 30 30 | 
             
                      NAME = "Http Provider"
         | 
| 31 31 |  | 
| 32 32 | 
             
                      def read_and_parse_flags
         | 
| 33 | 
            -
                        headers | 
| 34 | 
            -
                        uri | 
| 35 | 
            -
                        base_url | 
| 33 | 
            +
                        headers                 = extra_options.fetch(:headers, {})
         | 
| 34 | 
            +
                        uri                     = URI(source)
         | 
| 35 | 
            +
                        base_url                = "#{uri.scheme}://#{uri.host}:#{uri.port}"
         | 
| 36 | 
            +
                        authentication_strategy = extra_options.delete(:authentication_strategy)
         | 
| 36 37 |  | 
| 37 38 | 
             
                        if format == :yaml
         | 
| 38 39 | 
             
                          headers["Content-Type"] ||= "application/yaml"
         | 
| @@ -40,8 +41,11 @@ module OpenFeature | |
| 40 41 | 
             
                          headers["Content-Type"] ||= "application/json"
         | 
| 41 42 | 
             
                        end
         | 
| 42 43 |  | 
| 43 | 
            -
                        client = Faraday.new(url: base_url, **extra_options, headers: headers)
         | 
| 44 | 
            -
             | 
| 44 | 
            +
                        client = Faraday.new(url: base_url, **extra_options, headers: headers) do |conn|
         | 
| 45 | 
            +
                          conn.request(*authentication_strategy) if authentication_strategy
         | 
| 46 | 
            +
                        end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                        res = client.get(uri.request_uri)
         | 
| 45 49 |  | 
| 46 50 | 
             
                        return custom_parser.call(res.body) if custom_parser
         | 
| 47 51 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: openfeature-ruby-sdk-contrib
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Eugene Howe
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2024-01-12 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: concurrent-ruby
         | 
| @@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 94 94 | 
             
                - !ruby/object:Gem::Version
         | 
| 95 95 | 
             
                  version: '0'
         | 
| 96 96 | 
             
            requirements: []
         | 
| 97 | 
            -
            rubygems_version: 3. | 
| 97 | 
            +
            rubygems_version: 3.3.7
         | 
| 98 98 | 
             
            signing_key:
         | 
| 99 99 | 
             
            specification_version: 4
         | 
| 100 100 | 
             
            summary: Providers and Hooks for the OpenFeature Ruby SDK
         |