sailthru-client 4.0.3 → 4.0.6
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/lib/sailthru-client.rb +1 -0
- data/lib/sailthru/client.rb +35 -6
- data/lib/sailthru/version.rb +1 -1
- data/sailthru-client.gemspec +1 -1
- data/test/fixtures/template_save_test_vars.json +18 -0
- data/test/sailthru/receive_post_callback_test.rb +13 -0
- data/test/sailthru/stats_test.rb +1 -11
- data/test/sailthru/template_test.rb +9 -0
- metadata +22 -19
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 0761242226c7a009220ba1b1f7f5510e4549465c
         | 
| 4 | 
            +
              data.tar.gz: 5da88ae0c079cf3e7cd06ad694e11d599750a30e
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 6f8baac4566faa4b74317dc75d7bd9139b864af1f99cea7a8e5958ff207c4f998b07de0f06866a2779f1774446ef3d3b461f3b324893820587836ed7a6a7ecc6
         | 
| 7 | 
            +
              data.tar.gz: 6640ca3ca033a94d6428eb160c7f68c705654ea550e4a922d72c65abe57c6876daec9f35a310dc0396935ee49e474d5cc1f7b2db27a474d31d13d1181ef0657e
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            require 'sailthru'
         | 
    
        data/lib/sailthru/client.rb
    CHANGED
    
    | @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            require 'sailthru/helpers'
         | 
| 2 | 
            +
            require 'sailthru/version'
         | 
| 2 3 |  | 
| 3 4 | 
             
            require 'net/http'
         | 
| 4 5 | 
             
            require 'net/http/post/multipart'
         | 
| @@ -306,13 +307,35 @@ module Sailthru | |
| 306 307 |  | 
| 307 308 | 
             
                    sig = params.delete(:sig)
         | 
| 308 309 | 
             
                    params.delete(:controller)
         | 
| 309 | 
            -
                     | 
| 310 | 
            -
                    return true
         | 
| 310 | 
            +
                    sig == get_signature_hash(params, @secret)
         | 
| 311 311 | 
             
                  else
         | 
| 312 | 
            -
                     | 
| 312 | 
            +
                    false
         | 
| 313 | 
            +
                  end
         | 
| 314 | 
            +
                end
         | 
| 315 | 
            +
             | 
| 316 | 
            +
                # List Postbacks must be enabled by Sailthru
         | 
| 317 | 
            +
                # Contact your account manager or contact support to have this enabled
         | 
| 318 | 
            +
                #
         | 
| 319 | 
            +
                # params:
         | 
| 320 | 
            +
                #   params, Hash
         | 
| 321 | 
            +
                #   request, String
         | 
| 322 | 
            +
                # returns:
         | 
| 323 | 
            +
                #   TrueClass or FalseClass, Returns true if the incoming request is an authenticated list post.
         | 
| 324 | 
            +
                def receive_list_post(params, request)
         | 
| 325 | 
            +
                  if request.post?
         | 
| 326 | 
            +
                    [:action, :email, :sig].each { |key| return false unless params.has_key?(key) }
         | 
| 327 | 
            +
             | 
| 328 | 
            +
                    return false unless params[:action] == 'update'
         | 
| 329 | 
            +
             | 
| 330 | 
            +
                    sig = params.delete(:sig)
         | 
| 331 | 
            +
                    params.delete(:controller)
         | 
| 332 | 
            +
                    sig == get_signature_hash(params, @secret)
         | 
| 333 | 
            +
                  else
         | 
| 334 | 
            +
                    false
         | 
| 313 335 | 
             
                  end
         | 
| 314 336 | 
             
                end
         | 
| 315 337 |  | 
| 338 | 
            +
             | 
| 316 339 | 
             
                # params:
         | 
| 317 340 | 
             
                #   params, Hash
         | 
| 318 341 | 
             
                #   request, String
         | 
| @@ -326,10 +349,9 @@ module Sailthru | |
| 326 349 |  | 
| 327 350 | 
             
                    sig = params.delete(:sig)
         | 
| 328 351 | 
             
                    params.delete(:controller)
         | 
| 329 | 
            -
                     | 
| 330 | 
            -
                    return true
         | 
