hasoffers 0.1.2 → 0.1.4
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.
- data/.gitignore +2 -1
- data/CHANGELOG +7 -1
- data/Gemfile.lock +20 -0
- data/Rakefile +6 -0
- data/hasoffers.gemspec +4 -1
- data/lib/hasoffers/affiliate_billing.rb +13 -8
- data/lib/hasoffers/base.rb +12 -4
- data/lib/hasoffers/response.rb +1 -1
- data/lib/hasoffers/version.rb +1 -1
- data/test/affiliate_billing_test.rb +5 -6
- data/test/base_test.rb +10 -0
- data/test/conversion_test.rb +3 -1
- metadata +62 -41
    
        data/.gitignore
    CHANGED
    
    
    
        data/CHANGELOG
    CHANGED
    
    | @@ -1,4 +1,10 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            == Version 0.1.4
         | 
| 2 | 
            +
              * Create a class method to get and set the @@base_uri, with tests
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            == Version 0.1.3
         | 
| 5 | 
            +
            * Bug fix - it's possible for AffiliateBilling to return an array of nil, instead
         | 
| 6 | 
            +
              of an array of invoices.
         | 
| 7 | 
            +
            * Updated various unit tests to fix failing tests while HAS_OFFERS_LIVE is enabled.
         | 
| 2 8 |  | 
| 3 9 | 
             
            == Version 0.1.2
         | 
| 4 10 | 
             
            * Minor bug fix for running without the has_offers.yml config file
         | 
    
        data/Gemfile.lock
    ADDED
    
    
    
        data/Rakefile
    CHANGED
    
    
    
        data/hasoffers.gemspec
    CHANGED
    
    | @@ -8,7 +8,7 @@ Gem::Specification.new do |s| | |
| 8 8 | 
             
              s.platform    = Gem::Platform::RUBY
         | 
| 9 9 | 
             
              s.authors     = ["Luke Ludwig"]
         | 
| 10 10 | 
             
              s.email       = ["luke.ludwig@tstmedia.com"]
         | 
| 11 | 
            -
              s.homepage    = "https://github.com/ | 
| 11 | 
            +
              s.homepage    = "https://github.com/tstmedia/hasoffers"
         | 
| 12 12 | 
             
              s.summary     = %q{Implementation of the HasOffers API for affiliate advertising.}
         | 
| 13 13 | 
             
              s.description = %q{Implementation of the HasOffers API for affiliate advertising.}
         | 
| 14 14 |  | 
| @@ -18,4 +18,7 @@ Gem::Specification.new do |s| | |
| 18 18 | 
             
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         | 
| 19 19 | 
             
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         | 
| 20 20 | 
             
              s.require_paths = ["lib"]
         | 
| 21 | 
            +
              s.add_dependency 'crack'
         | 
| 22 | 
            +
              s.add_dependency 'yajl-ruby'
         | 
| 23 | 
            +
              s.add_development_dependency 'rake'
         | 
| 21 24 | 
             
            end
         | 
| @@ -11,14 +11,22 @@ module HasOffers | |
| 11 11 | 
             
                    get_request(Target, 'findInvoiceStats', params)
         | 
| 12 12 | 
             
                  end
         | 
| 13 13 |  | 
| 14 | 
            +
                  def simplify_response_data data
         | 
| 15 | 
            +
                    # Data is returned as a hash like this:
         | 
| 16 | 
            +
                    # {
         | 
| 17 | 
            +
                    #   "1" => {"AffiliateInvoice" => {<what we really want>}, ... },
         | 
| 18 | 
            +
                    #   "2" => {"AffiliateInvoice" => {<what we really want>}, ... }
         | 
| 19 | 
            +
                    # }
         | 
| 20 | 
            +
                    #
         | 
| 21 | 
            +
                    # This function will extract it out.
         | 
| 22 | 
            +
                    data.map { |id, invoice_data| invoice_data["AffiliateInvoice"] }
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
             | 
