ihunter-whatcounts 0.3.7 → 0.4.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/lib/whatcounts.rb +1 -1
- data/lib/whatcounts/http_client.rb +2 -1
- data/lib/whatcounts/list.rb +57 -14
- data/lib/whatcounts/response.rb +3 -3
- metadata +1 -1
data/lib/whatcounts.rb
CHANGED
@@ -26,7 +26,8 @@ module WhatCounts
|
|
26
26
|
|
27
27
|
def execute(command,requestable)
|
28
28
|
raise InvalidConfiguration,"Invalid WhatCounts configuration, are you sure it was configured?" unless @config
|
29
|
-
|
29
|
+
request_string = requestable.kind_of?(String) ? requestable : requestable.to_param_string
|
30
|
+
url = [@config.api_url,"?","c=#{command}&",@config.to_param_string,"&",request_string].join
|
30
31
|
res = Curl::Easy.perform(url) do |easy|
|
31
32
|
easy.connect_timeout = 10
|
32
33
|
easy.timeout = 30
|
data/lib/whatcounts/list.rb
CHANGED
@@ -38,6 +38,15 @@ module WhatCounts
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
+
def id; @id end
|
42
|
+
def to_param_string
|
43
|
+
@param_string ||= OPTIONS_TO_HTTP_PARAMS_MAP.keys.inject([]) do |acc,k|
|
44
|
+
val = self.send :"#{k}"
|
45
|
+
acc << "#{OPTIONS_TO_HTTP_PARAMS_MAP[k]}=#{CGI.escape(val.to_s)}" unless val.nil?
|
46
|
+
acc
|
47
|
+
end.join("&")
|
48
|
+
end
|
49
|
+
|
41
50
|
class << self
|
42
51
|
def create!(options)
|
43
52
|
o = self.new options
|
@@ -45,25 +54,59 @@ module WhatCounts
|
|
45
54
|
end
|
46
55
|
end
|
47
56
|
|
48
|
-
|
57
|
+
SUBSCRIBE_OPTIONS_TO_HTTP_PARAMS_MAP = {:list => :list_id, :format => :format,
|
58
|
+
:force_subscribe => :force_sub, :data => :data }
|
59
|
+
SUBSCRIBE_REQUIRED_OPTIONS = [:list]
|
60
|
+
SUBSCRIBE_IRREGULAR_OPTIONS = [:data]
|
61
|
+
def add_recipients!(recipient_ary)
|
62
|
+
options = {:list => @id, :format => 99, :force_subscribe => 1}
|
63
|
+
options[:data] = (['email']+recipient_ary).join('^')
|
64
|
+
res = WhatCounts::HttpClient.execute('sub',convert_to_whatcounts_parameters(options,SUBSCRIBE_OPTIONS_TO_HTTP_PARAMS_MAP,SUBSCRIBE_IRREGULAR_OPTIONS))
|
65
|
+
end
|
66
|
+
|
67
|
+
LAUNCH_OPTIONS_TO_HTTP_PARAMS_MAP = {:list => :list_id, :template => :template_id,
|
49
68
|
:subject => :subject, :format => :format,
|
50
69
|
:segmentation_id => :segmentation_id, :campaign_alias => :campaign_alias,
|
51
70
|
:send_rss => :target_rss, :virtual_mta => :vmta,
|
52
71
|
:goodmail_token => :gm_token_type, :notification_email => :notify_email }
|
53
|
-
|
54
|
-
def
|
55
|
-
options.each_key {|o| raise UnknownListOptionError,"Unknown option #{o}" unless VALID_OPTIONS.include? o}
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
acc
|
65
|
-
end.join("&")
|
72
|
+
LAUNCH_REQUIRED_OPTIONS = [:list]
|
73
|
+
def launch!(options={})
|
74
|
+
# options.each_key {|o| raise UnknownListOptionError,"Unknown option #{o}" unless VALID_OPTIONS.include? o}
|
75
|
+
options = {:list => @id, :format => 99}.merge(options)
|
76
|
+
res = WhatCounts::HttpClient.execute('launch',convert_to_whatcounts_parameters(options,LAUNCH_OPTIONS_TO_HTTP_PARAMS_MAP))
|
77
|
+
if res.success?
|
78
|
+
return res
|
79
|
+
else
|
80
|
+
puts res.url
|
81
|
+
raise DeployError, res.body
|
82
|
+
end
|
66
83
|
end
|
67
84
|
|
85
|
+
private
|
86
|
+
#TODO move into baseclass
|
87
|
+
def convert_to_whatcounts_parameters(params,lookup,irregular_options=[])
|
88
|
+
begin
|
89
|
+
pairs = (lookup.keys-irregular_options).inject([]) do |acc,k|
|
90
|
+
val = params[k]
|
91
|
+
acc << "#{lookup[k]}=#{CGI.escape(val.to_s)}" unless val.nil?
|
92
|
+
acc
|
93
|
+
end
|
94
|
+
unless params[:data].nil?
|
95
|
+
if params[:data].kind_of? String
|
96
|
+
pairs << "data=#{params[:data]}"
|
97
|
+
elsif params[:data].kind_of? Hash
|
98
|
+
data_pairs = params[:data].inject([[],[]]) do |acc,(k,v)|
|
99
|
+
acc[0] << CGI.escape(k)
|
100
|
+
acc[1] << CGI.escape(v)
|
101
|
+
acc
|
102
|
+
end
|
103
|
+
pairs << "data=#{data_pairs[0].join(',')}^#{data_pairs[1].join(',')}"
|
104
|
+
else
|
105
|
+
# TODO i duno what to do here, probably error? Maybe not since the param isn't required
|
106
|
+
end
|
107
|
+
end
|
108
|
+
pairs
|
109
|
+
end.join("&")
|
110
|
+
end
|
68
111
|
end
|
69
112
|
end
|
data/lib/whatcounts/response.rb
CHANGED
@@ -4,13 +4,13 @@ module WhatCounts
|
|
4
4
|
SUCCESS = true
|
5
5
|
FAILURE = false
|
6
6
|
|
7
|
-
attr_reader :result, :body
|
7
|
+
attr_reader :result, :body, :url
|
8
8
|
private
|
9
|
-
attr_writer :result, :body
|
10
|
-
|
9
|
+
attr_writer :result, :body, :url
|
11
10
|
public
|
12
11
|
|
13
12
|
def initialize(url,document)
|
13
|
+
self.url = url
|
14
14
|
if document =~ /^(SUCCESS|FAILURE):?(.*)/
|
15
15
|
# simple response
|
16
16
|
self.body = $2.strip
|