| 352 | 
            +
                    sig == get_signature_hash(params, @secret)
         | 
| 331 353 | 
             
                  else
         | 
| 332 | 
            -
                     | 
| 354 | 
            +
                    false
         | 
| 333 355 | 
             
                  end
         | 
| 334 356 | 
             
                end
         | 
| 335 357 |  | 
| @@ -583,6 +605,13 @@ module Sailthru | |
| 583 605 | 
             
                  process_job(:update, data, report_email, postback_url, 'file')
         | 
| 584 606 | 
             
                end
         | 
| 585 607 |  | 
| 608 | 
            +
                # implementation for purchase import job using file upload
         | 
| 609 | 
            +
                def process_purchase_import_job_from_file(file_path, report_email = nil, postback_url = nil, options = {})
         | 
| 610 | 
            +
                  data = options
         | 
| 611 | 
            +
                  data['file'] = file_path
         | 
| 612 | 
            +
                  process_job(:purchase_import, data, report_email, postback_url, 'file')
         | 
| 613 | 
            +
                end
         | 
| 614 | 
            +
             | 
| 586 615 | 
             
                # implementation for snapshot job
         | 
| 587 616 | 
             
                def process_snapshot_job(query = {}, report_email = nil, postback_url = nil, options = {})
         | 
| 588 617 | 
             
                  data = options
         | 
    
        data/lib/sailthru/version.rb
    CHANGED
    
    
    
        data/sailthru-client.gemspec
    CHANGED
    
    | @@ -15,7 +15,7 @@ Gem::Specification.new do |s| | |
| 15 15 | 
             
              s.homepage = "http://docs.sailthru.com"
         | 
| 16 16 | 
             
              s.rdoc_options = ["--main", "README.md"]
         | 
| 17 17 | 
             
              s.require_paths = ["lib"]
         | 
| 18 | 
            -
              s.summary = "A simple client library to remotely access the Sailthru REST API."
         | 
| 18 | 
            +
              s.summary = "A simple client library to remotely access the Sailthru REST API. "
         | 
| 19 19 | 
             
              s.license = "MIT"
         | 
| 20 20 |  | 
| 21 21 | 
             
              s.add_dependency(%q<json>, [">= 0"])
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            {
         | 
| 2 | 
            +
              "name":"my-template-test-vars",
         | 
| 3 | 
            +
              "sample":"",
         | 
| 4 | 
            +
              "verify_post_url":"",
         | 
| 5 | 
            +
              "is_google_analytics":false,
         | 
| 6 | 
            +
              "is_unviewable":false,
         | 
| 7 | 
            +
              "error_url":"",
         | 
| 8 | 
            +
              "subject":"Hello world",
         | 
| 9 | 
            +
              "content_html":"Hi {firstName}<p/>{beacon}<p><small>If you believe this has been sent to you in error, please safely <a href=\"{optout_confirm_url}\">unsubscribe</a>.</small></p>",
         | 
| 10 | 
            +
              "is_disabled":false,
         | 
| 11 | 
            +
              "replyto_email":"",
         | 
| 12 | 
            +
              "is_link_tracking":true,
         | 
| 13 | 
            +
              "is_invite":false,
         | 
| 14 | 
            +
              "success_url":"",
         | 
| 15 | 
            +
              "content_sms":"",
         | 
| 16 | 
            +
              "content_text":"",
         | 
| 17 | 
            +
              "test_vars" : "{\"firstName\":\"Lindsay\"}"
         | 
| 18 | 
            +
            }
         | 
| @@ -39,6 +39,19 @@ class ReceivePostCallbackTest < Minitest::Test | |
| 39 39 | 
             
                  assert @sailthru_client.receive_optout_post(params, mock(:post? => true))
         | 
| 40 40 | 
             
                end
         | 
| 41 41 |  | 
| 42 | 
            +
                it "can validate a list callback" do
         | 
| 43 | 
            +
                  params = {
         | 
| 44 | 
            +
                    :email => 'ian@sailthru.com',
         | 
| 45 | 
            +
                    :page => 'optout',
         | 
| 46 | 
            +
                    :optout_email => 'none',
         | 
| 47 | 
            +
                    :lists => {'All Users' => '0'},
         | 
| 48 | 
            +
                    :action => 'update',
         | 
| 49 | 
            +
                    :api_key => @api_key
         | 
| 50 | 
            +
                  }
         | 
