facebook_ads 0.1.5 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +23 -0
  4. data/.travis.yml +1 -1
  5. data/Gemfile +4 -5
  6. data/Gemfile.lock +34 -82
  7. data/{README.markdown → README.md} +43 -10
  8. data/Rakefile +6 -0
  9. data/bin/console +15 -1
  10. data/facebook_ads.gemspec +11 -13
  11. data/lib/facebook_ads.rb +11 -7
  12. data/lib/facebook_ads/ad.rb +6 -8
  13. data/lib/facebook_ads/ad_account.rb +65 -54
  14. data/lib/facebook_ads/ad_audience.rb +22 -0
  15. data/lib/facebook_ads/ad_campaign.rb +21 -17
  16. data/lib/facebook_ads/ad_creative.rb +7 -9
  17. data/lib/facebook_ads/ad_image.rb +3 -5
  18. data/lib/facebook_ads/ad_insight.rb +4 -5
  19. data/lib/facebook_ads/ad_product.rb +6 -0
  20. data/lib/facebook_ads/ad_product_catalog.rb +60 -0
  21. data/lib/facebook_ads/ad_product_feed.rb +6 -0
  22. data/lib/facebook_ads/ad_product_set.rb +6 -0
  23. data/lib/facebook_ads/ad_set.rb +9 -11
  24. data/lib/facebook_ads/ad_targeting.rb +19 -21
  25. data/lib/facebook_ads/base.rb +107 -62
  26. data/test/ad_account_test.rb +27 -0
  27. data/test/ad_campaign_test.rb +32 -0
  28. data/test/ad_creative_test.rb +7 -0
  29. data/test/ad_image_test.rb +27 -0
  30. data/test/ad_insight_test.rb +7 -0
  31. data/test/ad_product_catalog_test.rb +28 -0
  32. data/test/ad_product_feed_test.rb +7 -0
  33. data/test/ad_product_set_test.rb +7 -0
  34. data/test/ad_product_test.rb +22 -0
  35. data/test/ad_set_test.rb +7 -0
  36. data/test/ad_targeting_test.rb +7 -0
  37. data/test/ad_test.rb +7 -0
  38. data/test/facebook_ads_test.rb +8 -0
  39. data/test/test_helper.rb +64 -0
  40. data/test/vcr_cassettes/AdAccountTest-test_all.yml +70 -0
  41. data/test/vcr_cassettes/AdAccountTest-test_applications.yml +130 -0
  42. data/test/vcr_cassettes/AdAccountTest-test_find_by.yml +71 -0
  43. data/test/vcr_cassettes/AdCampaignTest-test_create.yml +295 -0
  44. data/test/vcr_cassettes/AdCampaignTest-test_list.yml +133 -0
  45. data/test/vcr_cassettes/AdImageTest-test_create.yml +2963 -0
  46. data/test/vcr_cassettes/AdImageTest-test_list.yml +137 -0
  47. data/test/vcr_cassettes/AdProductCatalogTest-test_all.yml +60 -0
  48. data/test/vcr_cassettes/AdProductCatalogTest-test_create.yml +256 -0
  49. data/test/vcr_cassettes/AdProductTest-test_list.yml +130 -0
  50. metadata +44 -49
  51. data/spec/ad_account_spec.rb +0 -78
  52. data/spec/ad_campaign_spec.rb +0 -13
  53. data/spec/ad_creative_spec.rb +0 -14
  54. data/spec/ad_image_spec.rb +0 -11
  55. data/spec/ad_insight_spec.rb +0 -11
  56. data/spec/ad_set_spec.rb +0 -13
  57. data/spec/ad_spec.rb +0 -13
  58. data/spec/ad_targeting_spec.rb +0 -4
  59. data/spec/spec_helper.rb +0 -15
  60. data/spec/support/fixtures.sh +0 -17
  61. data/spec/support/fixtures/6057330925170.json +0 -1
  62. data/spec/support/fixtures/6057810634370.json +0 -1
  63. data/spec/support/fixtures/6057810946970.json +0 -1
  64. data/spec/support/fixtures/6057824295570.json +0 -1
  65. data/spec/support/fixtures/act_861827983860489.json +0 -1
  66. data/spec/support/fixtures/act_861827983860489/adcreatives.json +0 -1
  67. data/spec/support/fixtures/act_861827983860489/adimages.json +0 -1
  68. data/spec/support/fixtures/act_861827983860489/ads.json +0 -1
  69. data/spec/support/fixtures/act_861827983860489/adsets.json +0 -1
  70. data/spec/support/fixtures/act_861827983860489/campaigns.json +0 -1
  71. data/spec/support/fixtures/me/adaccounts.json +0 -1
  72. data/spec/support/rack_facebook.rb +0 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 54f327543c28ab824b5defb8dfedaa8559579c8c
