fb_graph 2.1.0.alpha → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -1,5 +1,4 @@
1
1
  rvm:
2
- - 1.8.6
3
2
  - 1.8.7
4
3
  - 1.9.2
5
4
  - 1.9.3
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fb_graph (2.0.2)
4
+ fb_graph (2.1.0.alpha)
5
5
  httpclient (>= 2.2.0.2)
6
6
  rack-oauth2 (>= 0.8.0)
7
7
 
@@ -41,7 +41,6 @@ GEM
41
41
  jruby-openssl (0.7.4)
42
42
  bouncy-castle-java
43
43
  json (1.5.4)
44
- json (1.5.4-java)
45
44
  multi_json (1.0.3)
46
45
  rack (1.3.2)
47
46
  rack-cache (1.0.3)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.0.alpha
1
+ 2.1.0
@@ -1,6 +1,7 @@
1
1
  module FbGraph
2
2
  class AdAccount < Node
3
3
  include Connections::AdCampaigns
4
+ include Connections::AdGroups
4
5
 
5
6
  attr_accessor :account_id, :name, :account_status, :daily_spend_limit, :users, :currency, :timezone_id, :timezone_name, :capabilities, :account_groups
6
7
 
@@ -1,5 +1,7 @@
1
1
  module FbGraph
2
2
  class AdCampaign < Node
3
+ include Connections::AdGroups
4
+
3
5
  attr_accessor :campaign_id, :account_id, :name, :start_time, :end_time, :daily_budget, :campaign_status, :lifetime_budget
4
6
 
5
7
  def initialize(identifier, attributes = {})
@@ -0,0 +1,22 @@
1
+ module FbGraph
2
+ class AdGroup < Node
3
+ attr_accessor :ad_id, :campaign_id, :name, :adgroup_status, :bid_type, :max_bid, :adgroup_id, :end_time, :start_time, :updated_time
4
+
5
+ def initialize(identifier, attributes = {})
6
+ super
7
+
8
+ %w(ad_id campaign_id name adgroup_status bid_type max_bid adgroup_id).each do |field|
9
+ send("#{field}=", attributes[field.to_sym])
10
+ end
11
+
12
+ %w(start_time end_time updated_time).each do |field|
13
+ if val = attributes[field.to_sym]
14
+ # Handles integer timestamps and ISO8601 strings
15
+ time = Time.parse(val) rescue Time.at(val.to_i)
16
+ send("#{field}=", time)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+
@@ -0,0 +1,24 @@
1
+ module FbGraph
2
+ module Connections
3
+ module AdGroups
4
+ def ad_groups(options = {})
5
+ ad_groups = self.connection(:adgroups, options)
6
+ ad_groups.map! do |ad_group|
7
+ AdGroup.new(ad_group[:id], ad_group.merge(
8
+ :access_token => options[:access_token] || self.access_token
9
+ ))
10
+ end
11
+ end
12
+
13
+ # Note: AdGroups can only be created via the AdAccount connection. Even though it makes sense, they
14
+ # cannot be created via the AdCampaign connection
15
+ def ad_group!(options = {})
16
+ ad_group = post(options.merge(:connection => :adgroups))
17
+ AdGroup.new(ad_group[:id], options.merge(ad_group).merge(
18
+ :access_token => options[:access_token] || self.access_token
19
+ ))
20
+ end
21
+ end
22
+ end
23
+ end
24
+
data/lib/fb_graph.rb CHANGED
@@ -56,6 +56,7 @@ require 'fb_graph/work'
56
56
  require 'fb_graph/node'
57
57
  require 'fb_graph/ad_account'
58
58
  require 'fb_graph/ad_campaign'
59
+ require 'fb_graph/ad_group'
59
60
  require 'fb_graph/album'
60
61
  require 'fb_graph/app_request'
