muffin_man 1.3.0 → 1.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 +4 -4
 - data/.gitignore +1 -0
 - data/CHANGELOG.md +3 -0
 - data/README.md +6 -3
 - data/lib/muffin_man/sp_api_client.rb +11 -5
 - data/lib/muffin_man/version.rb +1 -1
 - data/muffin_man.gemspec +1 -0
 - metadata +18 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 1034d149292cba5172729ff270ccb038a70c6dcf1b5a9d460add8b7b370f0dea
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 4d99306ee66d36d0df05bcd46e4d71a4af2db29b3a2d5562b37d5634b7722469
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 9e0faedca6d800deb56277c05103859cbdc2ceaebb80ec811ecab69e49d280913e37ecd09630d35bb95ae291e446b71d054877e4b7a6ca245c59b6797e1988a0
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 34a92f83302a0f1945f1887bbac28e97c2150d734efffcdba648f91fa42aa5ba89e164f1005460694676c100d6ead10eee9177ca1df88055066acb5efb49e204
         
     | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/CHANGELOG.md
    ADDED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -40,6 +40,7 @@ credentials = { 
     | 
|
| 
       40 
40 
     | 
    
         
             
              aws_secret_access_key: AWS_SECRET_ACCESS_KEY,
         
     | 
| 
       41 
41 
     | 
    
         
             
              region: REGION, # This can be one of ['na', 'eu', 'fe'] and defaults to 'na'
         
     | 
| 
       42 
42 
     | 
    
         
             
              sts_iam_role_arn: STS_IAM_ROLE_ARN, # Optional
         
     | 
| 
      
 43 
     | 
    
         
            +
              access_token_cache_key: SELLING_PARTNER_ID, # Optional if you want access token caching
         
     | 
| 
       43 
44 
     | 
    
         
             
            }
         
     | 
| 
       44 
45 
     | 
    
         
             
            client = MuffinMan::Solicitations::V1.new(credentials)
         
     | 
| 
       45 
46 
     | 
    
         
             
            response = client.create_product_review_and_seller_feedback_solicitation(amazon_order_id, marketplace_ids)
         
     | 
| 
         @@ -48,6 +49,8 @@ JSON.parse(response.body) 
     | 
|
| 
       48 
49 
     | 
    
         | 
| 
       49 
50 
     | 
    
         
             
            You can optionally use Amazon's sandbox environment by specifying `client = MuffinMan::Solicitations.new(credentials, sandbox = true)`
         
     | 
| 
       50 
51 
     | 
    
         | 
| 
      
 52 
     | 
    
         
            +
            ### Access Token Caching
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
       51 
54 
     | 
    
         
             
            You can save and retrieve the LWA refresh token by defining a lambda in your initializers.
         
     | 
| 
       52 
55 
     | 
    
         | 
| 
       53 
56 
     | 
    
         
             
            For example, if you are using Redis as your cache you could define:
         
     | 
| 
         @@ -55,11 +58,11 @@ For example, if you are using Redis as your cache you could define: 
     | 
|
| 
       55 
58 
     | 
    
         
             
            ```ruby
         
     | 
| 
       56 
59 
     | 
    
         
             
            @@redis = Redis.new
         
     | 
| 
       57 
60 
     | 
    
         
             
            MuffinMan.configure do |config|
         
     | 
| 
       58 
     | 
    
         
            -
              config.save_access_token = -> ( 
     | 
| 
       59 
     | 
    
         
            -
                @@redis.set("SP-TOKEN-#{ 
     | 
| 
      
 61 
     | 
    
         
            +
              config.save_access_token = -> (access_token_cache_key, token) do
         
     | 
| 
      
 62 
     | 
    
         
            +
                @@redis.set("SP-TOKEN-#{access_token_cache_key}", token['access_token'], ex: token['expires_in'])
         
     | 
| 
       60 
63 
     | 
    
         
             
              end
         
     | 
| 
       61 
64 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
              config.get_access_token = -> ( 
     | 
| 
      
 65 
     | 
    
         
            +
              config.get_access_token = -> (access_token_cache_key) { @@redis.get("SP-TOKEN-#{access_token_cache_key}") }
         
     | 
| 
       63 
66 
     | 
    
         
             
            end
         
     | 
| 
       64 
67 
     | 
    
         
             
            ```
         
     | 