4
- data.tar.gz: f38f4804345dcd76a557caee36f32dd290b24cf2
3
+ metadata.gz: f8117b9273b5c021539acebd28147725fc64aa5b
4
+ data.tar.gz: 9896c67db75495e96eddcce3e0a26740223fd1a4
5
5
  SHA512:
6
- metadata.gz: 99a0f3b2ef4e464b0a8ed19a632359031a5b25f4aa6e7f7e322741ea7e033bfc93636d7b8be1fa01f69d9bdbaa90dee2335f63166fe66d4c81990ba90fdb4889
7
- data.tar.gz: 9dcee742fa347d78707f29fc3318b95eb2df13efe8c7d01b98c10b0be0e0f26902b8a1aa4e89e6f56293a16782ce141f16c32bcac02acb9519dbba10a42a8f74
6
+ metadata.gz: 30e04d2e719a14ba63d7886acb557d05061f997e00d09fe0b566af53d772867b4f3100c944c7bc3e7db0ad220225ee42502f0afa6385c158c6b5a399bffbe069
7
+ data.tar.gz: 167e49f93ac8c9d18cf13aa2b753a3b57795aabd172030490baabdf9fd61df2b2ab99a2b85f322a905be33dca78b926d44affc1f916534f9a9564636cb8c5764
data/.gitignore CHANGED
@@ -1,3 +1,5 @@
1
1
  .DS_Store
2
2
  test_access_token
3
+ test_business_id
3
4
  coverage
5
+ *.gem
data/.rubocop.yml ADDED
@@ -0,0 +1,23 @@
1
+ AllCops:
2
+ Exclude:
3
+ - bin/console
4
+ TargetRubyVersion: 2.2
5
+
6
+ Metrics/AbcSize:
7
+ Enabled: false
8
+ Metrics/CyclomaticComplexity:
9
+ Enabled: false
10
+ Metrics/PerceivedComplexity:
11
+ Enabled: false
12
+
13
+ Metrics/LineLength:
14
+ Enabled: false
15
+ Metrics/ClassLength:
16
+ Enabled: false
17
+ Metrics/MethodLength:
18
+ Enabled: false
19
+ Metrics/ParameterLists:
20
+ Enabled: false
21
+
22
+ Style/Documentation:
23
+ Enabled: false
data/.travis.yml CHANGED
@@ -5,4 +5,4 @@ branches:
5
5
  only:
6
6
  - master
7
7
  cache: bundler
8
- script: bundle exec rspec spec
8
+ script: bundle exec rake test
data/Gemfile CHANGED
@@ -2,15 +2,14 @@ source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
4
  group :development do
5
- gem 'bundler', '~> 1.7'
6
- gem 'rake', '~> 10.0'
7
5
  gem 'pry', '~> 0.10'
8
6
  gem 'awesome_print', '~> 1.7'
9
7
  end
10
8
 
11
9
  group :test do
12
- gem 'rspec', '~> 3.4'
13
- gem 'webmock', '~> 2.1'
14
- gem 'sinatra', '~> 1.4'
10
+ gem 'rake'
11
+ gem 'minitest'
12
+ gem 'webmock'
13
+ gem 'vcr'
15
14
  gem 'coveralls', require: false
16
15
  end
data/Gemfile.lock CHANGED
@@ -1,129 +1,81 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- facebook_ads (0.1.5)
5
- activesupport (~> 4.2)
4
+ facebook_ads (0.1.7)
6
5
  hashie (~> 3.4)