61
62
  require 'fb_graph/application'
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe FbGraph::AdGroup, '.new' do
4
+ attr_accessor :ad_id, :campaign_id, :name, :adgroup_status, :bid_type, :max_bid, :adgroup_id, :end_time, :start_time, :updated_time
5
+ it 'should setup all supported attributes' do
6
+ attributes = {
7
+ :id => '6003590469668',
8
+ :ad_id => 6003590469668,
9
+ :campaign_id => 6003590468467,
10
+ :name => 'Ad Group 1',
11
+ :adgroup_status => 1,
12
+ :bid_type => 1,
13
+ :max_bid => 1000,
14
+ :adgroup_id => 6003590469668,
15
+ :end_time => "2011-09-10T00:00:00+00:00",
16
+ :start_time => "2011-09-01T12:00:00-07:00",
17
+ :updated_time => "2011-09-04T16:00:00+00:00"
18
+ }
19
+ ad_group = FbGraph::AdGroup.new(attributes.delete(:id), attributes)
20
+ ad_group.identifier.should == "6003590469668"
21
+ ad_group.ad_id.should == 6003590469668
22
+ ad_group.campaign_id.should == 6003590468467
23
+ ad_group.name.should == "Ad Group 1"
24
+ ad_group.adgroup_status.should == 1
25
+ ad_group.bid_type.should == 1
26
+ ad_group.max_bid.should == 1000
27
+ ad_group.adgroup_id.should == 6003590469668
28
+ ad_group.end_time.should == Time.parse("2011-09-10T00:00:00+00:00")
29
+ ad_group.start_time.should == Time.parse("2011-09-01T12:00:00-07:00")
30
+ ad_group.updated_time.should == Time.parse("2011-09-04T16:00:00+00:00")
31
+ end
32
+ end
33
+
34
+
35
+ describe FbGraph::AdGroup, '.fetch' do
36
+ it 'should get the ad group' do
37
+ mock_graph :get, '6003590469668', 'ad_groups/test_ad_group', :access_token => 'access_token' do
38
+ ad_group = FbGraph::AdGroup.fetch('6003590469668', :access_token => 'access_token')
39
+
40
+ ad_group.identifier.should == "6003590469668"
41
+ ad_group.ad_id.should == 6003590469668
42
+ ad_group.campaign_id.should == 6003590468467
43
+ ad_group.name.should == "Ad Group 1"
44
+ ad_group.adgroup_status.should == 1
45
+ ad_group.bid_type.should == 1
46
+ ad_group.max_bid.should == 1000
47
+ ad_group.adgroup_id.should == 6003590469668
48
+ ad_group.end_time.should == Time.parse("2011-09-10T00:00:00+00:00")
49
+ ad_group.start_time.should == Time.parse("2011-09-01T12:00:00-07:00")
50
+ ad_group.updated_time.should == Time.parse("2011-09-04T16:00:00+00:00")
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe FbGraph::Connections::AdGroups, '#ad_groups' do
4
+ context 'when included by FbGraph::AdCampaign' do
5
+ context 'when access_token is given' do
6
+ it 'should return ad_groups as FbGraph::AdGroup' do
7
+ mock_graph :get, '22334455/adgroups', 'ad_campaigns/ad_groups/22334455_ad_groups', :access_token => 'access_token' do
8
+ ad_groups = FbGraph::AdCampaign.new('22334455', :access_token => 'access_token').ad_groups
9
+ ad_groups.first.should == FbGraph::AdGroup.new(
10
+ 44556677,
11
+ :access_token => 'access_token',
12
+ :ad_id => 44556677,
13
+ :campaign_id => 22334455,
14
+ :name => "Test Ad Group 1",
15
+ :adgroup_status => 1,
16
+ :bid_type => 1,
17
+ :max_bid => 150,
18
+ :adgroup_id => 44556677,
19
+ :end_time => Time.parse("2011-09-01T00:00:00+00:00"),
20
+ :start_time => Time.parse("2011-09-10T00:00:00+00:00"),
21
+ :updated_time => Time.parse("2011-09-05T00:00:00+00:00")
22
+ )
23
+ ad_groups.each { |ad_group| ad_group.should be_instance_of(FbGraph::AdGroup) }
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ describe FbGraph::Connections::AdGroups, '#ad_group!' do
31
+ context 'when included by FbGraph::AdAccount' do
32
+ it 'should return generated ad_group' do
33
+ mock_graph :post, 'act_22334455/adgroups', 'ad_accounts/ad_groups/post_with_valid_access_token' do
34
+ ad_group = FbGraph::AdAccount.new('act_22334455', :access_token => 'valid').ad_group!(
35
+ :name => "Test Ad 1",
36
+ :campaign_id => 66778899,
37
+ :bid_type => 1,
38
+ :max_bid => 100,
39
+ :start_time => Time.parse("2011-09-10T12:00:00+00:00"),
40
+ :end_time => Time.parse("2011-09-20T16:00:00-04:00")
41
+ )
42
+
43
+ ad_group.identifier.should == 112233445566
44
+ ad_group.campaign_id.should == 66778899
45
+ ad_group.name.should == "Test Ad 1"
46
+ ad_group.bid_type.should == 1
47
+ ad_group.max_bid.should == 100
48
+ ad_group.start_time.should == Time.parse("2011-09-10T12:00:00+00:00")
49
+ ad_group.end_time.should == Time.parse("2011-09-20T16:00:00-04:00")
50
+ end
51
+ end
52
+ end
53
+ end
54
+
@@ -0,0 +1,23 @@
1
+ {
2
+ "data":[
3
+ {
4
+ "id": 44556677,
5
+ "adgroup_id": 44556677,
6
+ "access_token": "access_token",
7
+ "ad_id": 44556677,
8
+ "campaign_id": 22334455,
9
+ "name": "Test Ad Group 1",
10
+ "adgroup_status": 1,
11
+ "bid_type": 1,
12
+ "max_bid": 150,
13
+ "adgroup_id": 44556677,
14
+ "end_time": "2011-09-01T00:00:00+0000",
15
+ "start_time": "2011-09-10T00:00:00+0000",
16
+ "updated_time": "2011-09-05T00:00:00+0000"
17
+ }
18
+ ],
19
+ "count": 1,
20
+ "limit": 500,
21
+ "offset": 0,
22
+ "include_deleted": null
23
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "6003590469668",
3
+ "ad_id": 6003590469668,
4
+ "campaign_id":6003590468467,
5
+ "name": "Ad Group 1",
6
+ "adgroup_status": 1,
7
+ "bid_type": 1,
8
+ "max_bid": 1000,
9
+ "adgroup_id": 6003590469668,
10
+ "end_time": "2011-09-10T00:00:00+00:00",
11
+ "start_time": "2011-09-01T12:00:00-07:00",
12
+ "updated_time": "2011-09-04T16:00:00+00:00"
13
+ }
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fb_graph
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: 6
5
- version: 2.1.0.alpha
4
+ hash: 11
5
+ prerelease:
6
+ segments:
7
+ - 2
8
+ - 1
9
+ - 0
10
+ version: 2.1.0
6
11
  platform: ruby
