tangocard 6.2.0 → 7.0.2
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 +3 -2
- data/lib/tangocard.rb +15 -3
- data/lib/tangocard/brand.rb +0 -12
- data/lib/tangocard/exchange_rate.rb +0 -12
- data/lib/tangocard/raas.rb +3 -22
- data/lib/tangocard/version.rb +1 -1
- metadata +22 -7
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4460feb6c9829bf987ebcee0a5f3bd0b0f045eda
         | 
| 4 | 
            +
              data.tar.gz: 2e06c8a3d60c2ffd149b6e0312f5ea0934da3ec9
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 647a675699b4fec0423e3d174c28cc532994c2a924c252bab09e33455fb42d7a7b7013d02929cf7b9569a3fd8bcf2b5632c0aafcbe55d44b9e02b94b67e3c846
         | 
| 7 | 
            +
              data.tar.gz: a9a36089994b9fec78ba489315da6534fd14a32d85cdc8676fd6226a011559f5275acebc64ac5902da20fbd5522522f6c16e3522740aa5931e5daee0305800df
         | 
    
        data/README.md
    CHANGED
    
    | @@ -44,8 +44,9 @@ There are also optional configuration parameters: | |
| 44 44 | 
             
             * `default_brands` - An array of strings for the brands you want to retrieve with `Tangocard::Brand.default`. The strings should match the unique brand `description` fields exactly.
         | 
| 45 45 | 
             
             * `local_images` - An array of local image names/URIs that you want to display instead of the default Tango Card-provided `image_url`. `image_url` is sometimes blank, so this can be handy in those cases.
         | 
| 46 46 | 
             
             * `sku_blacklist` - Reward SKUs that are blacklisted, ie. should never be returned as a purchasable reward.
         | 
| 47 | 
            -
             * `use_cache` - Use cache for Tangocard::Brand queries, defaults to `true`.
         | 