| 51 | 
            +
                  params[:sig] = get_signature_hash(params, @secret)
         | 
| 52 | 
            +
                  assert @sailthru_client.receive_list_post(params, mock(:post? => true))
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
             | 
| 42 55 | 
             
                it "can validate a hardbounce callback" do
         | 
| 43 56 | 
             
                  params = {
         | 
| 44 57 | 
             
                    :email => 'ian@sailthru.com',
         | 
    
        data/test/sailthru/stats_test.rb
    CHANGED
    
    | @@ -15,21 +15,11 @@ class StatsTest < Minitest::Test | |
| 15 15 | 
             
                  params = {'stat' => stat_field}
         | 
| 16 16 | 
             
                  query_string = create_json_payload(@api_key, @secret, params)
         | 
| 17 17 | 
             
                  stub_get(@api_call_url + '?' + query_string, 'stat_get_valid.json')
         | 
| 18 | 
            -
                  response = @sailthru_client. | 
| 18 | 
            +
                  response = @sailthru_client.stats_list()
         | 
| 19 19 | 
             
                  assert_nil response['error']
         | 
| 20 20 | 
             
                  assert_nil response['errormsg']
         | 
| 21 21 | 
             
                end
         | 
| 22 22 |  | 
| 23 | 
            -
                it "cannot get information about given field when it's invalid" do
         | 
| 24 | 
            -
                  stat_field = 'invalid_field'
         | 
| 25 | 
            -
                  params = {'stat' => stat_field}
         | 
| 26 | 
            -
                  query_string = create_json_payload(@api_key, @secret, params)
         | 
| 27 | 
            -
                  stub_get(@api_call_url + '?' + query_string, 'stat_get_invalid.json')
         | 
| 28 | 
            -
                  response = @sailthru_client.get_stats(stat_field)
         | 
| 29 | 
            -
                  refute_nil response['error']
         | 
| 30 | 
            -
                  refute_nil response['errormsg']
         | 
| 31 | 
            -
                end
         | 
| 32 | 
            -
             | 
| 33 23 | 
             
                it "can get stats list data when list and date are not null" do
         | 
| 34 24 | 
             
                  params = {'stat' => 'list'}
         | 
| 35 25 | 
             
                  query_string = create_json_payload(@api_key, @secret, params)
         | 
| @@ -39,6 +39,15 @@ class TemplateTest < Minitest::Test | |
| 39 39 | 
             
                  assert_equal from_name, response['from_name']
         | 
| 40 40 | 
             
                end
         | 
| 41 41 |  | 
| 42 | 
            +
                it "can save template with test_vars" do
         | 
| 43 | 
            +
                  valid_template_name = 'my-template-test-vars'
         | 
| 44 | 
            +
                  valid_test_vars = "{\"firstName\":\"Lindsay\"}"
         | 
| 45 | 
            +
                  stub_post(@api_call_url, 'template_save_test_vars.json')
         | 
| 46 | 
            +
                  response = @sailthru_client.save_template(valid_template_name, {'test_vars'=> valid_test_vars})
         | 
| 47 | 
            +
                  assert_equal valid_template_name, response['name']
         | 
| 48 | 
            +
                  assert_equal valid_test_vars, response['test_vars']
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
             | 
| 42 51 | 
             
                it "can delete a template with valid template name" do
         | 
| 43 52 | 
             
                  template_name = 'my-template'
         | 
| 44 53 | 
             
                  params = {'template' => template_name}
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sailthru-client
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 4.0. | 
| 4 | 
            +
              version: 4.0.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Prajwal Tuladhar
         | 
| @@ -10,90 +10,90 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2015- | 
| 13 | 
            +
            date: 2015-12-14 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: json
         | 
| 17 17 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 18 18 | 
             
                requirements:
         | 
| 19 | 
            -
                - -  | 
| 19 | 
            +
                - - ">="
         | 
| 20 20 | 
             
                  - !ruby/object:Gem::Version
         | 
| 21 21 | 
             
                    version: '0'
         | 
| 22 22 | 
             
              type: :runtime
         | 
| 23 23 | 
             
              prerelease: false
         | 
| 24 24 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 25 25 | 
             
                requirements:
         | 
| 26 | 
            -
                - -  | 
| 26 | 
            +
                - - ">="
         | 
| 27 27 | 
             
                  - !ruby/object:Gem::Version
         | 
| 28 28 | 
             
                    version: '0'
         | 
| 29 29 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 30 30 | 
             
              name: multipart-post
         | 
| 31 31 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 32 32 | 
             
                requirements:
         | 
| 33 | 
            -
                - -  | 
| 33 | 
            +
                - - ">="
         | 
| 34 34 | 
             
                  - !ruby/object:Gem::Version
         | 
| 35 35 | 
             
                    version: '0'
         | 
| 36 36 | 
             
              type: :runtime
         | 
| 37 37 | 
             
              prerelease: false
         | 
| 38 38 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 39 39 | 
             
                requirements:
         | 
| 40 | 
            -
                - -  | 
| 40 | 
            +
                - - ">="
         | 
| 41 41 | 
             
                  - !ruby/object:Gem::Version
         | 
| 42 42 | 
             
                    version: '0'
         | 
| 43 43 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 44 44 | 
             
              name: rake
         | 
| 45 45 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 46 46 | 
             
                requirements:
         | 
| 47 | 
            -
                - -  | 
| 47 | 
            +
                - - ">="
         | 
| 48 48 | 
             
                  - !ruby/object:Gem::Version
         | 
| 49 49 | 
             
                    version: '0'
         | 
| 50 50 | 
             
              type: :development
         | 
| 51 51 | 
             
              prerelease: false
         | 
| 52 52 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 53 53 | 
             
                requirements:
         | 
| 54 | 
            -
                - -  | 
| 54 | 
            +
                - - ">="
         | 
| 55 55 | 
             
                  - !ruby/object:Gem::Version
         | 
| 56 56 | 
             
                    version: '0'
         | 
| 57 57 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 58 58 | 
             
              name: fakeweb
         | 
| 59 59 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 60 60 | 
             
                requirements:
         | 
| 61 | 
            -
                - -  | 
| 61 | 
            +
                - - ">="
         | 
| 62 62 | 
             
                  - !ruby/object:Gem::Version
         | 
| 63 63 | 
             
                    version: '0'
         | 
| 64 64 | 
             
              type: :development
         | 
| 65 65 | 
             
              prerelease: false
         | 
| 66 66 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 67 67 | 
             
                requirements:
         | 
| 68 | 
            -
                - -  | 
| 68 | 
            +
                - - ">="
         | 
| 69 69 | 
             
                  - !ruby/object:Gem::Version
         | 
| 70 70 | 
             
                    version: '0'
         | 
| 71 71 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 72 72 | 
             
              name: minitest
         | 
| 73 73 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 74 74 | 
             
                requirements:
         | 
| 75 | 
            -
                - -  | 
| 75 | 
            +
                - - ">="
         | 
| 76 76 | 
             
                  - !ruby/object:Gem::Version
         | 
| 77 77 | 
             
                    version: '5'
         | 
| 78 78 | 
             
              type: :development
         | 
| 79 79 | 
             
              prerelease: false
         | 
| 80 80 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 81 81 | 
             
                requirements:
         | 
| 82 | 
            -
                - -  | 
| 82 | 
            +
                - - ">="
         | 
| 83 83 | 
             
                  - !ruby/object:Gem::Version
         | 
| 84 84 | 
             
                    version: '5'
         | 
| 85 85 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 86 86 | 
             
              name: mocha
         | 
| 87 87 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 88 88 | 
             
                requirements:
         | 
| 89 | 
            -
                - -  | 
| 89 | 
            +
                - - ">="
         | 
| 90 90 | 
             
                  - !ruby/object:Gem::Version
         | 
| 91 91 | 
             
                    version: '0'
         | 
| 92 92 | 
             
              type: :development
         | 
| 93 93 | 
             
              prerelease: false
         | 
| 94 94 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 95 95 | 
             
                requirements:
         | 
| 96 | 
            -
                - -  | 
| 96 | 
            +
                - - ">="
         | 
| 97 97 | 
             
                  - !ruby/object:Gem::Version
         | 
| 98 98 | 
             
                    version: '0'
         | 
| 99 99 | 
             
            description: 
         | 
| @@ -103,12 +103,13 @@ extensions: [] | |
| 103 103 | 
             
            extra_rdoc_files:
         | 
| 104 104 | 
             
            - README.md
         | 
| 105 105 | 
             
            files:
         | 
| 106 | 
            -
            - .gitignore
         | 
| 106 | 
            +
            - ".gitignore"
         | 
| 107 107 | 
             
            - CHANGELOG.md
         | 
| 108 108 | 
             
            - Gemfile
         | 
| 109 109 | 
             
            - MIT-LICENSE
         | 
| 110 110 | 
             
            - README.md
         | 
| 111 111 | 
             
            - Rakefile
         | 
| 112 | 
            +
            - lib/sailthru-client.rb
         | 
| 112 113 | 
             
            - lib/sailthru.rb
         | 
| 113 114 | 
             
            - lib/sailthru/client.rb
         | 
| 114 115 | 
             
            - lib/sailthru/helpers.rb
         | 
| @@ -150,6 +151,7 @@ files: | |
| 150 151 | 
             
            - test/fixtures/template_delete_valid.json
         | 
| 151 152 | 
             
            - test/fixtures/template_invalid_get.json
         | 
| 152 153 | 
             
            - test/fixtures/template_save.json
         | 
| 154 | 
            +
            - test/fixtures/template_save_test_vars.json
         | 
| 153 155 | 
             
            - test/fixtures/template_valid_get.json
         | 
| 154 156 | 
             
            - test/fixtures/user_update_post_valid.json
         | 
| 155 157 | 
             
            - test/fixtures/user_update_valid.json
         | 
| @@ -172,23 +174,23 @@ licenses: | |
| 172 174 | 
             
            metadata: {}
         | 
| 173 175 | 
             
            post_install_message: 
         | 
| 174 176 | 
             
            rdoc_options:
         | 
| 175 | 
            -
            - --main
         | 
| 177 | 
            +
            - "--main"
         | 
| 176 178 | 
             
            - README.md
         | 
| 177 179 | 
             
            require_paths:
         | 
| 178 180 | 
             
            - lib
         | 
| 179 181 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 180 182 | 
             
              requirements:
         | 
| 181 | 
            -
              - -  | 
| 183 | 
            +
              - - ">="
         | 
| 182 184 | 
             
                - !ruby/object:Gem::Version
         | 
| 183 185 | 
             
                  version: '0'
         | 
| 184 186 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 185 187 | 
             
              requirements:
         | 
| 186 | 
            -
              - -  | 
| 188 | 
            +
              - - ">="
         | 
| 187 189 | 
             
                - !ruby/object:Gem::Version
         | 
| 188 190 | 
             
                  version: '0'
         | 
| 189 191 | 
             
            requirements: []
         | 
| 190 192 | 
             
            rubyforge_project: 
         | 
| 191 | 
            -
            rubygems_version: 2. | 
| 193 | 
            +
            rubygems_version: 2.4.6
         | 
| 192 194 | 
             
            signing_key: 
         | 
| 193 195 | 
             
            specification_version: 4
         | 
| 194 196 | 
             
            summary: A simple client library to remotely access the Sailthru REST API.
         | 
| @@ -229,6 +231,7 @@ test_files: | |
| 229 231 | 
             
            - test/fixtures/template_delete_valid.json
         | 
| 230 232 | 
             
            - test/fixtures/template_invalid_get.json
         | 
| 231 233 | 
             
            - test/fixtures/template_save.json
         | 
| 234 | 
            +
            - test/fixtures/template_save_test_vars.json
         | 
| 232 235 | 
             
            - test/fixtures/template_valid_get.json
         | 
| 233 236 | 
             
            - test/fixtures/user_update_post_valid.json
         | 
| 234 237 | 
             
            - test/fixtures/user_update_valid.json
         |