mangopay 3.19.0 → 3.20.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/CHANGELOG.md +23 -0
 - data/README.md +19 -0
 - data/lib/mangopay/version.rb +1 -1
 - data/lib/mangopay.rb +33 -0
 - data/spec/mangopay/configuration_spec.rb +68 -0
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: c22a75f6a785d55c368cc565e3d9b2dc399c5b08cb8b4b8ed27f24762ee9b6a2
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 7b1b066c802f7716aa500267349928ed05d7df7ac9be74e63855376c284e2c03
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 51efb4cb9942a749604b7f44e0fb79958b862ab03a0aa742c70af9bc650001aff7b339d43e56011392556e2e38572343c19a243e5218e09b24d4960346d3c10c
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 1b8d01d73103c23d7e999e6c4e49ae2d57f5161ecb20626be0465d581de3e4c606b38549c4bde0fc4e4b2d27d4a7684c6cd1566b949f32463bf52ace34b309cf
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,3 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ## [3.20.0] - 2023-11-15
         
     | 
| 
      
 2 
     | 
    
         
            +
            ### Added
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            Now, our SDK enables seamless integration with multiple clientIDs, offering enhanced flexibility and customization.
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            You can effortlessly create multiple configuration objects tailored to your specific needs:
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            ```
         
     | 
| 
      
 9 
     | 
    
         
            +
            config = MangoPay::Configuration.new
         
     | 
| 
      
 10 
     | 
    
         
            +
            config.client_id = 'your-client-id'
         
     | 
| 
      
 11 
     | 
    
         
            +
            config.client_apiKey = 'your-api-key'
         
     | 
| 
      
 12 
     | 
    
         
            +
            config.preproduction = true
         
     | 
| 
      
 13 
     | 
    
         
            +
            ```
         
     | 
| 
      
 14 
     | 
    
         
            +
            add them using :
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            `MangoPay.add_config('config1', config)`
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            and perform a call with them using :
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            `MangoPay.get_config('config1').apply_configuration`
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            The previous method configure() is still working.
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
       1 
24 
     | 
    
         
             
            ## [3.19.0] - 2023-11-02
         
     | 
| 
       2 
25 
     | 
    
         
             
            ### Updated
         
     | 
| 
       3 
26 
     | 
    
         | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -85,6 +85,25 @@ rescue MangoPay::ResponseError => ex 
     | 
|
| 
       85 
85 
     | 
    
         
             
            end
         
     | 
| 
       86 
86 
     | 
    
         
             
            ```
         
     | 
| 
       87 
87 
     | 
    
         | 
| 
      
 88 
     | 
    
         
            +
            ### Using multiple clientIDs
         
     | 
| 
      
 89 
     | 
    
         
            +
            You can effortlessly create multiple configuration objects tailored to your specific needs:
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            ```
         
     | 
| 
      
 92 
     | 
    
         
            +
            config = MangoPay::Configuration.new
         
     | 
| 
      
 93 
     | 
    
         
            +
            config.client_id = 'your-client-id'
         
     | 
| 
      
 94 
     | 
    
         
            +
            config.client_apiKey = 'your-api-key'
         
     | 
| 
      
 95 
     | 
    
         
            +
            config.preproduction = true
         
     | 