7
12
  authors:
8
13
  - nov matake
@@ -10,7 +15,7 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-09-03 00:00:00 Z
18
+ date: 2011-09-07 00:00:00 Z
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: httpclient
@@ -20,6 +25,12 @@ dependencies:
20
25
  requirements:
21
26
  - - ">="
22
27
  - !ruby/object:Gem::Version
28
+ hash: 123
29
+ segments:
30
+ - 2
31
+ - 2
32
+ - 0
33
+ - 2
23
34
  version: 2.2.0.2
24
35
  type: :runtime
25
36
  version_requirements: *id001
@@ -31,6 +42,11 @@ dependencies:
31
42
  requirements:
32
43
  - - ">="
33
44
  - !ruby/object:Gem::Version
45
+ hash: 63
46
+ segments:
47
+ - 0
48
+ - 8
49
+ - 0
34
50
  version: 0.8.0
35
51
  type: :runtime
36
52
  version_requirements: *id002
@@ -42,6 +58,10 @@ dependencies:
42
58
  requirements:
43
59
  - - ">="
44
60
  - !ruby/object:Gem::Version
61
+ hash: 27
62
+ segments:
63
+ - 0
64
+ - 8
45
65
  version: "0.8"
46
66
  type: :development
47
67
  version_requirements: *id003
@@ -53,6 +73,10 @@ dependencies:
53
73
  requirements:
54
74
  - - ">="
55
75
  - !ruby/object:Gem::Version
76
+ hash: 25
77
+ segments:
78
+ - 0
79
+ - 9
56
80
  version: "0.9"
57
81
  type: :development
58
82
  version_requirements: *id004
@@ -64,6 +88,9 @@ dependencies:
64
88
  requirements:
65
89
  - - ">="
66
90
  - !ruby/object:Gem::Version
91
+ hash: 7
92
+ segments:
93
+ - 2
67
94
  version: "2"
68
95
  type: :development
69
96
  version_requirements: *id005
@@ -75,6 +102,11 @@ dependencies:
75
102
  requirements:
76
103
  - - ">="
77
104
  - !ruby/object:Gem::Version
105
+ hash: 11
106
+ segments:
107
+ - 1
108
+ - 6
109
+ - 2
78
110
  version: 1.6.2
79
111
  type: :development
80
112
  version_requirements: *id006
@@ -86,6 +118,11 @@ dependencies:
86
118
  requirements:
87
119
  - - ">="
88
120
  - !ruby/object:Gem::Version
121
+ hash: 11
122
+ segments:
123
+ - 3
124
+ - 0
125
+ - 6
89
126
  version: 3.0.6
90
127
  type: :development
91
128
  version_requirements: *id007
@@ -116,6 +153,7 @@ files:
116
153
  - lib/fb_graph/action.rb
117
154
  - lib/fb_graph/ad_account.rb
118
155
  - lib/fb_graph/ad_campaign.rb
156
+ - lib/fb_graph/ad_group.rb
119
157
  - lib/fb_graph/album.rb
120
158
  - lib/fb_graph/app_request.rb
121
159
  - lib/fb_graph/application.rb
@@ -130,7 +168,8 @@ files:
130
168
  - lib/fb_graph/connections.rb
131
169
  - lib/fb_graph/connections/accounts.rb
132
170
  - lib/fb_graph/connections/activities.rb
133
- - lib/fb_graph/connections/ad_campaign.rb
171
+ - lib/fb_graph/connections/ad_campaigns.rb
172
+ - lib/fb_graph/connections/ad_groups.rb
134
173
  - lib/fb_graph/connections/albums.rb
