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 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
- # Add dependencies to develop your gem here.
7
- # Include everything needed to run rake, tests, features, etc.
8
- group :development do
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 "activesupport", ">= 3.0.0"
17
- gem "ruby-debug19", :require => "ruby-debug"
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', '> 3.0.0'
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 'rake/rdoctask'
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.0
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.0"
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-02"
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>, ["> 3.0.0"])
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>, ["> 3.0.0"])
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>, ["> 3.0.0"])
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 (args.class.to_s == "Array")
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.blank? or @api_key !~ /-/) ? '' : "#{@api_key.split("-").last}."
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
- url = export_api_url + method + "/"
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
- response.body.lines
96
+ lines
82
97
  end
83
98
  end
data/test/helper.rb CHANGED
@@ -14,6 +14,3 @@ require 'mocha'
14
14
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
15
15
  $LOAD_PATH.unshift(File.dirname(__FILE__))
16
16
  require 'gibbon'
17
-
18
- class Test::Unit::TestCase
19
- end
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 => {:apikey => @api_key}, :timeout => nil}
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 escape string parameters" do
108
- @param = "list id"
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
- params = {:body => @body.merge(:id => 'list id'), :timeout => nil}
111
- GibbonExport.expects(:post).with(@url + 'sayHello/', params).returns(@returns)
112
- @gibbon.say_hello(:id => @param)
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.0
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-02 00:00:00.000000000Z
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: &70158318240040 !ruby/object:Gem::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: *70158318240040
68
+ version_requirements: *70244006348240
25
69
  - !ruby/object:Gem::Dependency
26
70
  name: bundler
27
- requirement: &70158318239400 !ruby/object:Gem::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: *70158318239400
79
+ version_requirements: *70244006347080
36
80
  - !ruby/object:Gem::Dependency
37
81
  name: jeweler
38
- requirement: &70158318238680 !ruby/object:Gem::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: *70158318238680
90
+ version_requirements: *70244006346020
47
91
  - !ruby/object:Gem::Dependency
48
92
  name: rcov
49
- requirement: &70158318237620 !ruby/object:Gem::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: *70158318237620
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: &70158318235600 !ruby/object:Gem::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: *70158318235600
112
+ version_requirements: *70244006343960
91
113
  - !ruby/object:Gem::Dependency
92
- name: activesupport
93
- requirement: &70158318234720 !ruby/object:Gem::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: 3.0.0
120
+ version: '0'
99
121
  type: :development
100
122
  prerelease: false
101
- version_requirements: *70158318234720
123
+ version_requirements: *70244006343000
102
124
  - !ruby/object:Gem::Dependency
103
- name: ruby-debug19
104
- requirement: &70158318233300 !ruby/object:Gem::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: *70158318233300
134
+ version_requirements: *70244006342180
113
135
  - !ruby/object:Gem::Dependency
114
136
  name: httparty
115
- requirement: &70158318232500 !ruby/object:Gem::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: *70158318232500
145
+ version_requirements: *70244006338500
124
146
  - !ruby/object:Gem::Dependency
125
147
  name: activesupport
126
- requirement: &70158318230780 !ruby/object:Gem::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.0.0
153
+ version: 2.3.14
132
154
  type: :runtime
133
155
  prerelease: false
134
- version_requirements: *70158318230780
156
+ version_requirements: *70244006336360
135
157
  - !ruby/object:Gem::Dependency
136
158
  name: json
137
- requirement: &70158318230220 !ruby/object:Gem::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: *70158318230220
167
+ version_requirements: *70244006333660
146
168
  - !ruby/object:Gem::Dependency
147
169
  name: httparty
148
- requirement: &70158318229540 !ruby/object:Gem::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: *70158318229540
178
+ version_requirements: *70244006332240
157
179
  - !ruby/object:Gem::Dependency
158
180
  name: json
159
- requirement: &70158318228620 !ruby/object:Gem::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: *70158318228620
189
+ version_requirements: *70244006330920
168
190
  - !ruby/object:Gem::Dependency
169
191
  name: mocha
170
- requirement: &70158318227760 !ruby/object:Gem::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: *70158318227760
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: 1602919969016914231
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