7
- httmultiparty (~> 0.3)
6
+ rest-client (>= 1.6)
8
7
 
9
8
  GEM
10
9
  remote: https://rubygems.org/
11
10
  specs:
12
- activesupport (4.2.7.1)
13
- i18n (~> 0.7)
14
- json (~> 1.7, >= 1.7.7)
15
- minitest (~> 5.1)
16
- thread_safe (~> 0.3, >= 0.3.4)
17
- tzinfo (~> 1.1)
18
- addressable (2.4.0)
11
+ addressable (2.5.0)
12
+ public_suffix (~> 2.0, >= 2.0.2)
19
13
  awesome_print (1.7.0)
20
14
  coderay (1.1.1)
21
- coveralls (0.8.10)
22
- json (~> 1.8)
23
- rest-client (>= 1.6.8, < 2)
24
- simplecov (~> 0.11.0)
15
+ coveralls (0.8.17)
16
+ json (>= 1.8, < 3)
17
+ simplecov (~> 0.12.0)
25
18
  term-ansicolor (~> 1.3)
26
19
  thor (~> 0.19.1)
27
- tins (~> 1.6.0)
20
+ tins (~> 1.6)
28
21
  crack (0.4.3)
29
22
  safe_yaml (~> 1.0.0)
30
- diff-lcs (1.2.5)
31
23
  docile (1.1.5)
32
- domain_name (0.5.20160310)
24
+ domain_name (0.5.20161129)
33
25
  unf (>= 0.0.5, < 1.0.0)
34
- ffi (1.9.14-java)
35
- hashdiff (0.3.0)
36
- hashie (3.4.4)
37
- httmultiparty (0.3.16)
38
- httparty (>= 0.7.3)
39
- mimemagic
40
- multipart-post
41
- http-cookie (1.0.2)
26
+ hashdiff (0.3.2)
27
+ hashie (3.4.6)
28
+ http-cookie (1.0.3)
42
29
  domain_name (~> 0.5)
43
- httparty (0.14.0)
44
- multi_xml (>= 0.5.2)
45
- i18n (0.7.0)
46
- json (1.8.3)
30
+ json (2.0.2)
47
31
  method_source (0.8.2)
48
- mime-types (2.99.1)
49
- mimemagic (0.3.2)
50
- minitest (5.9.0)
51
- multi_xml (0.5.5)
52
- multipart-post (2.0.0)
32
+ mime-types (3.1)
33
+ mime-types-data (~> 3.2015)
34
+ mime-types-data (3.2016.0521)
35
+ minitest (5.10.1)
53
36
  netrc (0.11.0)
54
37
  pry (0.10.4)
55
38
  coderay (~> 1.1.0)
56
39
  method_source (~> 0.8.1)
57
40
  slop (~> 3.4)
58
- pry (0.10.4-java)
59
- coderay (~> 1.1.0)
60
- method_source (~> 0.8.1)
61
- slop (~> 3.4)
62
- spoon (~> 0.0)
63
- rack (1.6.0)
64
- rack-protection (1.5.3)
65
- rack
66
- rake (10.5.0)
67
- rest-client (1.8.0)
41
+ public_suffix (2.0.4)
42
+ rake (12.0.0)
43
+ rest-client (2.0.0)
68
44
  http-cookie (>= 1.0.2, < 2.0)
69
- mime-types (>= 1.16, < 3.0)
70
- netrc (~> 0.7)
71
- rspec (3.4.0)
72
- rspec-core (~> 3.4.0)
73
- rspec-expectations (~> 3.4.0)
74
- rspec-mocks (~> 3.4.0)
75
- rspec-core (3.4.4)
76
- rspec-support (~> 3.4.0)
77
- rspec-expectations (3.4.0)
78
- diff-lcs (>= 1.2.0, < 2.0)
79
- rspec-support (~> 3.4.0)
80
- rspec-mocks (3.4.1)
81
- diff-lcs (>= 1.2.0, < 2.0)
82
- rspec-support (~> 3.4.0)
83
- rspec-support (3.4.1)
45
+ mime-types (>= 1.16, < 4.0)
46
+ netrc (~> 0.8)
84
47
  safe_yaml (1.0.4)
