rapleaf_api 1.2.2 → 1.2.3.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.
data/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
+ v1.2.3. Bulk API support
2
+
1
3
  v1.2.2. Downcase emails before hashing
2
4
 
3
5
  v1.2.1. Support ca_file instead of ca_path in constructor
@@ -8,4 +10,4 @@ v0.1.1. Bug fixes
8
10
 
9
11
  v0.1.0. Added support for show_available
10
12
 
11
- v0.0.1. Initial version
13
+ v0.0.1. Initial version
data/README.md CHANGED
@@ -13,7 +13,7 @@ Usage
13
13
  => true
14
14
  > api = RapleafApi::Api.new('my secret API key')
15
15
  => #<RapleafApi::Api:0x101b7f5f0 @API_KEY="my secret API key", @CA_FILE=nil, @TIMEOUT=2, @BASE_PATH="/v4/dr?api_key=my secret API key">
16
- > h = api.query_by_email('test@example.com')
16
+ > h = api.query_by_email('test@rapleaf.com')
17
17
  => {"location"=>"Fakesville, California, United States", "gender"=>"Male", "age"=>"25-34"}
18
18
 
19
19
  Constructor Options
@@ -57,16 +57,17 @@ This method queries Rapleaf's API with a name and postal address: first name, la
57
57
 
58
58
  This method queries Rapleaf's API with a name and ZIP+4 code. The ZIP+4 is a string with a 5-digit ZIP code and 4-digit extension separated by a dash. This method accepts the following options:
59
59
 
60
- - :email => You can include an email in your NAP query to increase the hit rate. Defaults to nil.
61
- - :show_available => Controls whether the response will include information about available data. Defaults to nil.
60
+ - :email => You can include an email in your NAP query to increase the hit rate. Defaults to nil.
61
+ - :show_available => Controls whether the response will include information about available data. Defaults to nil.
62
62
 
63
63
 
64
64
  Contributing
65
65
  ============
66
66
  If you have suggestions or patches, feel free to email us at
67
- <developer at rapleaf dot com>. We look forward to hearing from you!
67
+ [developer at rapleaf dot com]. We look forward to hearing from you!
68
68
 
69
69
 
70
70
  Contributors
71
71
  ============
72
- Greg Poulos <greg at rapleaf dot com>
72
+ - Greg Poulos [greg at rapleaf dot com]
73
+ - Sean Carr [sean at rapleaf dot com]
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('rapleaf_api', '1.2.2') do |p|
5
+ Echoe.new('rapleaf_api', '1.2.3') do |p|
6
6
  p.author = 'Rapleaf'
7
7
  p.description = "A library for interacting with Rapleaf's Personalization API."
8
8
  p.email = 'developer @nospam@ rapleaf.com'
data/lib/rapleaf_api.rb CHANGED
@@ -24,12 +24,13 @@ include ERB::Util
24
24
  module RapleafApi
25
25
  HOST = "personalize.rapleaf.com"
26
26
  PORT = 443
27
- HEADERS = {'User-Agent' => 'RapleafApi/Ruby/1.2.2'}
27
+ HEADERS = {'User-Agent' => 'RapleafApi/Ruby/1.2.3', 'Content-Type' => 'application/json'}
28
28
 
29
29
  class Api
30
30
  def initialize(api_key, options = {})
31
31
  @API_KEY = api_key
32
32
  @BASE_PATH = "/v4/dr?api_key=#{@API_KEY}"
33
+ @BULK_PATH = "/v4/bulk?api_key=#{@API_KEY}"
33
34
  @TIMEOUT = options[:timeout] || 2
34
35
  @CA_FILE = options[:ca_file] # set to your system-wide root ca cert file
35
36
  # if you're having ssl verification issues
@@ -97,8 +98,34 @@ module RapleafApi
97
98
  get_json_response(url, options[:show_available])
98
99
  end
99
100
 
101
+ def bulk_query(set, upsell = false)
102
+ path = @BULK_PATH
103
+ if upsell
104
+ path = path + "&show_available=true"
105
+ end
106
+
107
+ get_bulk_response(path,JSON.generate(set))
108
+ end
109
+
100
110
  private
101
111
 
112
+ def get_bulk_response(path, data)
113
+ response = Timeout::timeout(@TIMEOUT) do
114
+ http_client.post(path, data, HEADERS)
115
+ begin
116
+ http_client.post(path, data, HEADERS)
117
+ rescue EOFError # Connection cut out. Just try a second time.
118
+ http_client.post(path, data, HEADERS)
119
+ end
120
+ end
121
+
122
+ if response.code =~ /^2\d\d/
123
+ (response.body && response.body != "") ? JSON.parse(response.body) : []
124
+ else
125
+ raise "Error Code #{response.code}: \"#{response.body}\""
126
+ end
127
+ end
128
+
102
129
  # Takes a url and returns a hash mapping attribute fields onto attributes
103
130
  # Note that an exception is raised in the case that
104
131
  # an HTTP response code other than 200 is sent back
@@ -125,7 +152,7 @@ module RapleafApi
125
152
  @@http_client = Net::HTTP.new(HOST, PORT)
126
153
  @@http_client.use_ssl = true
127
154
  @@http_client.ca_file = @CA_FILE if @CA_FILE
128
- @@http_client.verify_mode = OpenSSL::SSL::VERIFY_PEER
155
+ #@@http_client.verify_mode = OpenSSL::SSL::VERIFY_PEER
129
156
  @@http_client.start
130
157
  end
131
158
  @@http_client
data/rapleaf_api.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{rapleaf_api}
5
- s.version = "1.2.2"
5
+ s.version = "1.2.3.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Rapleaf"]
9
- s.date = %q{2011-05-16}
9
+ s.date = %q{2011-08-23}
10
10
  s.description = %q{A library for interacting with Rapleaf's Personalization API.}
11
11
  s.email = %q{developer @nospam@ rapleaf.com}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.md", "lib/rapleaf_api.rb"]
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rapleaf_api
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease:
4
+ hash: 67
5
+ prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
- - 2
10
- version: 1.2.2
9
+ - 3
10
+ - 0
11
+ version: 1.2.3.0
11
12
  platform: ruby
12
13
  authors:
13
14
  - Rapleaf
@@ -15,7 +16,7 @@ autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2011-05-16 00:00:00 -07:00
19
+ date: 2011-08-23 00:00:00 -07:00
19
20
  default_executable:
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
@@ -101,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
102
  requirements: []
102
103
 
103
104
  rubyforge_project: rapleaf_api
104
- rubygems_version: 1.6.2
105
+ rubygems_version: 1.3.7
105
106
  signing_key:
106
107
  specification_version: 3
107
108
  summary: A library for interacting with Rapleaf's Personalization API.