| 14 25 | 
             
                  def find_all_invoices(params)
         | 
| 15 26 | 
             
                    response = get_request(Target, 'findAllInvoices', params)
         | 
| 16 27 | 
             
                    if response.success?
         | 
| 17 28 | 
             
                      # strip out the clutter
         | 
| 18 | 
            -
                       | 
| 19 | 
            -
                        invoice[1].values.first
         | 
| 20 | 
            -
                      end
         | 
| 21 | 
            -
                      response.set_data data
         | 
| 29 | 
            +
                      response.set_data simplify_response_data(response.data)
         | 
| 22 30 | 
             
                    end
         | 
| 23 31 | 
             
                    response
         | 
| 24 32 | 
             
                  end
         | 
| @@ -28,10 +36,7 @@ module HasOffers | |
| 28 36 | 
             
                    response = get_request(Target, 'findAllInvoicesByIds', params)
         | 
| 29 37 | 
             
                    if response.success?
         | 
| 30 38 | 
             
                      # strip out the clutter
         | 
| 31 | 
            -
                       | 
| 32 | 
            -
                        invoice[1].values.first
         | 
| 33 | 
            -
                      end
         | 
| 34 | 
            -
                      response.set_data data
         | 
| 39 | 
            +
                      response.set_data simplify_response_data(response.data)
         | 
| 35 40 | 
             
                    end
         | 
| 36 41 | 
             
                    response
         | 
| 37 42 | 
             
                  end
         | 
    
        data/lib/hasoffers/base.rb
    CHANGED
    
    | @@ -3,12 +3,20 @@ module HasOffers | |
| 3 3 |  | 
| 4 4 | 
             
              class Base
         | 
| 5 5 |  | 
| 6 | 
            -
                 | 
| 6 | 
            +
                @@base_uri = 'https://api.hasoffers.com/Api'
         | 
| 7 7 | 
             
                @@api_mode = ((defined?(Rails) and Rails.env.production?) or ENV['HAS_OFFERS_LIVE'] == '1') ? :live : :test
         | 
| 8 8 | 
             
                @@default_params = nil
         | 
| 9 9 |  | 
| 10 10 | 
             
                class << self
         | 
| 11 11 |  | 
| 12 | 
            +
                  def base_uri=(uri)
         | 
| 13 | 
            +
                    @@base_uri = uri
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def base_uri
         | 
| 17 | 
            +
                    @@base_uri
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 12 20 | 
             
                  def initialize_credentials
         | 
| 13 21 | 
             
                    config_file = ENV['HAS_OFFERS_CONFIG_FILE'] || "config/has_offers.yml"
         | 
| 14 22 | 
             
                    if File.exists?(config_file)
         | 
| @@ -77,12 +85,12 @@ module HasOffers | |
| 77 85 | 
             
                    data = build_request_params(target, method, params)
         | 
| 78 86 | 
             
                    if live?
         | 
| 79 87 | 
             
                      if http_method == :post
         | 
| 80 | 
            -
                        uri = URI.parse  | 
| 88 | 
            +
                        uri = URI.parse base_uri
         | 
| 81 89 | 
             
                        http = new_http uri
         | 
| 82 90 | 
             
                        raw_request = Net::HTTP::Post.new(uri.request_uri)
         | 
| 83 91 | 
             
                        raw_request.body = query_string data
         | 
| 84 92 | 
             
                      else # assume get
         | 