85
- simplecov (0.11.1)
48
+ simplecov (0.12.0)
86
49
  docile (~> 1.1.0)
87
- json (~> 1.8)
50
+ json (>= 1.8, < 3)
88
51
  simplecov-html (~> 0.10.0)
89
52
  simplecov-html (0.10.0)
90
- sinatra (1.4.5)
91
- rack (~> 1.4)
92
- rack-protection (~> 1.4)
93
- tilt (~> 1.3, >= 1.3.4)
94
53
  slop (3.6.0)
95
- spoon (0.0.4)
96
- ffi
97
- term-ansicolor (1.3.2)
54
+ term-ansicolor (1.4.0)
98
55
  tins (~> 1.0)
99
- thor (0.19.1)
100
- thread_safe (0.3.5)
101
- tilt (1.4.1)
102
- tins (1.6.0)
103
- tzinfo (1.2.2)
104
- thread_safe (~> 0.1)
56
+ thor (0.19.4)
57
+ tins (1.13.0)
105
58
  unf (0.1.4)
106
59
  unf_ext
107
60
  unf_ext (0.0.7.2)
108
- webmock (2.1.0)
61
+ vcr (3.0.3)
62
+ webmock (2.3.1)
109
63
  addressable (>= 2.3.6)
110
64
  crack (>= 0.3.2)
111
65
  hashdiff
112
66
 
113
67
  PLATFORMS
114
- java
115
68
  ruby
116
69
 
117
70
  DEPENDENCIES
118
71
  awesome_print (~> 1.7)
119
- bundler (~> 1.7)
120
72
  coveralls
121
73
  facebook_ads!
74
+ minitest
122
75
  pry (~> 0.10)
123
- rake (~> 10.0)
124
- rspec (~> 3.4)
125
- sinatra (~> 1.4)
126
- webmock (~> 2.1)
76
+ rake
77
+ vcr
78
+ webmock
127
79
 
128
80
  BUNDLED WITH