| 
       65 
68 
     | 
    
         | 
| 
         @@ -7,8 +7,9 @@ require "securerandom" 
     | 
|
| 
       7 
7 
     | 
    
         
             
            module MuffinMan
         
     | 
| 
       8 
8 
     | 
    
         
             
              class SpApiClient
         
     | 
| 
       9 
9 
     | 
    
         
             
                attr_reader :refresh_token, :client_id, :client_secret, :aws_access_key_id,
         
     | 
| 
       10 
     | 
    
         
            -
                            :aws_secret_access_key, :sts_iam_role_arn, :sandbox, :config, 
     | 
| 
       11 
     | 
    
         
            -
                            : 
     | 
| 
      
 10 
     | 
    
         
            +
                            :aws_secret_access_key, :sts_iam_role_arn, :sandbox, :config,
         
     | 
| 
      
 11 
     | 
    
         
            +
                            :region, :request_type, :local_var_path, :query_params,
         
     | 
| 
      
 12 
     | 
    
         
            +
                            :request_body, :scope, :access_token_cache_key
         
     | 
| 
       12 
13 
     | 
    
         | 
| 
       13 
14 
     | 
    
         
             
                ACCESS_TOKEN_URL = "https://api.amazon.com/auth/o2/token".freeze
         
     | 
| 
       14 
15 
     | 
    
         
             
                SERVICE_NAME = "execute-api".freeze
         
     | 
| 
         @@ -27,6 +28,7 @@ module MuffinMan 
     | 
|
| 
       27 
28 
     | 
    
         
             
                  @sts_iam_role_arn = credentials[:sts_iam_role_arn]
         
     | 
| 
       28 
29 
     | 
    
         
             
                  @region = credentials[:region] || "na"
         
     | 
| 
       29 
30 
     | 
    
         
             
                  @scope = credentials[:scope]
         
     | 
| 
      
 31 
     | 
    
         
            +
                  @access_token_cache_key = credentials[:access_token_cache_key]
         
     | 
| 
       30 
32 
     | 
    
         
             
                  @sandbox = sandbox
         
     | 
| 
       31 
33 
     | 
    
         
             
                  Typhoeus::Config.user_agent = ""
         
     | 
| 
       32 
34 
     | 
    
         
             
                  @config = MuffinMan.configuration
         
     | 
| 
         @@ -63,18 +65,22 @@ module MuffinMan 
     | 
|
| 
       63 
65 
     | 
    
         
             
                end
         
     | 
| 
       64 
66 
     | 
    
         | 
| 
       65 
67 
     | 
    
         
             
                def retrieve_lwa_access_token
         
     | 
| 
       66 
     | 
    
         
            -
                  return request_lwa_access_token["access_token"] unless  
     | 
| 
      
 68 
     | 
    
         
            +
                  return request_lwa_access_token["access_token"] unless use_cache?
         
     | 
| 
       67 
69 
     | 
    
         | 