135
174
  - lib/fb_graph/connections/app_requests.rb
136
175
  - lib/fb_graph/connections/attending.rb
@@ -225,6 +264,7 @@ files:
225
264
  - lib/patch/rack/oauth2/util.rb
226
265
  - spec/fb_graph/ad_account_spec.rb
227
266
  - spec/fb_graph/ad_campaign_spec.rb
267
+ - spec/fb_graph/ad_group_spec.rb
228
268
  - spec/fb_graph/album_spec.rb
229
269
  - spec/fb_graph/app_request_spec.rb
230
270
  - spec/fb_graph/application_spec.rb
@@ -237,6 +277,7 @@ files:
237
277
  - spec/fb_graph/connection_spec.rb
238
278
  - spec/fb_graph/connections/accounts_spec.rb
239
279
  - spec/fb_graph/connections/activities_spec.rb
280
+ - spec/fb_graph/connections/ad_groups_spec.rb
240
281
  - spec/fb_graph/connections/albums_spec.rb
241
282
  - spec/fb_graph/connections/app_requests_spec.rb
242
283
  - spec/fb_graph/connections/attending_spec.rb
@@ -329,8 +370,11 @@ files:
329
370
  - spec/fb_graph/work_spec.rb
330
371
  - spec/fb_graph_spec.rb
331
372
  - spec/helpers/webmock_helper.rb
373
+ - spec/mock_json/ad_accounts/ad_groups/post_with_valid_access_token.json
332
374
  - spec/mock_json/ad_accounts/test_ad_account.json
375
+ - spec/mock_json/ad_campaigns/ad_groups/22334455_ad_groups.json
333
376
  - spec/mock_json/ad_campaigns/test_ad_campaign.json
377
+ - spec/mock_json/ad_groups/test_ad_group.json
334
378
  - spec/mock_json/albums/photos/matake_private.json
335
379
  - spec/mock_json/albums/photos/post_with_valid_access_token.json
336
380
  - spec/mock_json/applications/accounts/private.json
@@ -485,23 +529,30 @@ required_ruby_version: !ruby/object:Gem::Requirement
485
529
  requirements:
486
530
  - - ">="
487
531
  - !ruby/object:Gem::Version
532
+ hash: 3
533
+ segments:
534
+ - 0
488
535
  version: "0"
489
536
  required_rubygems_version: !ruby/object:Gem::Requirement
490
537
  none: false
491
538
  requirements:
492
- - - ">"
539
+ - - ">="
493
540
  - !ruby/object:Gem::Version
494
- version: 1.3.1
541
+ hash: 3
542
+ segments:
543
+ - 0
544
+ version: "0"
495
545
  requirements: []
496
546
 
497
547
  rubyforge_project:
498
- rubygems_version: 1.8.10
548
+ rubygems_version: 1.8.5
499
549
  signing_key:
500
550
  specification_version: 3
501
551
  summary: A full-stack Facebook Graph API wrapper in Ruby.
502
552
  test_files:
503
553
  - spec/fb_graph/ad_account_spec.rb
504
554
  - spec/fb_graph/ad_campaign_spec.rb
555
+ - spec/fb_graph/ad_group_spec.rb
505
556
  - spec/fb_graph/album_spec.rb
506
557
  - spec/fb_graph/app_request_spec.rb
507
558
  - spec/fb_graph/application_spec.rb
@@ -514,6 +565,7 @@ test_files:
514
565
  - spec/fb_graph/connection_spec.rb
515
566
  - spec/fb_graph/connections/accounts_spec.rb
516
567
  - spec/fb_graph/connections/activities_spec.rb
568
+ - spec/fb_graph/connections/ad_groups_spec.rb
517
569
  - spec/fb_graph/connections/albums_spec.rb
518
570
  - spec/fb_graph/connections/app_requests_spec.rb
519
571
  - spec/fb_graph/connections/attending_spec.rb
@@ -606,8 +658,11 @@ test_files:
606
658
  - spec/fb_graph/work_spec.rb
607
659
  - spec/fb_graph_spec.rb
608
660
  - spec/helpers/webmock_helper.rb
661
+ - spec/mock_json/ad_accounts/ad_groups/post_with_valid_access_token.json
609
662
  - spec/mock_json/ad_accounts/test_ad_account.json
663
+ - spec/mock_json/ad_campaigns/ad_groups/22334455_ad_groups.json
610
664
  - spec/mock_json/ad_campaigns/test_ad_campaign.json
665
+ - spec/mock_json/ad_groups/test_ad_group.json
611
666
  - spec/mock_json/albums/photos/matake_private.json
612
667
  - spec/mock_json/albums/photos/post_with_valid_access_token.json
613
668
  - spec/mock_json/applications/accounts/private.json