From 96f3d8d16acb73e07bf5ee8abdc6a1a07d8212cb Mon Sep 17 00:00:00 2001 From: Alexei Curguzchin Date: Wed, 21 Nov 2012 11:14:04 +0200 Subject: [PATCH 1/8] added connection.segments.all --- .gitignore | 1 + .rvmrc.example | 1 + lib/get_response/connection.rb | 14 ++++++++++---- lib/get_response/segment.rb | 16 ++++++++++++++++ lib/get_response/segments_proxy.rb | 19 +++++++++++++++++++ 5 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 .rvmrc.example create mode 100644 lib/get_response/segment.rb create mode 100644 lib/get_response/segments_proxy.rb diff --git a/.gitignore b/.gitignore index 08c1c06..62eebf3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .idea doc +.rvmrc \ No newline at end of file diff --git a/.rvmrc.example b/.rvmrc.example new file mode 100644 index 0000000..87ccdd4 --- /dev/null +++ b/.rvmrc.example @@ -0,0 +1 @@ +rvm use ruby-1.9.3@ruby-getresponse --create diff --git a/lib/get_response/connection.rb b/lib/get_response/connection.rb index 2d0b653..bec1727 100644 --- a/lib/get_response/connection.rb +++ b/lib/get_response/connection.rb @@ -46,6 +46,12 @@ def contacts @contact_proxy ||= GetResponse::ContactProxy.new(self) end + # Method returns proxy to execute all segment related operations. + # + # returns:: GetResponse::SegmentProxy + def segments + @segments_proxy ||= GetResponse::SegmentsProxy.new(self) + end # Method returns proxy to execute all message related operations. # @@ -76,10 +82,10 @@ def confirmation_subjects # method:: String # # params:: Hash - def send_request(method, params = {}) + def send_request(method, params = { }) request_params = { - :method => method, - :params => [@api_key, params] + :method => method, + :params => [@api_key, params] }.to_json uri = URI.parse(API_URI) @@ -107,7 +113,7 @@ def links def build_conditions(conditions) - conditions.inject({}) do |hash, cond| + conditions.inject({ }) do |hash, cond| if cond[0].respond_to?(:evaluate) hash.merge!(cond[0].evaluate(cond[1])) else diff --git a/lib/get_response/segment.rb b/lib/get_response/segment.rb new file mode 100644 index 0000000..adca7f8 --- /dev/null +++ b/lib/get_response/segment.rb @@ -0,0 +1,16 @@ +module GetResponse + + class Segment + + attr_reader :id, :name, :created_on + + + def initialize(params) + @id = params['id'] + @name = params['name'] + @created_on = params['created_on'] + end + + end + +end diff --git a/lib/get_response/segments_proxy.rb b/lib/get_response/segments_proxy.rb new file mode 100644 index 0000000..9e8e0f3 --- /dev/null +++ b/lib/get_response/segments_proxy.rb @@ -0,0 +1,19 @@ +module GetResponse + + class SegmentsProxy + + def initialize(connection) + @connection = connection + end + + # Fetch all segments connected with account + # + # returns:: [Segments] + def all + segments_attrs = @connection.send_request('get_segments')['result'] + segments_attrs.map do |id, attrs| + Segment.new(attrs.merge('id' => id)) + end + end + end +end \ No newline at end of file From b054464c81f26b97eb9622f28dcbfbbe393a5559 Mon Sep 17 00:00:00 2001 From: Alexei Curguzchin Date: Wed, 21 Nov 2012 11:14:36 +0200 Subject: [PATCH 2/8] set version to 0.5.1 --- getresponse.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/getresponse.gemspec b/getresponse.gemspec index 7ea5261..1d255c9 100644 --- a/getresponse.gemspec +++ b/getresponse.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.homepage = "http://dev.getresponse.com" s.summary = "Ruby wrapper for GetResponse API" s.description = "With this gem you can manage your subscribers, campaigns, messages" - s.version = "0.5" + s.version = "0.5.1" s.add_dependency "json", "~> 1.4" s.add_dependency "json_pure", "~>1.4" From e39de74463327decc495d912b6423b626a627274 Mon Sep 17 00:00:00 2001 From: Alexei Curguzchin Date: Wed, 21 Nov 2012 11:19:53 +0200 Subject: [PATCH 3/8] fixed bug, set version 0.5.2 --- getresponse.gemspec | 2 +- lib/get_response/connection.rb | 2 +- lib/get_response/{segments_proxy.rb => segment_proxy.rb} | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename lib/get_response/{segments_proxy.rb => segment_proxy.rb} (87%) diff --git a/getresponse.gemspec b/getresponse.gemspec index 1d255c9..5677b1a 100644 --- a/getresponse.gemspec +++ b/getresponse.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.homepage = "http://dev.getresponse.com" s.summary = "Ruby wrapper for GetResponse API" s.description = "With this gem you can manage your subscribers, campaigns, messages" - s.version = "0.5.1" + s.version = "0.5.2" s.add_dependency "json", "~> 1.4" s.add_dependency "json_pure", "~>1.4" diff --git a/lib/get_response/connection.rb b/lib/get_response/connection.rb index bec1727..33a1436 100644 --- a/lib/get_response/connection.rb +++ b/lib/get_response/connection.rb @@ -50,7 +50,7 @@ def contacts # # returns:: GetResponse::SegmentProxy def segments - @segments_proxy ||= GetResponse::SegmentsProxy.new(self) + @segment_proxy ||= GetResponse::SegmentProxy.new(self) end # Method returns proxy to execute all message related operations. diff --git a/lib/get_response/segments_proxy.rb b/lib/get_response/segment_proxy.rb similarity index 87% rename from lib/get_response/segments_proxy.rb rename to lib/get_response/segment_proxy.rb index 9e8e0f3..d41c1b1 100644 --- a/lib/get_response/segments_proxy.rb +++ b/lib/get_response/segment_proxy.rb @@ -1,6 +1,6 @@ module GetResponse - class SegmentsProxy + class SegmentProxy def initialize(connection) @connection = connection @@ -8,7 +8,7 @@ def initialize(connection) # Fetch all segments connected with account # - # returns:: [Segments] + # returns:: [Segment] def all segments_attrs = @connection.send_request('get_segments')['result'] segments_attrs.map do |id, attrs| From c8d96d08b43c52497ce25260cb5708c2867f05cb Mon Sep 17 00:00:00 2001 From: Alexei Curguzchin Date: Wed, 21 Nov 2012 11:21:48 +0200 Subject: [PATCH 4/8] added models to autoload, set version 0.5.3 --- getresponse.gemspec | 2 +- lib/get_response.rb | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/getresponse.gemspec b/getresponse.gemspec index 5677b1a..4a4299f 100644 --- a/getresponse.gemspec +++ b/getresponse.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.homepage = "http://dev.getresponse.com" s.summary = "Ruby wrapper for GetResponse API" s.description = "With this gem you can manage your subscribers, campaigns, messages" - s.version = "0.5.2" + s.version = "0.5.3" s.add_dependency "json", "~> 1.4" s.add_dependency "json_pure", "~>1.4" diff --git a/lib/get_response.rb b/lib/get_response.rb index 2f45e0c..1318ae5 100644 --- a/lib/get_response.rb +++ b/lib/get_response.rb @@ -26,4 +26,6 @@ module GetResponse GetResponse.autoload :Conditions, "get_response/conditions" GetResponse.autoload :LinksProxy, "get_response/links_proxy" GetResponse.autoload :Link, "get_response/link" -GetResponse.autoload :Blacklist, "get_response/blacklist" \ No newline at end of file +GetResponse.autoload :Blacklist, "get_response/blacklist" +GetResponse.autoload :Segment, "get_response/segment" +GetResponse.autoload :SegmentProxy, "get_response/segment_proxy" \ No newline at end of file From 537961d8070d961d408f429005fb638b09d9ada7 Mon Sep 17 00:00:00 2001 From: Alexei Curguzchin Date: Thu, 22 Nov 2012 15:12:41 +0200 Subject: [PATCH 5/8] added set_newsletter method, v. 0.5.4 --- getresponse.gemspec | 2 +- lib/get_response/message_proxy.rb | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/getresponse.gemspec b/getresponse.gemspec index 4a4299f..0c32b2a 100644 --- a/getresponse.gemspec +++ b/getresponse.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.homepage = "http://dev.getresponse.com" s.summary = "Ruby wrapper for GetResponse API" s.description = "With this gem you can manage your subscribers, campaigns, messages" - s.version = "0.5.3" + s.version = "0.5.4" s.add_dependency "json", "~> 1.4" s.add_dependency "json_pure", "~>1.4" diff --git a/lib/get_response/message_proxy.rb b/lib/get_response/message_proxy.rb index 54eb6ff..ae9cb6f 100644 --- a/lib/get_response/message_proxy.rb +++ b/lib/get_response/message_proxy.rb @@ -18,7 +18,7 @@ def initialize(connection) # # conditions:: Hash, empty by default # returns:: Array of GetResponse::Message - def all(conditions = {}) + def all(conditions = { }) response = @connection.send_request("get_messages", conditions) response["result"].inject([]) do |messages, resp| @@ -27,6 +27,11 @@ def all(conditions = {}) end end + def send_newsletter(options) + response = @connection.send_request('send_newsletter', options) + Message.new({ 'id' => response['result']['MESSAGE_ID'] }, @connection) + end + protected From 60f05b48a71bc2bf2d629ffe7ff6e0a2b3aac374 Mon Sep 17 00:00:00 2001 From: Alexei Curguzchin Date: Fri, 30 Nov 2012 14:18:10 +0200 Subject: [PATCH 6/8] added custom api url --- getresponse.gemspec | 2 +- lib/get_response/connection.rb | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/getresponse.gemspec b/getresponse.gemspec index 0c32b2a..aaaca0a 100644 --- a/getresponse.gemspec +++ b/getresponse.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.homepage = "http://dev.getresponse.com" s.summary = "Ruby wrapper for GetResponse API" s.description = "With this gem you can manage your subscribers, campaigns, messages" - s.version = "0.5.4" + s.version = "0.5.5" s.add_dependency "json", "~> 1.4" s.add_dependency "json_pure", "~>1.4" diff --git a/lib/get_response/connection.rb b/lib/get_response/connection.rb index 33a1436..b583cf3 100644 --- a/lib/get_response/connection.rb +++ b/lib/get_response/connection.rb @@ -4,12 +4,13 @@ module GetResponse # Simple class that simulates connection to service class Connection - API_URI = "http://api2.getresponse.com" + DEFAULT_API_URI = "http://api2.getresponse.com" attr_reader :api_key - def initialize(api_key) + def initialize(api_key, api_url = nil) @api_key = api_key + @api_url = api_url || DEFAULT_API_URI end @@ -88,7 +89,7 @@ def send_request(method, params = { }) :params => [@api_key, params] }.to_json - uri = URI.parse(API_URI) + uri = URI.parse(@api_url) resp = Net::HTTP.start(uri.host, uri.port) do |conn| conn.post("/", request_params) end From 8ae021aea705483285650012c3249d23052d765b Mon Sep 17 00:00:00 2001 From: Alexei Curguzchin Date: Fri, 30 Nov 2012 16:16:23 +0200 Subject: [PATCH 7/8] added custom api url with path --- getresponse.gemspec | 2 +- lib/get_response/connection.rb | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/getresponse.gemspec b/getresponse.gemspec index aaaca0a..2d0a307 100644 --- a/getresponse.gemspec +++ b/getresponse.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.homepage = "http://dev.getresponse.com" s.summary = "Ruby wrapper for GetResponse API" s.description = "With this gem you can manage your subscribers, campaigns, messages" - s.version = "0.5.5" + s.version = "0.5.6" s.add_dependency "json", "~> 1.4" s.add_dependency "json_pure", "~>1.4" diff --git a/lib/get_response/connection.rb b/lib/get_response/connection.rb index b583cf3..a966fb9 100644 --- a/lib/get_response/connection.rb +++ b/lib/get_response/connection.rb @@ -90,8 +90,9 @@ def send_request(method, params = { }) }.to_json uri = URI.parse(@api_url) + path = ('' == uri.path) ? '/' : uri.path resp = Net::HTTP.start(uri.host, uri.port) do |conn| - conn.post("/", request_params) + conn.post(path, request_params) end raise GetResponseError.new("API key verification failed") if resp.code.to_i == 403 response = JSON.parse(resp.body) From a29f874faa19e8a1f76b355f4193adbee5db5a35 Mon Sep 17 00:00:00 2001 From: Alexei Curguzchin Date: Tue, 4 Dec 2012 13:56:53 +0200 Subject: [PATCH 8/8] added jsonrpc = 2.0 and member id in every request --- getresponse.gemspec | 2 +- lib/get_response/connection.rb | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/getresponse.gemspec b/getresponse.gemspec index 2d0a307..82a4642 100644 --- a/getresponse.gemspec +++ b/getresponse.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.homepage = "http://dev.getresponse.com" s.summary = "Ruby wrapper for GetResponse API" s.description = "With this gem you can manage your subscribers, campaigns, messages" - s.version = "0.5.6" + s.version = "0.5.7" s.add_dependency "json", "~> 1.4" s.add_dependency "json_pure", "~>1.4" diff --git a/lib/get_response/connection.rb b/lib/get_response/connection.rb index a966fb9..b7b3f97 100644 --- a/lib/get_response/connection.rb +++ b/lib/get_response/connection.rb @@ -85,8 +85,10 @@ def confirmation_subjects # params:: Hash def send_request(method, params = { }) request_params = { - :method => method, - :params => [@api_key, params] + jsonrpc: '2.0', + method: method, + params: [@api_key, params], + id: Time.now.to_i.to_s }.to_json uri = URI.parse(@api_url)