| 85 | 
            -
                        uri = URI.parse("#{ | 
| 93 | 
            +
                        uri = URI.parse("#{base_uri}?#{query_string(data)}")
         | 
| 86 94 | 
             
                        http = new_http uri
         | 
| 87 95 | 
             
                        raw_request = Net::HTTP::Get.new(uri.request_uri)
         | 
| 88 96 | 
             
                      end
         | 
| @@ -108,4 +116,4 @@ module HasOffers | |
| 108 116 |  | 
| 109 117 | 
             
              end
         | 
| 110 118 |  | 
| 111 | 
            -
            end
         | 
| 119 | 
            +
            end
         | 
    
        data/lib/hasoffers/response.rb
    CHANGED
    
    | @@ -80,7 +80,7 @@ module HasOffers | |
| 80 80 | 
             
                protected
         | 
| 81 81 |  | 
| 82 82 | 
             
                def paginated_response?
         | 
| 83 | 
            -
                  @body['response']['data'] and @body['response']['data'].is_a?(Hash) and @body['response']['data'] | 
| 83 | 
            +
                  @body['response']['data'] and @body['response']['data'].is_a?(Hash) and @body['response']['data'].has_key?('pageCount')
         | 
| 84 84 | 
             
                end
         | 
| 85 85 |  | 
| 86 86 | 
             
              end
         | 
    
        data/lib/hasoffers/version.rb
    CHANGED
    
    
| @@ -10,23 +10,22 @@ class AffiliateBillingTest < Test::Unit::TestCase | |
| 10 10 | 
             
              def test_find_all_invoices
         | 
| 11 11 | 
             
                response = HasOffers::AffiliateBilling.find_all_invoices({})
         | 
| 12 12 | 
             
                assert_success response
         | 
| 13 | 
            -
                assert response.data.length > 0, "No invoices were returned."
         | 
| 13 | 
            +
                assert response.data.compact.length > 0, "No invoices were returned."
         | 
| 14 14 | 
             
              end
         | 
| 15 15 |  | 
| 16 16 | 
             
              def test_find_all_invoices_filtered_by_affiliate
         | 
| 17 17 | 
             
                response = HasOffers::AffiliateBilling.find_all_invoices(
         | 
| 18 | 
            -
                  'filters' => ['AffiliateInvoice.affiliate_id' => ' | 
| 18 | 
            +
                  'filters' => ['AffiliateInvoice.affiliate_id' => '1'],
         | 
| 19 19 | 
             
                  'fields' => ['is_paid', 'impressions', 'clicks', 'conversions', 'amount']
         | 
| 20 20 | 
             
                )
         | 
| 21 21 | 
             
                assert_success response
         | 
| 22 | 
            -
                assert response.data.length > 0, "No invoices were returned."
         | 
| 22 | 
            +
                assert response.data.compact.length > 0, "No invoices were returned."
         | 
| 23 23 | 
             
              end
         | 
| 24 24 |  | 
| 25 25 | 
             
              def test_find_all_invoices_by_ids
         | 
| 26 | 
            -
                response = HasOffers::AffiliateBilling.find_all_invoices_by_ids([7,11]
         | 
| 27 | 
            -
                )
         | 
| 26 | 
            +
                response = HasOffers::AffiliateBilling.find_all_invoices_by_ids([7,11])
         | 
| 28 27 | 
             
                assert_success response
         | 
| 29 | 
            -
                assert response.data.length > 0, "No invoices were returned."
         | 
| 28 | 
            +
                assert response.data.compact.length > 0, "No invoices were returned."
         | 
| 30 29 | 
             
              end
         | 
| 31 30 |  | 
| 32 31 | 
             
              def good_params
         | 
    
        data/test/base_test.rb
    ADDED
    
    
    
        data/test/conversion_test.rb
    CHANGED
    
    | @@ -12,7 +12,9 @@ class ConversionTest < Test::Unit::TestCase | |
| 12 12 | 
             
              end
         | 
| 13 13 |  | 
| 14 14 | 
             
              def test_update
         | 
| 15 | 
            -
                response = HasOffers::Conversion. | 
| 15 | 
            +
                response = HasOffers::Conversion.create(good_params)
         | 
| 16 | 
            +
                assert_success response
         | 
| 17 | 
            +
                response = HasOffers::Conversion.update(response.data, {'payout' => '11.50', 'revenue' => '6.75'})
         | 
| 16 18 | 
             
                assert_success response
         | 
| 17 19 | 
             
              end
         | 
| 18 20 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,37 +1,60 @@ | |
| 1 | 
            -
            --- !ruby/object:Gem::Specification | 
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: hasoffers
         | 
| 3 | 
            -
            version: !ruby/object:Gem::Version | 
| 4 | 
            -
               | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.1.4
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 | 
            -
              segments: 
         | 
| 7 | 
            -
              - 0
         | 
| 8 | 
            -
              - 1
         | 
| 9 | 
            -
              - 2
         | 
| 10 | 
            -
              version: 0.1.2
         | 
| 11 6 | 
             
            platform: ruby
         | 
| 12 | 
            -
            authors: | 
| 7 | 
            +
            authors:
         | 
| 13 8 | 
             
            - Luke Ludwig
         | 
| 14 9 | 
             
            autorequire: 
         | 
| 15 10 | 
             
            bindir: bin
         | 
| 16 11 | 
             
            cert_chain: []
         | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 12 | 
            +
            date: 2012-02-13 00:00:00.000000000 Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 15 | 
            +
              name: crack
         | 
| 16 | 
            +
              requirement: &70315768875080 !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
                none: false
         | 
| 18 | 
            +
                requirements:
         | 
| 19 | 
            +
                - - ! '>='
         | 
| 20 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 21 | 
            +
                    version: '0'
         | 
| 22 | 
            +
              type: :runtime
         | 
| 23 | 
            +
              prerelease: false
         | 
| 24 | 
            +
              version_requirements: *70315768875080
         | 
| 25 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 26 | 
            +
              name: yajl-ruby
         | 
| 27 | 
            +
              requirement: &70315768874660 !ruby/object:Gem::Requirement
         | 
| 28 | 
            +
                none: false
         | 
| 29 | 
            +
                requirements:
         | 
| 30 | 
            +
                - - ! '>='
         | 
| 31 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 32 | 
            +
                    version: '0'
         | 
| 33 | 
            +
              type: :runtime
         | 
| 34 | 
            +
              prerelease: false
         | 
| 35 | 
            +
              version_requirements: *70315768874660
         | 
| 36 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 37 | 
            +
              name: rake
         | 
| 38 | 
            +
              requirement: &70315768874240 !ruby/object:Gem::Requirement
         | 
| 39 | 
            +
                none: false
         | 
| 40 | 
            +
                requirements:
         | 
| 41 | 
            +
                - - ! '>='
         | 
| 42 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 43 | 
            +
                    version: '0'
         | 
| 44 | 
            +
              type: :development
         | 
| 45 | 
            +
              prerelease: false
         | 
| 46 | 
            +
              version_requirements: *70315768874240
         | 
| 22 47 | 
             
            description: Implementation of the HasOffers API for affiliate advertising.
         | 
| 23 | 
            -
            email: | 
| 48 | 
            +
            email:
         | 
| 24 49 | 
             
            - luke.ludwig@tstmedia.com
         | 
| 25 50 | 
             
            executables: []
         | 
| 26 | 
            -
             | 
| 27 51 | 
             
            extensions: []
         | 
| 28 | 
            -
             | 
| 29 52 | 
             
            extra_rdoc_files: []
         | 
| 30 | 
            -
             | 
| 31 | 
            -
            files: 
         | 
| 53 | 
            +
            files:
         | 
| 32 54 | 
             
            - .gitignore
         | 
| 33 55 | 
             
            - CHANGELOG
         | 
| 34 56 | 
             
            - Gemfile
         | 
| 57 | 
            +
            - Gemfile.lock
         | 
| 35 58 | 
             
            - README.rdoc
         | 
| 36 59 | 
             
            - Rakefile
         | 
| 37 60 | 
             
            - config/has_offers.yml
         | 
| @@ -51,48 +74,46 @@ files: | |
| 51 74 | 
             
            - test/advertiser_test.rb
         | 
| 52 75 | 
             
            - test/affiliate_billing_test.rb
         | 
| 53 76 | 
             
            - test/affiliate_test.rb
         | 
| 77 | 
            +
            - test/base_test.rb
         | 
| 54 78 | 
             
            - test/conversion_test.rb
         | 
| 55 79 | 
             
            - test/offer_test.rb
         | 
| 56 80 | 
             
            - test/report_test.rb
         | 
| 57 81 | 
             
            - test/test_helper.rb
         | 
| 58 | 
            -
             | 
| 59 | 
            -
            homepage: https://github.com/ngin/hasoffers
         | 
| 82 | 
            +
            homepage: https://github.com/tstmedia/hasoffers
         | 
| 60 83 | 
             
            licenses: []
         | 
| 61 | 
            -
             | 
| 62 84 | 
             
            post_install_message: 
         | 
| 63 85 | 
             
            rdoc_options: []
         | 
| 64 | 
            -
             | 
| 65 | 
            -
            require_paths: 
         | 
| 86 | 
            +
            require_paths:
         | 
| 66 87 | 
             
            - lib
         | 
| 67 | 
            -
            required_ruby_version: !ruby/object:Gem::Requirement | 
| 88 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 68 89 | 
             
              none: false
         | 
| 69 | 
            -
              requirements: | 
| 70 | 
            -
              - -  | 
| 71 | 
            -
                - !ruby/object:Gem::Version | 
| 72 | 
            -
                   | 
| 73 | 
            -
                  segments: | 
| 90 | 
            +
              requirements:
         | 
| 91 | 
            +
              - - ! '>='
         | 
| 92 | 
            +
                - !ruby/object:Gem::Version
         | 
| 93 | 
            +
                  version: '0'
         | 
| 94 | 
            +
                  segments:
         | 
| 74 95 | 
             
                  - 0
         | 
| 75 | 
            -
                   | 
| 76 | 
            -
            required_rubygems_version: !ruby/object:Gem::Requirement | 
| 96 | 
            +
                  hash: -3016471400862680151
         | 
| 97 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 77 98 | 
             
              none: false
         | 
| 78 | 
            -
              requirements: | 
| 79 | 
            -
              - -  | 
| 80 | 
            -
                - !ruby/object:Gem::Version | 
| 81 | 
            -
                   | 
| 82 | 
            -
                  segments: | 
| 99 | 
            +
              requirements:
         | 
| 100 | 
            +
              - - ! '>='
         | 
| 101 | 
            +
                - !ruby/object:Gem::Version
         | 
| 102 | 
            +
                  version: '0'
         | 
| 103 | 
            +
                  segments:
         | 
| 83 104 | 
             
                  - 0
         | 
| 84 | 
            -
                   | 
| 105 | 
            +
                  hash: -3016471400862680151
         | 
| 85 106 | 
             
            requirements: []
         | 
| 86 | 
            -
             | 
| 87 107 | 
             
            rubyforge_project: hasoffers
         | 
| 88 | 
            -
            rubygems_version: 1. | 
| 108 | 
            +
            rubygems_version: 1.8.13
         | 
| 89 109 | 
             
            signing_key: 
         | 
| 90 110 | 
             
            specification_version: 3
         | 
| 91 111 | 
             
            summary: Implementation of the HasOffers API for affiliate advertising.
         | 
| 92 | 
            -
            test_files: | 
| 112 | 
            +
            test_files:
         | 
| 93 113 | 
             
            - test/advertiser_test.rb
         | 
| 94 114 | 
             
            - test/affiliate_billing_test.rb
         | 
| 95 115 | 
             
            - test/affiliate_test.rb
         | 
| 116 | 
            +
            - test/base_test.rb
         | 
| 96 117 | 
             
            - test/conversion_test.rb
         | 
| 97 118 | 
             
            - test/offer_test.rb
         | 
| 98 119 | 
             
            - test/report_test.rb
         |