| 
      
 96 
     | 
    
         
            +
            ```
         
     | 
| 
      
 97 
     | 
    
         
            +
            add them using :
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
            `MangoPay.add_config('config1', config)`
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
            and perform a call with them using :
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
            `MangoPay.get_config('config1').apply_configuration`
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
            The previous method configure() is still working.
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
       88 
107 
     | 
    
         
             
            ### Accessing RateLimit Headers
         
     | 
| 
       89 
108 
     | 
    
         
             
            Along with each request, the rate limiting headers are automatically updated in MangoPay object:
         
     | 
| 
       90 
109 
     | 
    
         | 
    
        data/lib/mangopay/version.rb
    CHANGED
    
    
    
        data/lib/mangopay.rb
    CHANGED
    
    | 
         @@ -49,6 +49,8 @@ module MangoPay 
     | 
|
| 
       49 
49 
     | 
    
         
             
              # temporary
         
     | 
| 
       50 
50 
     | 
    
         
             
              autoload :Temp, 'mangopay/temp'
         
     | 
| 
       51 
51 
     | 
    
         | 
| 
      
 52 
     | 
    
         
            +
              @configurations = {}
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
       52 
54 
     | 
    
         
             
              class Configuration
         
     | 
| 
       53 
55 
     | 
    
         
             
                attr_accessor :preproduction, :root_url,
         
     | 
| 
       54 
56 
     | 
    
         
             
                              :client_id, :client_apiKey,
         
     | 
| 
         @@ -56,6 +58,20 @@ module MangoPay 
     | 
|
| 
       56 
58 
     | 
    
         
             
                              :http_max_retries, :http_open_timeout,
         
     | 
| 
       57 
59 
     | 
    
         
             
                              :logger, :use_ssl
         
     | 
| 
       58 
60 
     | 
    
         | 
| 
      
 61 
     | 
    
         
            +
                def apply_configuration
         
     | 
| 
      
 62 
     | 
    
         
            +
                  MangoPay.configure do |config|
         
     | 
| 
      
 63 
     | 
    
         
            +
                    config.preproduction = @preproduction
         
     | 
| 
      
 64 
     | 
    
         
            +
                    config.client_id = @client_id
         
     | 
| 
      
 65 
     | 
    
         
            +
                    config.client_apiKey = @client_apiKey
         
     | 
| 
      
 66 
     | 
    
         
            +
                    config.log_file = @log_file
         
     | 
| 
      
 67 
     | 
    
         
            +
                    config.http_timeout = @http_timeout
         
     | 
| 
      
 68 
     | 
    
         
            +
                    config.http_max_retries = @http_max_retries
         
     | 
| 
      
 69 
     | 
    
         
            +
                    config.http_open_timeout = @http_open_timeout
         
     | 
| 
      
 70 
     | 
    
         
            +
                    config.use_ssl = @use_ssl
         
     | 
| 
      
 71 
     | 
    
         
            +
                    config.logger = @logger
         
     | 
| 
      
 72 
     | 
    
         
            +
                  end
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
       59 
75 
     | 
    
         
             
                def preproduction
         
     | 
| 
       60 
76 
     | 
    
         
             
                  @preproduction || false
         
     | 
| 
       61 
77 
     | 
    
         
             
                end
         
     | 
| 
         @@ -138,6 +154,23 @@ module MangoPay 
     | 
|
| 
       138 
154 
     | 
    
         
             
                  @ratelimit = obj
         
     | 
| 
       139 
155 
     | 
    
         
             
                end
         
     | 
| 
       140 
156 
     | 
    
         | 
| 
      
 157 
     | 
    
         
            +
                # Add MangoPay.Configuration to the list of configs
         
     | 
| 
      
 158 
     | 
    
         
            +
                def add_config(name, config)
         
     | 
| 
      
 159 
     | 
    
         
            +
                  @configurations[name] = config
         
     | 
| 
      
 160 
     | 
    
         
            +
                end
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
                # Fetch a MangoPay configuration from the list of configs. Throw error if not found
         
     | 
| 
      
 163 
     | 
    
         
            +
                def get_config(name)
         
     | 
| 
      
 164 
     | 
    
         
            +
                  config = @configurations[name]
         
     | 
| 
      
 165 
     | 
    
         
            +
                  raise "Could not find any configuration with name '#{name}'" unless config
         
     | 
| 
      
 166 
     | 
    
         
            +
                  config
         
     | 
| 
      
 167 
     | 
    
         
            +
                end
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
                def remove_config(name)
         
     | 
| 
      
 170 
     | 
    
         
            +
                  raise "Could not find any configuration with name '#{name}'" unless @configurations[name]
         
     | 
| 
      
 171 
     | 
    
         
            +
                  @configurations[name] = nil
         
     | 
| 
      
 172 
     | 
    
         
            +
                end
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
       141 
174 
     | 
    
         
             
                #
         
     | 
| 
       142 
175 
     | 
    
         
             
                # - +method+: HTTP method; lowercase symbol, e.g. :get, :post etc.
         
     | 
| 
       143 
176 
     | 
    
         
             
                # - +url+: the part after Configuration#root_url
         
     | 
| 
         @@ -13,6 +13,74 @@ describe MangoPay::Configuration do 
     | 
|
| 
       13 
13 
     | 
    
         
             
                  }
         
     | 
| 
       14 
14 
     | 
    
         
             
              end
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
      
 16 
     | 
    
         
            +
              it 'fails when calling with wrong client credentials, but succeeds after applying a new (correct) config' do
         
     | 
| 
      
 17 
     | 
    
         
            +
                # create a wrong configuration
         
     | 
| 
      
 18 
     | 
    
         
            +
                wrong_config = MangoPay::Configuration.new
         
     | 
| 
      
 19 
     | 
    
         
            +
                wrong_config.client_id = 'placeholder'
         
     | 
| 
      
 20 
     | 
    
         
            +
                wrong_config.client_apiKey = '0000'
         
     | 
| 
      
 21 
     | 
    
         
            +
                wrong_config.preproduction = true
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                # create a valid configuration
         
     | 
| 
      
 24 
     | 
    
         
            +
                valid_config = MangoPay::Configuration.new
         
     | 
| 
      
 25 
     | 
    
         
            +
                valid_config.client_id = 'sdk-unit-tests'
         
     | 
| 
      
 26 
     | 
    
         
            +
                valid_config.client_apiKey = 'cqFfFrWfCcb7UadHNxx2C9Lo6Djw8ZduLi7J9USTmu8bhxxpju'
         
     | 
| 
      
 27 
     | 
    
         
            +
                valid_config.preproduction = true
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                # add the 2 configs to the list of MangoPay configs
         
     | 
| 
      
 30 
     | 
    
         
            +
                MangoPay.add_config('wrong', wrong_config)
         
     | 
| 
      
 31 
     | 
    
         
            +
                MangoPay.add_config('valid', valid_config)
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                # apply wrong config
         
     | 
| 
      
 34 
     | 
    
         
            +
                MangoPay.get_config('wrong').apply_configuration
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                expect {
         
     | 
| 
      
 37 
     | 
    
         
            +
                  MangoPay::User.fetch()
         
     | 
| 
      
 38 
     | 
    
         
            +
                }.to raise_error { |err|
         
     | 
| 
      
 39 
     | 
    
         
            +
                  expect(err).to be_a MangoPay::ResponseError
         
     | 
| 
      
 40 
     | 
    
         
            +
                  expect(err.code).to eq '401'
         
     | 
| 
      
 41 
     | 
    
         
            +
                  expect(err.message).to eq 'invalid_client'
         
     | 
| 
      
 42 
     | 
    
         
            +
                }
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                # apply valid configuration
         
     | 
| 
      
 45 
     | 
    
         
            +
                MangoPay.get_config('valid').apply_configuration
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                # expect success
         
     | 
| 
      
 48 
     | 
    
         
            +
                users = MangoPay::User.fetch()
         
     | 
| 
      
 49 
     | 
    
         
            +
                expect(users).to be_kind_of(Array)
         
     | 
| 
      
 50 
     | 
    
         
            +
              end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
              it 'fails when fetching a config that does not exist' do
         
     | 
| 
      
 53 
     | 
    
         
            +
                expect {
         
     | 
| 
      
 54 
     | 
    
         
            +
                  MangoPay.get_config('placeholder')
         
     | 
| 
      
 55 
     | 
    
         
            +
                }.to raise_error { |err|
         
     | 
| 
      
 56 
     | 
    
         
            +
                  expect(err).to be_a RuntimeError
         
     | 
| 
      
 57 
     | 
    
         
            +
                  expect(err.message).to eq "Could not find any configuration with name 'placeholder'"
         
     | 
| 
      
 58 
     | 
    
         
            +
                }
         
     | 
| 
      
 59 
     | 
    
         
            +
              end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              it 'succeeds when removing config' do
         
     | 
| 
      
 62 
     | 
    
         
            +
                wrong_config = MangoPay::Configuration.new
         
     | 
| 
      
 63 
     | 
    
         
            +
                wrong_config.client_id = 'placeholder'
         
     | 
| 
      
 64 
     | 
    
         
            +
                wrong_config.client_apiKey = '0000'
         
     | 
| 
      
 65 
     | 
    
         
            +
                wrong_config.preproduction = true
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                MangoPay.add_config('wrong', wrong_config)
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                # pass when fetching config before removing it
         
     | 
| 
      
 70 
     | 
    
         
            +
                MangoPay.get_config('wrong')
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                # remove config
         
     | 
| 
      
 73 
     | 
    
         
            +
                MangoPay.remove_config('wrong')
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                # fail when trying to fetch after removal
         
     | 
| 
      
 76 
     | 
    
         
            +
                expect {
         
     | 
| 
      
 77 
     | 
    
         
            +
                  MangoPay.get_config('wrong')
         
     | 
| 
      
 78 
     | 
    
         
            +
                }.to raise_error { |err|
         
     | 
| 
      
 79 
     | 
    
         
            +
                  expect(err).to be_a RuntimeError
         
     | 
| 
      
 80 
     | 
    
         
            +
                  expect(err.message).to eq "Could not find any configuration with name 'wrong'"
         
     | 
| 
      
 81 
     | 
    
         
            +
                }
         
     | 
| 
      
 82 
     | 
    
         
            +
              end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
       16 
84 
     | 
    
         
             
              it 'goes ok when calling with correct client credentials' do
         
     | 
| 
       17 
85 
     | 
    
         
             
                reset_mangopay_configuration
         
     | 
| 
       18 
86 
     | 
    
         
             
                users = MangoPay::User.fetch()
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: mangopay
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.20.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Geoffroy Lorieux
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2023-11- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2023-11-15 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: multi_json
         
     |