| 48 | 
            -
             * ` | 
| 47 | 
            +
             * `use_cache` - Use cache for Tangocard::Brand queries, defaults to `true`. The cache can be refreshed by calling `Tangocard.warm_cache`
         | 
| 48 | 
            +
             * `cache` - Which cache to use, defaults to `ActiveSupport::Cache::MemoryStore`. Using an out-of-process cache e.g. hosted memcache will improve performance and stability.
         | 
| 49 | 
            +
             * `logger` - i.e. `Rails.logger`
         | 
| 49 50 |  | 
| 50 51 | 
             
            ## Getting Started
         | 
| 51 52 |  | 
    
        data/lib/tangocard.rb
    CHANGED
    
    | @@ -1,11 +1,17 @@ | |
| 1 1 | 
             
            require 'httparty'
         | 
| 2 2 | 
             
            require 'money'
         | 
| 3 3 | 
             
            require 'ostruct'
         | 
| 4 | 
            +
            require 'active_support'
         | 
| 5 | 
            +
            require 'active_support/cache/memory_store'
         | 
| 6 | 
            +
            require 'tangocard/version'
         | 
| 4 7 |  | 
| 5 8 | 
             
            module Tangocard
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              CACHE_PREFIX = "tangocard:#{VERSION}:"
         | 
| 11 | 
            +
             | 
| 6 12 | 
             
              class Configuration
         | 
| 7 13 | 
             
                attr_accessor :name, :key, :base_uri, :default_brands, :local_images, :sku_blacklist,
         | 
| 8 | 
            -
                              :use_cache, : | 
| 14 | 
            +
                              :use_cache, :cache, :logger
         | 
| 9 15 |  | 
| 10 16 | 
             
                def initialize
         | 
| 11 17 | 
             
                  self.name = nil
         | 
| @@ -15,7 +21,8 @@ module Tangocard | |
| 15 21 | 
             
                  self.local_images = {}
         | 
| 16 22 | 
             
                  self.sku_blacklist = []
         | 
| 17 23 | 
             
                  self.use_cache = true
         | 
| 18 | 
            -
                  self. | 
| 24 | 
            +
                  self.cache = ActiveSupport::Cache::MemoryStore.new
         | 
| 25 | 
            +
                  self.logger = Logger.new(STDOUT)
         | 
| 19 26 | 
             
                end
         | 
| 20 27 | 
             
              end
         | 
| 21 28 |  | 
| @@ -25,6 +32,12 @@ module Tangocard | |
| 25 32 |  | 
| 26 33 | 
             
              def self.configure
         | 
| 27 34 | 
             
                yield(configuration) if block_given?
         | 
| 35 | 
            +
                warm_cache if configuration.use_cache
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              def self.warm_cache
         | 
| 39 | 
            +
                configuration.cache.write("#{Tangocard::CACHE_PREFIX}rewards_index", Tangocard::Raas.rewards_index(use_cache: false))
         | 
| 40 | 
            +
                configuration.logger.info('Warmed Tangocard cache')
         | 
| 28 41 | 
             
              end
         | 
| 29 42 | 
             
            end
         | 
| 30 43 |  | 
| @@ -43,4 +56,3 @@ require 'tangocard/order_not_found_exception' | |
| 43 56 | 
             
            require 'tangocard/raas_exception'
         | 
| 44 57 | 
             
            require 'tangocard/reward'
         | 
| 45 58 | 
             
            require 'tangocard/exchange_rate'
         | 
| 46 | 
            -
             | 
    
        data/lib/tangocard/brand.rb
    CHANGED
    
    | @@ -1,18 +1,6 @@ | |
| 1 1 | 
             
            class Tangocard::Brand
         | 
| 2 2 | 
             
              attr_reader :description, :rewards
         | 
| 3 3 |  | 
| 4 | 
            -
              # Clear all cached responses. Next request for brand info will pull fresh from the Tango Card API.
         | 
| 5 | 
            -
              #
         | 
| 6 | 
            -
              # Example:
         | 
| 7 | 
            -
              #   >> Tangocard::Brand.clear_cache!
         | 
| 8 | 
            -
              #    => true
         | 
| 9 | 
            -
              #
         | 
| 10 | 
            -
              # Arguments:
         | 
| 11 | 
            -
              #   none
         | 
| 12 | 
            -
              def self.clear_cache!
         | 
| 13 | 
            -
                Tangocard::Raas.clear_cache!
         | 
| 14 | 
            -
              end
         | 
| 15 | 
            -
             | 
| 16 4 | 
             
              # Return an array of all brands.
         | 
| 17 5 | 
             
              #
         | 
| 18 6 | 
             
              # Example:
         | 
| @@ -1,18 +1,6 @@ | |
| 1 1 | 
             
            class Tangocard::ExchangeRate
         | 
| 2 2 | 
             
              attr_reader :currency_code, :rate
         | 
| 3 3 |  | 
| 4 | 
            -
              # Clear all cached responses. Next request for exchange rate info will pull fresh from the Tango Card API.
         | 
| 5 | 
            -
              #
         | 
| 6 | 
            -
              # Example:
         | 
| 7 | 
            -
              #   >> Tangocard::ExchangeRate.clear_cache!
         | 
| 8 | 
            -
              #    => true
         | 
| 9 | 
            -
              #
         | 
| 10 | 
            -
              # Arguments:
         | 
| 11 | 
            -
              #   none
         | 
| 12 | 
            -
              def self.clear_cache!
         | 
| 13 | 
            -
                Tangocard::Raas.clear_cache!
         | 
| 14 | 
            -
              end
         | 
| 15 | 
            -
             | 
| 16 4 | 
             
              # Return current currency exchange rate timestamp.
         | 
| 17 5 | 
             
              #
         | 
| 18 6 | 
             
              # Example:
         | 
    
        data/lib/tangocard/raas.rb
    CHANGED
    
    | @@ -1,8 +1,6 @@ | |
| 1 1 | 
             
            class Tangocard::Raas
         | 
| 2 2 | 
             
              include HTTParty
         | 
| 3 3 |  | 
| 4 | 
            -
              @@rewards_response_expires_at = 0
         | 
| 5 | 
            -
             | 
| 6 4 | 
             
              # Create a new account. Returns Tangocard::Response object.
         | 
| 7 5 | 
             
              #
         | 
| 8 6 | 
             
              # Example:
         | 
| @@ -71,13 +69,9 @@ class Tangocard::Raas | |
| 71 69 | 
             
              #
         | 
| 72 70 | 
             
              # Arguments:
         | 
| 73 71 | 
             
              #   none
         | 
| 74 | 
            -
              def self.rewards_index
         | 
| 75 | 
            -
                if Tangocard.configuration.use_cache
         | 
| 76 | 
            -
                   | 
| 77 | 
            -
             | 
| 78 | 
            -
                  @@rewards_response ||= Tangocard::Response.new(get_request('/rewards'))
         | 
| 79 | 
            -
                  @@rewards_response_expires_at = (Time.now.to_i + Tangocard.configuration.cache_ttl) if cache_expired?
         | 
| 80 | 
            -
                  @@rewards_response
         | 
| 72 | 
            +
              def self.rewards_index(use_cache: true)
         | 
| 73 | 
            +
                if Tangocard.configuration.use_cache && use_cache
         | 
| 74 | 
            +
                  Tangocard.configuration.cache.read("#{Tangocard::CACHE_PREFIX}rewards_index")
         | 
| 81 75 | 
             
                else
         | 
| 82 76 | 
             
                  Tangocard::Response.new(get_request('/rewards'))
         | 
| 83 77 | 
             
                end
         | 
| @@ -127,25 +121,12 @@ class Tangocard::Raas | |
| 127 121 | 
             
                Tangocard::Response.new(get_request("/orders#{query_string}"))
         | 
| 128 122 | 
             
              end
         | 
| 129 123 |  | 
| 130 | 
            -
              def self.clear_cache!
         | 
| 131 | 
            -
                @@rewards_response = nil
         | 
| 132 | 
            -
                @@rewards_response_expires_at = 0
         | 
| 133 | 
            -
              end
         | 
| 134 | 
            -
             | 
| 135 124 | 
             
              private
         | 
| 136 125 |  | 
| 137 126 | 
             
              def self.basic_auth_param
         | 
| 138 127 | 
             
                { basic_auth: { username: Tangocard.configuration.name, password: Tangocard.configuration.key } }
         | 
| 139 128 | 
             
              end
         | 
| 140 129 |  | 
| 141 | 
            -
              def self.use_cache_ttl?
         | 
| 142 | 
            -
                Tangocard.configuration.use_cache && Tangocard.configuration.cache_ttl > 0
         | 
| 143 | 
            -
              end
         | 
| 144 | 
            -
             | 
| 145 | 
            -
              def self.cache_expired?
         | 
| 146 | 
            -
                use_cache_ttl? && @@rewards_response_expires_at < Time.now.to_i
         | 
| 147 | 
            -
              end
         | 
| 148 | 
            -
             | 
| 149 130 | 
             
              def self.endpoint
         | 
| 150 131 | 
             
                "#{Tangocard.configuration.base_uri}/raas/v1.1"
         | 
| 151 132 | 
             
              end
         | 
    
        data/lib/tangocard/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: tangocard
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 7.0.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Raphael Crawford-Marks
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2016-12- | 
| 11 | 
            +
            date: 2016-12-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: httparty
         | 
| @@ -52,20 +52,34 @@ dependencies: | |
| 52 52 | 
             
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '0.7'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: activesupport
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - "~>"
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '4.2'
         | 
| 62 | 
            +
              type: :runtime
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - "~>"
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: '4.2'
         | 
| 55 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 70 | 
             
              name: rspec
         | 
| 57 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 72 | 
             
                requirements:
         | 
| 59 | 
            -
                - - " | 
| 73 | 
            +
                - - "~>"
         | 
| 60 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: ' | 
| 75 | 
            +
                    version: '3.5'
         | 
| 62 76 | 
             
              type: :development
         | 
| 63 77 | 
             
              prerelease: false
         | 
| 64 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 79 | 
             
                requirements:
         | 
| 66 | 
            -
                - - " | 
| 80 | 
            +
                - - "~>"
         | 
| 67 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: ' | 
| 82 | 
            +
                    version: '3.5'
         | 
| 69 83 | 
             
            description: |-
         | 
| 70 84 | 
             
              Tango Card provides a RaaS API for developers (https://www.tangocard.com/docs/raas-api/). This gem
         | 
| 71 85 | 
             
                                 provides commonsense Ruby objects to wrap the JSON endpoints of the RaaS API.
         | 
| @@ -96,7 +110,8 @@ files: | |
| 96 110 | 
             
            - lib/tangocard/reward.rb
         | 
| 97 111 | 
             
            - lib/tangocard/version.rb
         | 
| 98 112 | 
             
            homepage: http://bonus.ly
         | 
| 99 | 
            -
            licenses: | 
| 113 | 
            +
            licenses:
         | 
| 114 | 
            +
            - MIT
         | 
| 100 115 | 
             
            metadata: {}
         | 
| 101 116 | 
             
            post_install_message: 
         | 
| 102 117 | 
             
            rdoc_options: []
         |