| 
       68 
     | 
    
         
            -
                  stored_token = config.get_access_token.call( 
     | 
| 
      
 70 
     | 
    
         
            +
                  stored_token = config.get_access_token.call(access_token_cache_key)
         
     | 
| 
       69 
71 
     | 
    
         
             
                  if stored_token.nil?
         
     | 
| 
       70 
72 
     | 
    
         
             
                    new_token = request_lwa_access_token
         
     | 
| 
       71 
     | 
    
         
            -
                    config.save_access_token.call( 
     | 
| 
      
 73 
     | 
    
         
            +
                    config.save_access_token.call(access_token_cache_key, new_token)
         
     | 
| 
       72 
74 
     | 
    
         
             
                    new_token["access_token"]
         
     | 
| 
       73 
75 
     | 
    
         
             
                  else
         
     | 
| 
       74 
76 
     | 
    
         
             
                    stored_token
         
     | 
| 
       75 
77 
     | 
    
         
             
                  end
         
     | 
| 
       76 
78 
     | 
    
         
             
                end
         
     | 
| 
       77 
79 
     | 
    
         | 
| 
      
 80 
     | 
    
         
            +
                def use_cache?
         
     | 
| 
      
 81 
     | 
    
         
            +
                  defined?(config.save_access_token) && defined?(config.get_access_token) && access_token_cache_key
         
     | 
| 
      
 82 
     | 
    
         
            +
                end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
       78 
84 
     | 
    
         
             
                def request_lwa_access_token
         
     | 
| 
       79 
85 
     | 
    
         
             
                  body = {
         
     | 
| 
       80 
86 
     | 
    
         
             
                    grant_type: "refresh_token",
         
     | 
    
        data/lib/muffin_man/version.rb
    CHANGED
    
    
    
        data/muffin_man.gemspec
    CHANGED
    
    | 
         @@ -20,6 +20,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
              spec.add_development_dependency "rspec", "~> 3.2"
         
     | 
| 
       22 
22 
     | 
    
         
             
              spec.add_development_dependency 'webmock', '~> 2.1'
         
     | 
| 
      
 23 
     | 
    
         
            +
              spec.add_development_dependency 'byebug'
         
     | 
| 
       23 
24 
     | 
    
         
             
              spec.add_development_dependency 'mock_redis', '>=0.14'
         
     | 
| 
       24 
25 
     | 
    
         
             
              spec.add_runtime_dependency 'typhoeus', '~> 1.0', '>= 1.0.1'
         
     | 
| 
       25 
26 
     | 
    
         
             
              spec.add_runtime_dependency 'aws-sigv4', '>= 1.1'
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: muffin_man
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.4.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Gavin
         
     | 
| 
         @@ -10,7 +10,7 @@ authors: 
     | 
|
| 
       10 
10 
     | 
    
         
             
            autorequire:
         
     | 
| 
       11 
11 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       12 
12 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       13 
     | 
    
         
            -
            date: 2022-05- 
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2022-05-03 00:00:00.000000000 Z
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies:
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       16 
16 
     | 
    
         
             
              name: rspec
         
     | 
| 
         @@ -40,6 +40,20 @@ dependencies: 
     | 
|
| 
       40 
40 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       41 
41 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       42 
42 
     | 
    
         
             
                    version: '2.1'
         
     | 
| 
      
 43 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 44 
     | 
    
         
            +
              name: byebug
         
     | 
| 
      
 45 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 46 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 47 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 48 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 49 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 50 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 51 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 52 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 53 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 54 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 55 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 56 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       43 
57 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       44 
58 
     | 
    
         
             
              name: mock_redis
         
     | 
| 
       45 
59 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -115,6 +129,7 @@ files: 
     | 
|
| 
       115 
129 
     | 
    
         
             
            - ".gitignore"
         
     | 
| 
       116 
130 
     | 
    
         
             
            - ".rspec"
         
     | 
| 
       117 
131 
     | 
    
         
             
            - ".rubocop.yml"
         
     | 
| 
      
 132 
     | 
    
         
            +
            - CHANGELOG.md
         
     | 
| 
       118 
133 
     | 
    
         
             
            - CODE_OF_CONDUCT.md
         
     | 
| 
       119 
134 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       120 
135 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
         @@ -151,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       151 
166 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       152 
167 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       153 
168 
     | 
    
         
             
            requirements: []
         
     | 
| 
       154 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
      
 169 
     | 
    
         
            +
            rubygems_version: 3.2.22
         
     | 
| 
       155 
170 
     | 
    
         
             
            signing_key:
         
     | 
| 
       156 
171 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       157 
172 
     | 
    
         
             
            summary: Amazon Selling Partner API client
         
     |