129
- 1.12.5
81
+ 1.13.6
@@ -2,13 +2,13 @@
2
2
  [![Build Status](https://travis-ci.org/cte/facebook-ads-sdk-ruby.svg?branch=master)](https://travis-ci.org/cte/facebook-ads-sdk-ruby)
3
3
  [![Coverage Status](https://coveralls.io/repos/github/cte/facebook-ads-sdk-ruby/badge.svg)](https://coveralls.io/github/cte/facebook-ads-sdk-ruby)
4
4
 
5
- ## [Facebook Marketing API](https://developers.facebook.com/docs/marketing-apis) SDK for Ruby
5
+ # [Facebook Marketing API](https://developers.facebook.com/docs/marketing-apis) SDK for Ruby
6
6
 
7
7
  ![Facebook Ads](http://i.imgur.com/GrxAj07.png)
8
8
 
9
9
  This gem allows you to manage your Facebook Ads using a ruby interface. It allows you to list, create, update and destroy Facebook Ad objects (campaigns, ad sets, ads, etc) and get real-time insights about the performance of Facebook Ads.
10
10
 
11
- ### Install
11
+ ## Install
12
12
 
13
13
  ```bash
14
14
  gem install facebook_ads
@@ -20,7 +20,7 @@ Or, add the following to your Gemfile:
20
20
  gem 'facebook_ads', '~> 0.1'
21
21
  ```
22
22
 
23
- ### Permissions
23
+ ## Permissions
24
24
 
25
25
  You'll need an [Access Token](https://developers.facebook.com/docs/marketing-api/authentication) with `ads_management` permissions in order to use Facebook's Marketing API.
26
26
 
@@ -28,7 +28,7 @@ You'll need an [Access Token](https://developers.facebook.com/docs/marketing-api
28
28
  FacebookAds.access_token = '[YOUR_ACCESS_TOKEN]'
29
29
  ```
30
30
 
31
- ### Console
31
+ ## Console
32
32
 
33
33
  This gem provides a console using [Pry](https://github.com/pry/pry) and [AwesomePrint](https://github.com/awesome-print/awesome_print) for you to test & debug.
34
34
  It reads the Access Token from a file called test_access_token.
@@ -38,7 +38,7 @@ echo [YOUR_ACCESS_TOKEN] > test_access_token
38
38
  bin/console
39
39
  ```
40
40
 
41
- ### Usage Examples
41
+ ## Usage Examples
42
42
 
43
43
  A strong understanding of the Facebook Ads [object structure](https://developers.facebook.com/docs/marketing-api/buying-api) will greatly help you use this gem.
44
44
 
@@ -60,6 +60,8 @@ The typical flow is as follows:
60
60
 
61
61
  You'll find usage examples for each of these 7 objects below.
62
62
 
63
+ ___
64
+
63
65
  ### [Ad Accounts](https://developers.facebook.com/docs/marketing-api/reference/ad-account) (Fetch, Find, Update)
64
66
 
65
67
  Fetch all accounts that can be accessed using your access token:
@@ -86,6 +88,8 @@ account.update(name: 'ReFuel4') # Returns a boolean.
86
88
 
87
89
  The list of fields that can be updated is [here](https://developers.facebook.com/docs/marketing-api/reference/ad-account#Updating).
88
90
 
91
+ ___
92
+
89
93
  ### [Ad Campaigns](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign-group) (Fetch, Find, Create, Update, Destroy)
90
94
 
91
95
  Fetch all active campaigns:
@@ -132,6 +136,8 @@ Destroy a campaign:
132
136
  campaign.destroy
133
137
  ```
134
138
 
139
+ ___
140
+
135
141
  ### [Ad Images](https://developers.facebook.com/docs/marketing-api/reference/ad-image) (Fetch, Find, Create, Destroy)
136
142
 
137
143
  Notes:
@@ -164,6 +170,8 @@ Destroy images:
164
170
  ad_images.map(&:destroy)
165
171
  ```
166
172
 
173
+ ___
174
+
167
175
  ### [Ad Creatives](https://developers.facebook.com/docs/marketing-api/reference/ad-creative) (Fetch, Find, Create, Update, Destroy)
168
176
 
169
177
  Notes:
@@ -224,6 +232,8 @@ Destroy a creative:
224
232
  ad_creative.destroy
225
233
  ```
226
234
 
235
+ ___
236
+
227
237
  ### [Ad Sets](https://developers.facebook.com/docs/marketing-api/reference/ad-campaign) (Fetch, Find, Create, Update, Destroy)
228
238
 
229
239
  Notes:
@@ -273,12 +283,14 @@ ad_set = campaign.create_ad_set(
273
283
  object_store_url: 'http://play.google.com/store/apps/details?id=com.tophatter',
274
284
  custom_event_type: 'PURCHASE'
275
285
  },
276
- optimization_goal: 'OFFSITE_CONVERSIONS', # See FacebookAds::AdSet::OPTIMIZATION_GOALS.
286
+ optimization_goal: 'OFFSITE_CONVERSIONS',
277
287
  daily_budget: 500, # This is in cents, so the daily budget here is $5.
278
- billing_event: 'IMPRESSIONS', # See FacebookAds::AdSet::BILLING_EVENTS for a list of all billing events.
288
+ billing_event: 'IMPRESSIONS',
279
289
  status: 'PAUSED'
280
290
  )
281
291
  ```
292
+ See FacebookAds::AdSet::OPTIMIZATION_GOALS for a list of all optimization goals.
293
+ See FacebookAds::AdSet::BILLING_EVENTS for a list of all billing events.
282
294
 
283
295
  Find an ad set by ID:
284
296
  ```ruby
@@ -299,6 +311,8 @@ Destroy an ad set:
299
311
  ad_set.destroy
300
312
  ```
301
313
 
314
+ ___
315
+
302
316
  ### [Ads](https://developers.facebook.com/docs/marketing-api/reference/adgroup) (Fetch, Find, Create, Update, Destroy)
303
317
 
304
318
  You interact with ads via an ad set:
@@ -351,6 +365,8 @@ Destroy an ad:
351
365
  ad.destroy
352
366
  ```
353
367
 
368
+ ___
369
+
354
370
  ### [Ad Insights](https://developers.facebook.com/docs/marketing-api/insights/overview) (Fetch)
355
371
 
356
372
  Fetch today's insights for an account:
@@ -373,8 +389,25 @@ Fetch yesterday's insights for a campaign:
373
389
  account.ad_campaigns.last.ad_insights(range: Date.yesterday..Date.yesterday)
374
390
  ```
375
391
 
376
- ### @TODO:
392
+ ___
393
+
394
+ ### [Product Catalogs](https://developers.facebook.com/docs/marketing-api/reference/product-catalog)
395
+
396
+ List all product catalogs:
397
+ ```ruby
398
+ FacebookAds::AdProductCatalog.all
399
+ ```
400
+
401
+ Create a new product catalog:
402
+ ```ruby
403
+ catalog = FacebookAds::AdProductCatalog.create(name: 'test')
404
+ ```
405
+
406
+ Delete a product catalog:
407
+ ```ruby
408
+ catalog.destroy
409
+ ```
410
+
411
+ ## @TODO:
377
412
 
378
- * Unit tests (add rspec - need to build out the tests now).
379
413
  * [Batch operations](https://developers.facebook.com/docs/marketing-api/batch-requests).
380
- * Upgrade to [2.7](https://developers.facebook.com/docs/marketing-api/versions).
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require 'rake/testtask'
2
+
3
+ Rake::TestTask.new do |t|
4
+ t.libs << 'test'
5
+ t.pattern = 'test/*_test.rb'
6
+ end
data/bin/console CHANGED
@@ -5,7 +5,21 @@ require 'facebook_ads'
5
5
  require 'awesome_print'
6
6
  require 'pry'
7
7
 
8
- FacebookAds.access_token = File.read('test_access_token').squish
8
+ begin
9
+ FacebookAds.access_token = File.read('test_access_token').chop
10
+ puts "access_token: #{FacebookAds.access_token}"
11
+ rescue Errno::ENOENT
12
+ puts 'Create a test_access_token file and add your Access Token to it.'
13
+ exit
14
+ end
15
+
16
+ begin
17
+ FacebookAds.business_id = File.read('test_business_id').chop
18
+ puts "business_id: #{FacebookAds.business_id}"
19
+ rescue Errno::ENOENT
20
+ puts 'Create a test_business_id file and add your Business ID to it.'
21
+ end
22
+
9
23
  FacebookAds.logger = Logger.new(STDOUT)
10
24
  FacebookAds.logger.level = Logger::Severity::DEBUG
11
25
 
data/facebook_ads.gemspec CHANGED
@@ -1,26 +1,24 @@
1
1
  # To release a new version:
2
2
  # gem build facebook_ads.gemspec
3
- # gem push facebook_ads-0.1.5.gem
3
+ # gem push facebook_ads-0.1.7.gem
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'facebook_ads'
6
- s.version = '0.1.5'
6
+ s.version = '0.1.7'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.licenses = ['MIT']
9
9
  s.authors = ['Chris Estreich']
10
10
  s.email = 'cestreich@gmail.com'
11
- s.homepage = 'https://github.com/cte/facebook-ads-sdk-ruby'
12
- s.summary = "Facebook Marketing API SDK for Ruby."
13
- s.description = "This gem allows to easily manage your Facebook ads via Facebook's Marketing API in ruby."
14
-
15
- s.extra_rdoc_files = ['README.markdown']
16
-
11
+ s.homepage = 'https://github.com/cte/facebook-ruby-ads-sdk'
12
+ s.summary = 'Facebook Marketing API SDK for Ruby.'
13
+ s.description = "This gem allows to easily manage your Facebook ads via \
14
+ Facebook's Marketing API in ruby."
15
+ s.extra_rdoc_files = ['README.md']
17
16
  s.files = `git ls-files`.split("\n")
18
- s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map do |f|
18
+ File.basename(f)
19
+ end
19
20
  s.require_paths = ['lib']
20
-
21
21
  s.required_ruby_version = '~> 2.0'
22
-
23
- s.add_dependency 'activesupport', '~> 4.2'
24
- s.add_dependency 'httmultiparty', '~> 0.3'
22
+ s.add_dependency 'rest-client', '>= 1.6'
25
23
  s.add_dependency 'hashie', '~> 3.4'
26
24
  end