gibbon 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of gibbon might be problematic. Click here for more details.
- data/.travis.yml +1 -0
- data/Gemfile +8 -10
- data/README.markdown +12 -0
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/gibbon.gemspec +21 -15
- data/lib/gibbon.rb +26 -11
- data/test/helper.rb +0 -3
- data/test/test_gibbon.rb +83 -10
- metadata +79 -57
- data/Gemfile.lock +0 -47
data/.travis.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm: 1.9.2
|
data/Gemfile
CHANGED
@@ -1,18 +1,16 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
|
-
# Add dependencies required to use your gem here.
|
3
|
-
# Example:
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
5
2
|
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
gem "json", "> 1.4.0"
|
4
|
+
gem "httparty", "> 0.6.0"
|
5
|
+
gem "activesupport", ">= 2.3.14"
|
6
|
+
gem "rdoc"
|
7
|
+
|
8
|
+
group :development, :test do
|
9
9
|
gem "shoulda", ">= 0"
|
10
10
|
gem "bundler", "~> 1.0.0"
|
11
11
|
gem "jeweler", "~> 1.5.1"
|
12
12
|
gem "rcov", ">= 0"
|
13
|
-
gem "json", "> 1.4.0"
|
14
|
-
gem "httparty", "> 0.6.0"
|
15
13
|
gem "mocha", "> 0.9.11"
|
16
|
-
gem "
|
17
|
-
gem "ruby-
|
14
|
+
gem "ruby-debug19", :require => "ruby-debug", :platforms => [:ruby_19]
|
15
|
+
gem "ruby-debug", :platforms => [:ruby_18]
|
18
16
|
end
|
data/README.markdown
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
Gibbon is a simple API wrapper for interacting with [MailChimp API](http://www.mailchimp.com/api) 1.3.
|
4
4
|
|
5
|
+
[![Build Status](https://secure.travis-ci.org/amro/gibbon.png)](http://travis-ci.org/amro/gibbon)
|
6
|
+
|
5
7
|
##Installation
|
6
8
|
|
7
9
|
$ gem install gibbon
|
@@ -87,6 +89,15 @@ return value is an Enumerator which loops over the lines returned from the
|
|
87
89
|
Export API. This is because the data returned from the Export API is a stream
|
88
90
|
of JSON objects rather than a single JSON array.
|
89
91
|
|
92
|
+
### Error handling
|
93
|
+
|
94
|
+
By default you are expected to handle errors returned by the APIs manually. The
|
95
|
+
APIs will return a Hash with two keys "errors", a string containing some textual
|
96
|
+
information about the error, and "code", the numeric code of the error.
|
97
|
+
|
98
|
+
If you set the `throws_exceptions` boolean attribute for a given instance then
|
99
|
+
Gibbon will attempt to intercept the errors and raise an exception.
|
100
|
+
|
90
101
|
### Notes
|
91
102
|
|
92
103
|
As of 0.1.6, gibbon uses ActiveSupport::JSON.decode(). This means code that checked for weird API responses (like "true"
|
@@ -102,6 +113,7 @@ as opposed to the string the MailChimp API returns. I understand the extra depen
|
|
102
113
|
* [Calvin Yu](https://github.com/cyu)
|
103
114
|
* [Dave Worth](https://github.com/daveworth)
|
104
115
|
* [Mike Skalnik](https://github.com/skalnik)
|
116
|
+
* [Kristopher Murata](https://github.com/krsmurata)
|
105
117
|
* Rails for camelize gsub
|
106
118
|
|
107
119
|
##Copyrights
|
data/Rakefile
CHANGED
@@ -22,7 +22,7 @@ Jeweler::Tasks.new do |gem|
|
|
22
22
|
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
23
23
|
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
24
24
|
gem.add_runtime_dependency 'httparty', '> 0.6.0'
|
25
|
-
gem.add_runtime_dependency 'activesupport', '
|
25
|
+
gem.add_runtime_dependency 'activesupport', '>= 2.3.14'
|
26
26
|
gem.add_runtime_dependency 'json', '> 1.4.0'
|
27
27
|
gem.add_development_dependency 'httparty', '> 0.6.0'
|
28
28
|
gem.add_development_dependency 'json', '> 1.4.0'
|
@@ -47,7 +47,7 @@ end
|
|
47
47
|
|
48
48
|
task :default => :test
|
49
49
|
|
50
|
-
require '
|
50
|
+
require 'rdoc/task'
|
51
51
|
Rake::RDocTask.new do |rdoc|
|
52
52
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
53
53
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
data/gibbon.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "gibbon"
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Amro Mousa"]
|
12
|
-
s.date = "2011-10-
|
12
|
+
s.date = "2011-10-27"
|
13
13
|
s.description = "Gibbon is a simple API wrapper for interacting with MailChimp API version 1.3."
|
14
14
|
s.email = "amromousa@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -18,8 +18,8 @@ Gem::Specification.new do |s|
|
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
|
+
".travis.yml",
|
21
22
|
"Gemfile",
|
22
|
-
"Gemfile.lock",
|
23
23
|
"LICENSE.txt",
|
24
24
|
"README.markdown",
|
25
25
|
"Rakefile",
|
@@ -43,50 +43,56 @@ Gem::Specification.new do |s|
|
|
43
43
|
s.specification_version = 3
|
44
44
|
|
45
45
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
46
|
+
s.add_runtime_dependency(%q<json>, ["> 1.4.0"])
|
47
|
+
s.add_runtime_dependency(%q<httparty>, ["> 0.6.0"])
|
48
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.14"])
|
49
|
+
s.add_runtime_dependency(%q<rdoc>, [">= 0"])
|
46
50
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
47
51
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
48
52
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
|
49
53
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
50
|
-
s.add_development_dependency(%q<json>, ["> 1.4.0"])
|
51
|
-
s.add_development_dependency(%q<httparty>, ["> 0.6.0"])
|
52
54
|
s.add_development_dependency(%q<mocha>, ["> 0.9.11"])
|
53
|
-
s.add_development_dependency(%q<activesupport>, [">= 3.0.0"])
|
54
55
|
s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
|
56
|
+
s.add_development_dependency(%q<ruby-debug>, [">= 0"])
|
55
57
|
s.add_runtime_dependency(%q<httparty>, ["> 0.6.0"])
|
56
|
-
s.add_runtime_dependency(%q<activesupport>, ["
|
58
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.14"])
|
57
59
|
s.add_runtime_dependency(%q<json>, ["> 1.4.0"])
|
58
60
|
s.add_development_dependency(%q<httparty>, ["> 0.6.0"])
|
59
61
|
s.add_development_dependency(%q<json>, ["> 1.4.0"])
|
60
62
|
s.add_development_dependency(%q<mocha>, ["> 0.9.11"])
|
61
63
|
else
|
64
|
+
s.add_dependency(%q<json>, ["> 1.4.0"])
|
65
|
+
s.add_dependency(%q<httparty>, ["> 0.6.0"])
|
66
|
+
s.add_dependency(%q<activesupport>, [">= 2.3.14"])
|
67
|
+
s.add_dependency(%q<rdoc>, [">= 0"])
|
62
68
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
63
69
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
64
70
|
s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
|
65
71
|
s.add_dependency(%q<rcov>, [">= 0"])
|
66
|
-
s.add_dependency(%q<json>, ["> 1.4.0"])
|
67
|
-
s.add_dependency(%q<httparty>, ["> 0.6.0"])
|
68
72
|
s.add_dependency(%q<mocha>, ["> 0.9.11"])
|
69
|
-
s.add_dependency(%q<activesupport>, [">= 3.0.0"])
|
70
73
|
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
74
|
+
s.add_dependency(%q<ruby-debug>, [">= 0"])
|
71
75
|
s.add_dependency(%q<httparty>, ["> 0.6.0"])
|
72
|
-
s.add_dependency(%q<activesupport>, ["
|
76
|
+
s.add_dependency(%q<activesupport>, [">= 2.3.14"])
|
73
77
|
s.add_dependency(%q<json>, ["> 1.4.0"])
|
74
78
|
s.add_dependency(%q<httparty>, ["> 0.6.0"])
|
75
79
|
s.add_dependency(%q<json>, ["> 1.4.0"])
|
76
80
|
s.add_dependency(%q<mocha>, ["> 0.9.11"])
|
77
81
|
end
|
78
82
|
else
|
83
|
+
s.add_dependency(%q<json>, ["> 1.4.0"])
|
84
|
+
s.add_dependency(%q<httparty>, ["> 0.6.0"])
|
85
|
+
s.add_dependency(%q<activesupport>, [">= 2.3.14"])
|
86
|
+
s.add_dependency(%q<rdoc>, [">= 0"])
|
79
87
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
80
88
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
81
89
|
s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
|
82
90
|
s.add_dependency(%q<rcov>, [">= 0"])
|
83
|
-
s.add_dependency(%q<json>, ["> 1.4.0"])
|
84
|
-
s.add_dependency(%q<httparty>, ["> 0.6.0"])
|
85
91
|
s.add_dependency(%q<mocha>, ["> 0.9.11"])
|
86
|
-
s.add_dependency(%q<activesupport>, [">= 3.0.0"])
|
87
92
|
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
93
|
+
s.add_dependency(%q<ruby-debug>, [">= 0"])
|
88
94
|
s.add_dependency(%q<httparty>, ["> 0.6.0"])
|
89
|
-
s.add_dependency(%q<activesupport>, ["
|
95
|
+
s.add_dependency(%q<activesupport>, [">= 2.3.14"])
|
90
96
|
s.add_dependency(%q<json>, ["> 1.4.0"])
|
91
97
|
s.add_dependency(%q<httparty>, ["> 0.6.0"])
|
92
98
|
s.add_dependency(%q<json>, ["> 1.4.0"])
|
data/lib/gibbon.rb
CHANGED
@@ -8,11 +8,12 @@ class Gibbon
|
|
8
8
|
format :plain
|
9
9
|
default_timeout 30
|
10
10
|
|
11
|
-
attr_accessor :api_key, :timeout
|
11
|
+
attr_accessor :api_key, :timeout, :throws_exceptions
|
12
12
|
|
13
13
|
def initialize(api_key = nil, extra_params = {})
|
14
14
|
@api_key = api_key || ENV['MC_API_KEY'] || ENV['MAILCHIMP_API_KEY'] || self.class.api_key
|
15
15
|
@default_params = {:apikey => @api_key}.merge(extra_params)
|
16
|
+
@throws_exceptions = false
|
16
17
|
end
|
17
18
|
|
18
19
|
def api_key=(value)
|
@@ -20,10 +21,15 @@ class Gibbon
|
|
20
21
|
@default_params = @default_params.merge({:apikey => @api_key})
|
21
22
|
end
|
22
23
|
|
24
|
+
def get_exporter
|
25
|
+
GibbonExport.new(@api_key, @default_params)
|
26
|
+
end
|
27
|
+
|
23
28
|
def base_api_url
|
24
29
|
"https://#{dc_from_api_key}api.mailchimp.com/1.3/?method="
|
25
30
|
end
|
26
31
|
|
32
|
+
protected
|
27
33
|
|
28
34
|
def call(method, params = {})
|
29
35
|
url = base_api_url + method
|
@@ -35,6 +41,11 @@ class Gibbon
|
|
35
41
|
rescue
|
36
42
|
response = response.body
|
37
43
|
end
|
44
|
+
|
45
|
+
if @throws_exceptions && response.is_a?(Hash) && response["error"]
|
46
|
+
raise "Error from MailChimp API: #{response["error"]} (code #{response["code"]})"
|
47
|
+
end
|
48
|
+
|
38
49
|
response
|
39
50
|
end
|
40
51
|
|
@@ -42,14 +53,10 @@ class Gibbon
|
|
42
53
|
method = method.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase } #Thanks for the gsub, Rails
|
43
54
|
method = method[0].chr.downcase + method[1..-1].gsub(/aim$/i, 'AIM')
|
44
55
|
args = {} unless args.length > 0
|
45
|
-
args = args[0] if
|
56
|
+
args = args[0] if args.is_a?(Array)
|
46
57
|
call(method, args)
|
47
58
|
end
|
48
59
|
|
49
|
-
def get_exporter
|
50
|
-
GibbonExport.new(@api_key, @default_params)
|
51
|
-
end
|
52
|
-
|
53
60
|
class << self
|
54
61
|
attr_accessor :api_key
|
55
62
|
|
@@ -58,9 +65,8 @@ class Gibbon
|
|
58
65
|
end
|
59
66
|
end
|
60
67
|
|
61
|
-
protected
|
62
68
|
def dc_from_api_key
|
63
|
-
(@api_key.
|
69
|
+
(@api_key.nil? || @api_key.length == 0 || @api_key !~ /-/) ? '' : "#{@api_key.split("-").last}."
|
64
70
|
end
|
65
71
|
end
|
66
72
|
|
@@ -69,15 +75,24 @@ class GibbonExport < Gibbon
|
|
69
75
|
super(api_key, extra_params)
|
70
76
|
end
|
71
77
|
|
78
|
+
protected
|
79
|
+
|
72
80
|
def export_api_url
|
73
81
|
"http://#{dc_from_api_key}api.mailchimp.com/export/1.0/"
|
74
82
|
end
|
75
83
|
|
76
84
|
def call(method, params = {})
|
77
|
-
|
85
|
+
method_params = {:apikey => @api_key, :id => params[:id]}.to_a.map {|a| "#{a[0]}=#{CGI::escape(a[1])}"}.join("&")
|
86
|
+
url = export_api_url + method + "?" + method_params
|
78
87
|
params = @default_params.merge(params)
|
79
|
-
response = self.class.post(url, :body => params, :timeout => @timeout)
|
88
|
+
response = self.class.post(url, :body => CGI::escape(params.to_json), :timeout => @timeout)
|
89
|
+
|
90
|
+
lines = response.body.lines
|
91
|
+
if @throws_exceptions
|
92
|
+
first_line_object = ActiveSupport::JSON.decode(lines.first) if lines.first
|
93
|
+
raise "Error from MailChimp Export API: #{first_line_object["error"]} (code #{first_line_object["code"]})" if first_line_object.is_a?(Hash) && first_line_object["error"]
|
94
|
+
end
|
80
95
|
|
81
|
-
|
96
|
+
lines
|
82
97
|
end
|
83
98
|
end
|
data/test/helper.rb
CHANGED
data/test/test_gibbon.rb
CHANGED
@@ -4,6 +4,50 @@ require 'ruby-debug'
|
|
4
4
|
|
5
5
|
class TestGibbon < Test::Unit::TestCase
|
6
6
|
|
7
|
+
context "attributes" do
|
8
|
+
|
9
|
+
setup do
|
10
|
+
@api_key = "123-us1"
|
11
|
+
end
|
12
|
+
|
13
|
+
should "have no API by default" do
|
14
|
+
@gibbon = Gibbon.new
|
15
|
+
assert_equal(nil, @gibbon.api_key)
|
16
|
+
end
|
17
|
+
|
18
|
+
should "set an API key in constructor" do
|
19
|
+
@gibbon = Gibbon.new(@api_key)
|
20
|
+
assert_equal(@api_key, @gibbon.api_key)
|
21
|
+
end
|
22
|
+
|
23
|
+
should "set an API key from the 'MC_API_KEY' ENV variable" do
|
24
|
+
ENV['MC_API_KEY'] = @api_key
|
25
|
+
@gibbon = Gibbon.new
|
26
|
+
assert_equal(@api_key, @gibbon.api_key)
|
27
|
+
ENV.delete('MC_API_KEY')
|
28
|
+
end
|
29
|
+
|
30
|
+
should "set an API key from the 'MAILCHIMP_API_KEY' ENV variable" do
|
31
|
+
ENV['MAILCHIMP_API_KEY'] = @api_key
|
32
|
+
@gibbon = Gibbon.new
|
33
|
+
assert_equal(@api_key, @gibbon.api_key)
|
34
|
+
ENV.delete('MAILCHIMP_API_KEY')
|
35
|
+
end
|
36
|
+
|
37
|
+
should "set an API key via setter" do
|
38
|
+
@gibbon = Gibbon.new
|
39
|
+
@gibbon.api_key = @api_key
|
40
|
+
assert_equal(@api_key, @gibbon.api_key)
|
41
|
+
end
|
42
|
+
|
43
|
+
should "set timeout and get" do
|
44
|
+
@gibbon = Gibbon.new
|
45
|
+
timeout = 30
|
46
|
+
@gibbon.timeout = timeout
|
47
|
+
assert_equal(timeout, @gibbon.timeout)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
7
51
|
context "build api url" do
|
8
52
|
setup do
|
9
53
|
@gibbon = Gibbon.new
|
@@ -77,12 +121,30 @@ class TestGibbon < Test::Unit::TestCase
|
|
77
121
|
@gibbon = Gibbon.new(@key)
|
78
122
|
@url = "https://us1.api.mailchimp.com/1.3/?method=sayHello"
|
79
123
|
@body = {"apikey" => @key}
|
124
|
+
@returns = Struct.new(:body).new(ActiveSupport::JSON.encode(["array", "entries"]))
|
80
125
|
end
|
81
126
|
|
82
127
|
should "produce a good exporter" do
|
83
128
|
@exporter = @gibbon.get_exporter
|
84
129
|
assert_equal(@exporter.api_key, @gibbon.api_key)
|
85
130
|
end
|
131
|
+
|
132
|
+
should "throw exception if configured to and the API replies with a JSON hash containing a key called 'error'" do
|
133
|
+
Gibbon.stubs(:post).returns(Struct.new(:body).new(ActiveSupport::JSON.encode({'error' => 'bad things'})))
|
134
|
+
assert_nothing_raised do
|
135
|
+
result = @gibbon.say_hello
|
136
|
+
end
|
137
|
+
|
138
|
+
ap result
|
139
|
+
end
|
140
|
+
|
141
|
+
should "throw exception if configured to and the API replies with a JSON hash containing a key called 'error'" do
|
142
|
+
@gibbon.throws_exceptions = true
|
143
|
+
Gibbon.stubs(:post).returns(Struct.new(:body).new(ActiveSupport::JSON.encode({'error' => 'bad things'})))
|
144
|
+
assert_raise RuntimeError do
|
145
|
+
@gibbon.say_hello
|
146
|
+
end
|
147
|
+
end
|
86
148
|
end
|
87
149
|
|
88
150
|
context "export API" do
|
@@ -90,27 +152,38 @@ class TestGibbon < Test::Unit::TestCase
|
|
90
152
|
@key = "TESTKEY-us1"
|
91
153
|
@gibbon = GibbonExport.new(@key)
|
92
154
|
@url = "http://us1.api.mailchimp.com/export/1.0/"
|
93
|
-
@body = {:apikey => @key}
|
94
|
-
@returns = Struct.new(:body).new("")
|
155
|
+
@body = {:apikey => @key, :id => "listid"}
|
156
|
+
@returns = Struct.new(:body).new(ActiveSupport::JSON.encode(["array", "entries"]))
|
95
157
|
end
|
96
158
|
|
97
159
|
should "handle api key with dc" do
|
98
160
|
@api_key = "TESTKEY-us2"
|
99
161
|
@gibbon = GibbonExport.new(@api_key)
|
100
162
|
|
101
|
-
params = {:body =>
|
102
|
-
url = @url.gsub('us1', 'us2') + "sayHello
|
163
|
+
params = {:body => CGI::escape(@body.to_json), :timeout => nil}
|
164
|
+
url = @url.gsub('us1', 'us2') + "sayHello?apikey=TESTKEY-us2&id=listid"
|
103
165
|
GibbonExport.expects(:post).with(url, params).returns(@returns)
|
104
|
-
@gibbon.say_hello
|
166
|
+
@gibbon.say_hello(@body)
|
105
167
|
end
|
106
168
|
|
107
|
-
should "not
|
108
|
-
|
169
|
+
should "not throw exception if the Export API replies with a JSON hash containing a key called 'error'" do
|
170
|
+
GibbonExport.stubs(:post).returns(Struct.new(:body).new(ActiveSupport::JSON.encode({'error' => 'bad things'})))
|
109
171
|
|
110
|
-
|
111
|
-
|
112
|
-
|
172
|
+
assert_nothing_raised do
|
173
|
+
@gibbon.say_hello(@body)
|
174
|
+
end
|
113
175
|
end
|
176
|
+
|
177
|
+
should "throw exception if configured to and the Export API replies with a JSON hash containing a key called 'error'" do
|
178
|
+
@gibbon.throws_exceptions = true
|
179
|
+
params = {:body => @body, :timeout => nil}
|
180
|
+
GibbonExport.stubs(:post).returns(Struct.new(:body).new(ActiveSupport::JSON.encode({'error' => 'bad things', 'code' => '123'})))
|
181
|
+
|
182
|
+
assert_raise RuntimeError do
|
183
|
+
@gibbon.say_hello(@body)
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
114
187
|
end
|
115
188
|
|
116
189
|
private
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gibbon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,55 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-10-
|
12
|
+
date: 2011-10-27 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: json
|
16
|
+
requirement: &70244006352920 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>'
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.4.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70244006352920
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: httparty
|
27
|
+
requirement: &70244006351940 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>'
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.6.0
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70244006351940
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: activesupport
|
38
|
+
requirement: &70244006350600 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 2.3.14
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70244006350600
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rdoc
|
49
|
+
requirement: &70244006349220 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70244006349220
|
14
58
|
- !ruby/object:Gem::Dependency
|
15
59
|
name: shoulda
|
16
|
-
requirement: &
|
60
|
+
requirement: &70244006348240 !ruby/object:Gem::Requirement
|
17
61
|
none: false
|
18
62
|
requirements:
|
19
63
|
- - ! '>='
|
@@ -21,10 +65,10 @@ dependencies:
|
|
21
65
|
version: '0'
|
22
66
|
type: :development
|
23
67
|
prerelease: false
|
24
|
-
version_requirements: *
|
68
|
+
version_requirements: *70244006348240
|
25
69
|
- !ruby/object:Gem::Dependency
|
26
70
|
name: bundler
|
27
|
-
requirement: &
|
71
|
+
requirement: &70244006347080 !ruby/object:Gem::Requirement
|
28
72
|
none: false
|
29
73
|
requirements:
|
30
74
|
- - ~>
|
@@ -32,10 +76,10 @@ dependencies:
|
|
32
76
|
version: 1.0.0
|
33
77
|
type: :development
|
34
78
|
prerelease: false
|
35
|
-
version_requirements: *
|
79
|
+
version_requirements: *70244006347080
|
36
80
|
- !ruby/object:Gem::Dependency
|
37
81
|
name: jeweler
|
38
|
-
requirement: &
|
82
|
+
requirement: &70244006346020 !ruby/object:Gem::Requirement
|
39
83
|
none: false
|
40
84
|
requirements:
|
41
85
|
- - ~>
|
@@ -43,10 +87,10 @@ dependencies:
|
|
43
87
|
version: 1.5.1
|
44
88
|
type: :development
|
45
89
|
prerelease: false
|
46
|
-
version_requirements: *
|
90
|
+
version_requirements: *70244006346020
|
47
91
|
- !ruby/object:Gem::Dependency
|
48
92
|
name: rcov
|
49
|
-
requirement: &
|
93
|
+
requirement: &70244006344960 !ruby/object:Gem::Requirement
|
50
94
|
none: false
|
51
95
|
requirements:
|
52
96
|
- - ! '>='
|
@@ -54,32 +98,10 @@ dependencies:
|
|
54
98
|
version: '0'
|
55
99
|
type: :development
|
56
100
|
prerelease: false
|
57
|
-
version_requirements: *
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
|
-
name: json
|
60
|
-
requirement: &70158318237040 !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
|
-
requirements:
|
63
|
-
- - ! '>'
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: 1.4.0
|
66
|
-
type: :development
|
67
|
-
prerelease: false
|
68
|
-
version_requirements: *70158318237040
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: httparty
|
71
|
-
requirement: &70158318236320 !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
|
-
requirements:
|
74
|
-
- - ! '>'
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 0.6.0
|
77
|
-
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: *70158318236320
|
101
|
+
version_requirements: *70244006344960
|
80
102
|
- !ruby/object:Gem::Dependency
|
81
103
|
name: mocha
|
82
|
-
requirement: &
|
104
|
+
requirement: &70244006343960 !ruby/object:Gem::Requirement
|
83
105
|
none: false
|
84
106
|
requirements:
|
85
107
|
- - ! '>'
|
@@ -87,21 +109,21 @@ dependencies:
|
|
87
109
|
version: 0.9.11
|
88
110
|
type: :development
|
89
111
|
prerelease: false
|
90
|
-
version_requirements: *
|
112
|
+
version_requirements: *70244006343960
|
91
113
|
- !ruby/object:Gem::Dependency
|
92
|
-
name:
|
93
|
-
requirement: &
|
114
|
+
name: ruby-debug19
|
115
|
+
requirement: &70244006343000 !ruby/object:Gem::Requirement
|
94
116
|
none: false
|
95
117
|
requirements:
|
96
118
|
- - ! '>='
|
97
119
|
- !ruby/object:Gem::Version
|
98
|
-
version:
|
120
|
+
version: '0'
|
99
121
|
type: :development
|
100
122
|
prerelease: false
|
101
|
-
version_requirements: *
|
123
|
+
version_requirements: *70244006343000
|
102
124
|
- !ruby/object:Gem::Dependency
|
103
|
-
name: ruby-
|
104
|
-
requirement: &
|
125
|
+
name: ruby-debug
|
126
|
+
requirement: &70244006342180 !ruby/object:Gem::Requirement
|
105
127
|
none: false
|
106
128
|
requirements:
|
107
129
|
- - ! '>='
|
@@ -109,10 +131,10 @@ dependencies:
|
|
109
131
|
version: '0'
|
110
132
|
type: :development
|
111
133
|
prerelease: false
|
112
|
-
version_requirements: *
|
134
|
+
version_requirements: *70244006342180
|
113
135
|
- !ruby/object:Gem::Dependency
|
114
136
|
name: httparty
|
115
|
-
requirement: &
|
137
|
+
requirement: &70244006338500 !ruby/object:Gem::Requirement
|
116
138
|
none: false
|
117
139
|
requirements:
|
118
140
|
- - ! '>'
|
@@ -120,21 +142,21 @@ dependencies:
|
|
120
142
|
version: 0.6.0
|
121
143
|
type: :runtime
|
122
144
|
prerelease: false
|
123
|
-
version_requirements: *
|
145
|
+
version_requirements: *70244006338500
|
124
146
|
- !ruby/object:Gem::Dependency
|
125
147
|
name: activesupport
|
126
|
-
requirement: &
|
148
|
+
requirement: &70244006336360 !ruby/object:Gem::Requirement
|
127
149
|
none: false
|
128
150
|
requirements:
|
129
|
-
- - ! '
|
151
|
+
- - ! '>='
|
130
152
|
- !ruby/object:Gem::Version
|
131
|
-
version: 3.
|
153
|
+
version: 2.3.14
|
132
154
|
type: :runtime
|
133
155
|
prerelease: false
|
134
|
-
version_requirements: *
|
156
|
+
version_requirements: *70244006336360
|
135
157
|
- !ruby/object:Gem::Dependency
|
136
158
|
name: json
|
137
|
-
requirement: &
|
159
|
+
requirement: &70244006333660 !ruby/object:Gem::Requirement
|
138
160
|
none: false
|
139
161
|
requirements:
|
140
162
|
- - ! '>'
|
@@ -142,10 +164,10 @@ dependencies:
|
|
142
164
|
version: 1.4.0
|
143
165
|
type: :runtime
|
144
166
|
prerelease: false
|
145
|
-
version_requirements: *
|
167
|
+
version_requirements: *70244006333660
|
146
168
|
- !ruby/object:Gem::Dependency
|
147
169
|
name: httparty
|
148
|
-
requirement: &
|
170
|
+
requirement: &70244006332240 !ruby/object:Gem::Requirement
|
149
171
|
none: false
|
150
172
|
requirements:
|
151
173
|
- - ! '>'
|
@@ -153,10 +175,10 @@ dependencies:
|
|
153
175
|
version: 0.6.0
|
154
176
|
type: :development
|
155
177
|
prerelease: false
|
156
|
-
version_requirements: *
|
178
|
+
version_requirements: *70244006332240
|
157
179
|
- !ruby/object:Gem::Dependency
|
158
180
|
name: json
|
159
|
-
requirement: &
|
181
|
+
requirement: &70244006330920 !ruby/object:Gem::Requirement
|
160
182
|
none: false
|
161
183
|
requirements:
|
162
184
|
- - ! '>'
|
@@ -164,10 +186,10 @@ dependencies:
|
|
164
186
|
version: 1.4.0
|
165
187
|
type: :development
|
166
188
|
prerelease: false
|
167
|
-
version_requirements: *
|
189
|
+
version_requirements: *70244006330920
|
168
190
|
- !ruby/object:Gem::Dependency
|
169
191
|
name: mocha
|
170
|
-
requirement: &
|
192
|
+
requirement: &70244006329600 !ruby/object:Gem::Requirement
|
171
193
|
none: false
|
172
194
|
requirements:
|
173
195
|
- - ! '>'
|
@@ -175,7 +197,7 @@ dependencies:
|
|
175
197
|
version: 0.9.11
|
176
198
|
type: :development
|
177
199
|
prerelease: false
|
178
|
-
version_requirements: *
|
200
|
+
version_requirements: *70244006329600
|
179
201
|
description: Gibbon is a simple API wrapper for interacting with MailChimp API version
|
180
202
|
1.3.
|
181
203
|
email: amromousa@gmail.com
|
@@ -186,8 +208,8 @@ extra_rdoc_files:
|
|
186
208
|
- README.markdown
|
187
209
|
files:
|
188
210
|
- .document
|
211
|
+
- .travis.yml
|
189
212
|
- Gemfile
|
190
|
-
- Gemfile.lock
|
191
213
|
- LICENSE.txt
|
192
214
|
- README.markdown
|
193
215
|
- Rakefile
|
@@ -211,7 +233,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
211
233
|
version: '0'
|
212
234
|
segments:
|
213
235
|
- 0
|
214
|
-
hash:
|
236
|
+
hash: 487392987481492133
|
215
237
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
216
238
|
none: false
|
217
239
|
requirements:
|
data/Gemfile.lock
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
activesupport (3.1.0)
|
5
|
-
multi_json (~> 1.0)
|
6
|
-
archive-tar-minitar (0.5.2)
|
7
|
-
columnize (0.3.2)
|
8
|
-
crack (0.1.8)
|
9
|
-
git (1.2.5)
|
10
|
-
httparty (0.7.8)
|
11
|
-
crack (= 0.1.8)
|
12
|
-
jeweler (1.5.2)
|
13
|
-
bundler (~> 1.0.0)
|
14
|
-
git (>= 1.2.5)
|
15
|
-
rake
|
16
|
-
json (1.5.4)
|
17
|
-
linecache19 (0.5.12)
|
18
|
-
ruby_core_source (>= 0.1.4)
|
19
|
-
mocha (0.9.12)
|
20
|
-
multi_json (1.0.3)
|
21
|
-
rake (0.9.2)
|
22
|
-
rcov (0.9.10)
|
23
|
-
ruby-debug-base19 (0.11.25)
|
24
|
-
columnize (>= 0.3.1)
|
25
|
-
linecache19 (>= 0.5.11)
|
26
|
-
ruby_core_source (>= 0.1.4)
|
27
|
-
ruby-debug19 (0.11.6)
|
28
|
-
columnize (>= 0.3.1)
|
29
|
-
linecache19 (>= 0.5.11)
|
30
|
-
ruby-debug-base19 (>= 0.11.19)
|
31
|
-
ruby_core_source (0.1.5)
|
32
|
-
archive-tar-minitar (>= 0.5.2)
|
33
|
-
shoulda (2.11.3)
|
34
|
-
|
35
|
-
PLATFORMS
|
36
|
-
ruby
|
37
|
-
|
38
|
-
DEPENDENCIES
|
39
|
-
activesupport (>= 3.0.0)
|
40
|
-
bundler (~> 1.0.0)
|
41
|
-
httparty (> 0.6.0)
|
42
|
-
jeweler (~> 1.5.1)
|
43
|
-
json (> 1.4.0)
|
44
|
-
mocha (> 0.9.11)
|
45
|
-
rcov
|
46
|
-
ruby-debug19
|
47
|
-
shoulda
|