zuck 0.2.0 → 1.0.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.
- checksums.yaml +15 -0
- data/.travis.yml +0 -1
- data/CHANGELOG.markdown +12 -1
- data/Gemfile +4 -4
- data/Gemfile.lock +40 -11
- data/README.markdown +6 -6
- data/VERSION +1 -1
- data/lib/zuck/facebook/ad_interest.rb +44 -0
- data/lib/zuck/facebook/targeting_spec.rb +23 -22
- data/spec/fixtures/ad_interest_search_disney.yml +54 -0
- data/spec/fixtures/ad_interest_search_moviepilot.yml +138 -0
- data/spec/fixtures/{ad_keyword_search_nonexistant.yml → ad_interest_search_nonexistant.yml} +12 -12
- data/spec/fixtures/reach_for_invalid_interest.yml +186 -0
- data/spec/fixtures/reach_for_valid_keywords.yml +56 -11
- data/spec/fixtures/reach_for_valid_keywords_male_young.yml +65 -14
- data/spec/lib/zuck/facebook/ad_interest_spec.rb +23 -0
- data/spec/lib/zuck/facebook/targeting_spec_spec.rb +35 -34
- data/zuck.gemspec +24 -23
- metadata +61 -102
- data/lib/zuck/facebook/ad_keyword.rb +0 -45
- data/spec/fixtures/ad_keyword_search_disney.yml +0 -53
- data/spec/fixtures/ad_keyword_search_moviepilot.yml +0 -48
- data/spec/fixtures/reach_for_invalid_keyword.yml +0 -48
- data/spec/lib/zuck/facebook/ad_keyword_spec.rb +0 -23
@@ -4,117 +4,118 @@ describe Zuck::TargetingSpec do
|
|
4
4
|
let(:ad_account){ "2ijdsfoij" }
|
5
5
|
let(:graph){ mock('koala') }
|
6
6
|
|
7
|
-
describe "validating
|
7
|
+
describe "validating interests" do
|
8
8
|
|
9
|
-
let(:
|
10
|
-
let(:
|
9
|
+
let(:valid_interest_result){ [{"name" => "foo", "valid" => true }] }
|
10
|
+
let(:invalid_interest_result){ [{"name" => "sdjf", "valid" => false }] }
|
11
11
|
|
12
12
|
it "escapes commas" do
|
13
|
-
o = {type: '
|
13
|
+
o = {type: 'adinterestvalid', interest_list: ['foo%2Cbar'] }
|
14
14
|
graph.should_receive(:search).with(nil, o).and_return []
|
15
|
-
fts = Zuck::TargetingSpec.new(graph, ad_account,
|
16
|
-
fts.
|
15
|
+
fts = Zuck::TargetingSpec.new(graph, ad_account, interests: 'foo,bar')
|
16
|
+
fts.validate_interest('foo,bar').should == false
|
17
17
|
end
|
18
18
|
|
19
|
-
it "acknowledges valid
|
20
|
-
o = {type: '
|
21
|
-
graph.should_receive(:search).with(nil, o).and_return
|
19
|
+
it "acknowledges valid interests" do
|
20
|
+
o = {type: 'adinterestvalid', interest_list: ['foo'] }
|
21
|
+
graph.should_receive(:search).with(nil, o).and_return valid_interest_result
|
22
|
+
#graph.should_not_receive(:search)
|
22
23
|
fts = Zuck::TargetingSpec.new(graph, ad_account)
|
23
24
|
|
24
|
-
fts.
|
25
|
+
fts.validate_interest('foo').should == true
|
25
26
|
end
|
26
27
|
|
27
|
-
it "refuses invalid
|
28
|
-
o = {type: '
|
29
|
-
graph.should_receive(:search).with(nil, o).and_return
|
28
|
+
it "refuses invalid interests" do
|
29
|
+
o = {type: 'adinterestvalid', interest_list: ['sdjf'] }
|
30
|
+
graph.should_receive(:search).with(nil, o).and_return invalid_interest_result
|
30
31
|
fts = Zuck::TargetingSpec.new(graph, ad_account)
|
31
32
|
|
32
|
-
fts.
|
33
|
+
fts.validate_interest('sdjf').should == false
|
33
34
|
end
|
34
35
|
end
|
35
36
|
|
36
37
|
describe "options given in spec" do
|
37
38
|
it "accepts male as gender" do
|
38
39
|
expect{
|
39
|
-
Zuck::TargetingSpec.new(graph, ad_account, countries: ['US'],
|
40
|
+
Zuck::TargetingSpec.new(graph, ad_account, geo_locations: {countries: ['US']}, interests: ['foo'], gender: 'male')
|
40
41
|
}.to_not raise_error
|
41
42
|
end
|
42
43
|
|
43
44
|
it "accepts male as gender for young people" do
|
44
45
|
expect{
|
45
|
-
Zuck::TargetingSpec.new(graph, ad_account, countries: ['US'],
|
46
|
+
Zuck::TargetingSpec.new(graph, ad_account, geo_locations: {countries: ['US']}, interests: ['foo'], gender: 'male', age_class: 'young')
|
46
47
|
}.to_not raise_error
|
47
48
|
end
|
48
49
|
|
49
50
|
it "accepts male as gender for old people" do
|
50
51
|
expect{
|
51
|
-
Zuck::TargetingSpec.new(graph, ad_account, countries: ['US'],
|
52
|
+
Zuck::TargetingSpec.new(graph, ad_account, geo_locations: {countries: ['US']}, interests: ['foo'], gender: 'male', age_class: 'old')
|
52
53
|
}.to_not raise_error
|
53
54
|
end
|
54
55
|
|
55
56
|
it "accepts without gender" do
|
56
57
|
expect{
|
57
|
-
Zuck::TargetingSpec.new(graph, ad_account, countries: ['US'],
|
58
|
+
Zuck::TargetingSpec.new(graph, ad_account, geo_locations: {countries: ['US']}, interests: ['foo'])
|
58
59
|
}.to_not raise_error
|
59
60
|
end
|
60
61
|
|
61
62
|
it "accepts single keywrod" do
|
62
63
|
expect{
|
63
|
-
Zuck::TargetingSpec.new(graph, ad_account, countries: ['US'],
|
64
|
+
Zuck::TargetingSpec.new(graph, ad_account, geo_locations: {countries: ['US']}, interest: 'foo')
|
64
65
|
}.to_not raise_error
|
65
66
|
end
|
66
67
|
|
67
68
|
it "does not accept invalid genders" do
|
68
69
|
expect{
|
69
|
-
Zuck::TargetingSpec.new(graph, ad_account, countries: ['US'],
|
70
|
+
Zuck::TargetingSpec.new(graph, ad_account, geo_locations: {countries: ['US']}, interests: ['foo'], gender: 'gemale')
|
70
71
|
}.to raise_error("Gender can only be male or female")
|
71
72
|
end
|
72
73
|
|
73
74
|
it "does not accept invalid countries" do
|
74
75
|
expect{
|
75
|
-
z = Zuck::TargetingSpec.new(graph, ad_account, countries: ['XX'],
|
76
|
+
z = Zuck::TargetingSpec.new(graph, ad_account, geo_locations: {countries: ['XX']}, interests: ['foo'], gender: 'female')
|
76
77
|
z.send(:validate_spec)
|
77
78
|
}.to raise_error('Invalid countrie(s): ["XX"]')
|
78
79
|
end
|
79
80
|
|
80
81
|
|
81
|
-
it "does not accept targetings with neither :
|
82
|
+
it "does not accept targetings with neither :interests nor :connections" do
|
82
83
|
expect{
|
83
|
-
ts = Zuck::TargetingSpec.new(graph, ad_account, countries: ['US'], gender: 'female')
|
84
|
+
ts = Zuck::TargetingSpec.new(graph, ad_account, geo_locations: {countries: ['US']}, gender: 'female')
|
84
85
|
ts.fetch_reach
|
85
|
-
}.to raise_error("Need to set :
|
86
|
+
}.to raise_error("Need to set :interests or :connections")
|
86
87
|
end
|
87
88
|
end
|
88
89
|
|
89
90
|
describe "fetching reach" do
|
90
|
-
let(:graph){ Koala::Facebook::API.new(
|
91
|
-
let(:ad_account){ '
|
91
|
+
let(:graph){ Koala::Facebook::API.new('CAAEvJ5vzhl8BAPGZCZCPL4FxryEHXGxPCuCGeqe3PEWIjhIvJ00HB8PPpokFmUkemvmEUHirqdNMc7zIDLSTVnX6jTQjAgSlzcYrAYJRQ32fr6RM5ZAnKPdgFEwN5tgvswatXZAI4vu7ZBAQexRl9MU0CpwW7JDDBZAGo5XDrCKrBxkUUWJUvh') }
|
92
|
+
let(:ad_account){ 'act_1384977038406122' }
|
92
93
|
|
93
|
-
it "bugs out when trying to use an invalid
|
94
|
-
VCR.use_cassette('
|
95
|
-
spec = {countries: ['us'],
|
94
|
+
it "bugs out when trying to use an invalid interest" do
|
95
|
+
VCR.use_cassette('reach_for_invalid_interest') do
|
96
|
+
spec = {geo_locations: {countries: ['us']}, interests: ['Eminem', 'invalidsssssssssssssss'] }
|
96
97
|
ts = Zuck::TargetingSpec.new(graph, ad_account, spec)
|
97
98
|
expect{
|
98
|
-
ts.
|
99
|
+
ts.validate_interests
|
99
100
|
}.to raise_error(Zuck::InvalidKeywordError, 'invalidsssssssssssssss')
|
100
101
|
end
|
101
102
|
end
|
102
103
|
|
103
104
|
it "works without gender or age" do
|
104
105
|
VCR.use_cassette('reach_for_valid_keywords') do
|
105
|
-
spec = {countries: ['us'],
|
106
|
+
spec = {geo_locations: {countries: ['us']}, interests: ['Eminem', 'Sting (Musician)'] }
|
106
107
|
ts = Zuck::TargetingSpec.new(graph, ad_account, spec)
|
107
108
|
reach = ts.fetch_reach
|
108
|
-
reach[:users].should ==
|
109
|
+
reach[:users].should == 28_00_0000
|
109
110
|
end
|
110
111
|
end
|
111
112
|
|
112
113
|
it "works with gender and age" do
|
113
114
|
VCR.use_cassette('reach_for_valid_keywords_male_young') do
|
114
|
-
spec = {countries: ['us'],
|
115
|
+
spec = {geo_locations: {countries: ['us']}, interests: ['Sting (musician)'], gender: :female, age_class: :young }
|
115
116
|
ts = Zuck::TargetingSpec.new(graph, ad_account, spec)
|
116
117
|
reach = ts.fetch_reach
|
117
|
-
reach[:users].should ==
|
118
|
+
reach[:users].should == 74_000
|
118
119
|
end
|
119
120
|
end
|
120
121
|
|
data/zuck.gemspec
CHANGED
@@ -2,14 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: zuck 1.0.0 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
8
|
s.name = "zuck"
|
8
|
-
s.version = "0.
|
9
|
+
s.version = "1.0.0"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
11
13
|
s.authors = ["Jannis Hermanns"]
|
12
|
-
s.date = "
|
14
|
+
s.date = "2014-04-23"
|
13
15
|
s.description = "This gem allows to easily access facebook's ads api in ruby. See https://developers.facebook.com/docs/reference/ads-api/"
|
14
16
|
s.email = "jannis@gmail.com"
|
15
17
|
s.extra_rdoc_files = [
|
@@ -34,7 +36,7 @@ Gem::Specification.new do |s|
|
|
34
36
|
"lib/zuck/facebook/ad_campaign.rb",
|
35
37
|
"lib/zuck/facebook/ad_creative.rb",
|
36
38
|
"lib/zuck/facebook/ad_group.rb",
|
37
|
-
"lib/zuck/facebook/
|
39
|
+
"lib/zuck/facebook/ad_interest.rb",
|
38
40
|
"lib/zuck/facebook/targeting_spec.rb",
|
39
41
|
"lib/zuck/fb_object.rb",
|
40
42
|
"lib/zuck/fb_object/dsl.rb",
|
@@ -49,9 +51,9 @@ Gem::Specification.new do |s|
|
|
49
51
|
"spec/fixtures/a_single_account.yml",
|
50
52
|
"spec/fixtures/a_single_campaign.yml",
|
51
53
|
"spec/fixtures/a_single_group.yml",
|
52
|
-
"spec/fixtures/
|
53
|
-
"spec/fixtures/
|
54
|
-
"spec/fixtures/
|
54
|
+
"spec/fixtures/ad_interest_search_disney.yml",
|
55
|
+
"spec/fixtures/ad_interest_search_moviepilot.yml",
|
56
|
+
"spec/fixtures/ad_interest_search_nonexistant.yml",
|
55
57
|
"spec/fixtures/create_ad_campaign.yml",
|
56
58
|
"spec/fixtures/create_ad_group.yml",
|
57
59
|
"spec/fixtures/delete_ad_group.yml",
|
@@ -61,12 +63,12 @@ Gem::Specification.new do |s|
|
|
61
63
|
"spec/fixtures/list_of_ad_creatives.yml",
|
62
64
|
"spec/fixtures/list_of_ad_groups.yml",
|
63
65
|
"spec/fixtures/list_of_all_ad_creatives_of_account.yml",
|
64
|
-
"spec/fixtures/
|
66
|
+
"spec/fixtures/reach_for_invalid_interest.yml",
|
65
67
|
"spec/fixtures/reach_for_valid_keywords.yml",
|
66
68
|
"spec/fixtures/reach_for_valid_keywords_male_young.yml",
|
67
69
|
"spec/lib/zuck/facebook/ad_account_spec.rb",
|
68
70
|
"spec/lib/zuck/facebook/ad_campaign_spec.rb",
|
69
|
-
"spec/lib/zuck/facebook/
|
71
|
+
"spec/lib/zuck/facebook/ad_interest_spec.rb",
|
70
72
|
"spec/lib/zuck/facebook/targeting_spec_spec.rb",
|
71
73
|
"spec/lib/zuck/fb_object/helpers_spec.rb",
|
72
74
|
"spec/lib/zuck/koala/koala_methods_spec.rb",
|
@@ -78,22 +80,21 @@ Gem::Specification.new do |s|
|
|
78
80
|
]
|
79
81
|
s.homepage = "http://github.com/jayniz/zuck"
|
80
82
|
s.licenses = ["MIT"]
|
81
|
-
s.
|
82
|
-
s.rubygems_version = "1.8.25"
|
83
|
+
s.rubygems_version = "2.2.2"
|
83
84
|
s.summary = "Ruby adapter to facebook's ad api"
|
84
85
|
|
85
86
|
if s.respond_to? :specification_version then
|
86
|
-
s.specification_version =
|
87
|
+
s.specification_version = 4
|
87
88
|
|
88
89
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
89
90
|
s.add_runtime_dependency(%q<rvm>, [">= 0"])
|
90
91
|
s.add_runtime_dependency(%q<bundler>, [">= 0"])
|
91
|
-
s.add_runtime_dependency(%q<koala>, ["
|
92
|
+
s.add_runtime_dependency(%q<koala>, ["~> 1.6.0"])
|
92
93
|
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
93
|
-
s.add_development_dependency(%q<shoulda>, ["
|
94
|
+
s.add_development_dependency(%q<shoulda>, ["~> 3.3.2"])
|
94
95
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
95
|
-
s.add_development_dependency(%q<jeweler>, ["~>
|
96
|
-
s.add_development_dependency(%q<simplecov>, ["
|
96
|
+
s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
|
97
|
+
s.add_development_dependency(%q<simplecov>, ["~> 0.7.1"])
|
97
98
|
s.add_development_dependency(%q<webmock>, ["~> 1.8.0"])
|
98
99
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
99
100
|
s.add_development_dependency(%q<vcr>, [">= 0"])
|
@@ -107,12 +108,12 @@ Gem::Specification.new do |s|
|
|
107
108
|
else
|
108
109
|
s.add_dependency(%q<rvm>, [">= 0"])
|
109
110
|
s.add_dependency(%q<bundler>, [">= 0"])
|
110
|
-
s.add_dependency(%q<koala>, ["
|
111
|
+
s.add_dependency(%q<koala>, ["~> 1.6.0"])
|
111
112
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
112
|
-
s.add_dependency(%q<shoulda>, ["
|
113
|
+
s.add_dependency(%q<shoulda>, ["~> 3.3.2"])
|
113
114
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
114
|
-
s.add_dependency(%q<jeweler>, ["~>
|
115
|
-
s.add_dependency(%q<simplecov>, ["
|
115
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
|
116
|
+
s.add_dependency(%q<simplecov>, ["~> 0.7.1"])
|
116
117
|
s.add_dependency(%q<webmock>, ["~> 1.8.0"])
|
117
118
|
s.add_dependency(%q<rspec>, [">= 0"])
|
118
119
|
s.add_dependency(%q<vcr>, [">= 0"])
|
@@ -127,12 +128,12 @@ Gem::Specification.new do |s|
|
|
127
128
|
else
|
128
129
|
s.add_dependency(%q<rvm>, [">= 0"])
|
129
130
|
s.add_dependency(%q<bundler>, [">= 0"])
|
130
|
-
s.add_dependency(%q<koala>, ["
|
131
|
+
s.add_dependency(%q<koala>, ["~> 1.6.0"])
|
131
132
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
132
|
-
s.add_dependency(%q<shoulda>, ["
|
133
|
+
s.add_dependency(%q<shoulda>, ["~> 3.3.2"])
|
133
134
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
134
|
-
s.add_dependency(%q<jeweler>, ["~>
|
135
|
-
s.add_dependency(%q<simplecov>, ["
|
135
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
|
136
|
+
s.add_dependency(%q<simplecov>, ["~> 0.7.1"])
|
136
137
|
s.add_dependency(%q<webmock>, ["~> 1.8.0"])
|
137
138
|
s.add_dependency(%q<rspec>, [">= 0"])
|
138
139
|
s.add_dependency(%q<vcr>, [">= 0"])
|
metadata
CHANGED
@@ -1,304 +1,267 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zuck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.2.0
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jannis Hermanns
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-04-23 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rvm
|
16
|
-
type: :runtime
|
17
15
|
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
17
|
- - ! '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
|
-
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
23
22
|
version_requirements: !ruby/object:Gem::Requirement
|
24
23
|
requirements:
|
25
24
|
- - ! '>='
|
26
25
|
- !ruby/object:Gem::Version
|
27
26
|
version: '0'
|
28
|
-
none: false
|
29
|
-
prerelease: false
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: bundler
|
32
|
-
type: :runtime
|
33
29
|
requirement: !ruby/object:Gem::Requirement
|
34
30
|
requirements:
|
35
31
|
- - ! '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
|
-
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
38
|
- - ! '>='
|
42
39
|
- !ruby/object:Gem::Version
|
43
40
|
version: '0'
|
44
|
-
none: false
|
45
|
-
prerelease: false
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: koala
|
48
|
-
type: :runtime
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
54
|
-
|
47
|
+
version: 1.6.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
55
50
|
version_requirements: !ruby/object:Gem::Requirement
|
56
51
|
requirements:
|
57
|
-
- -
|
52
|
+
- - ~>
|
58
53
|
- !ruby/object:Gem::Version
|
59
|
-
version:
|
60
|
-
none: false
|
61
|
-
prerelease: false
|
54
|
+
version: 1.6.0
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: activesupport
|
64
|
-
type: :runtime
|
65
57
|
requirement: !ruby/object:Gem::Requirement
|
66
58
|
requirements:
|
67
59
|
- - ! '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
|
-
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
71
64
|
version_requirements: !ruby/object:Gem::Requirement
|
72
65
|
requirements:
|
73
66
|
- - ! '>='
|
74
67
|
- !ruby/object:Gem::Version
|
75
68
|
version: '0'
|
76
|
-
none: false
|
77
|
-
prerelease: false
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: shoulda
|
80
|
-
type: :development
|
81
71
|
requirement: !ruby/object:Gem::Requirement
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ~>
|
84
74
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
86
|
-
|
75
|
+
version: 3.3.2
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
87
78
|
version_requirements: !ruby/object:Gem::Requirement
|
88
79
|
requirements:
|
89
|
-
- -
|
80
|
+
- - ~>
|
90
81
|
- !ruby/object:Gem::Version
|
91
|
-
version:
|
92
|
-
none: false
|
93
|
-
prerelease: false
|
82
|
+
version: 3.3.2
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: rdoc
|
96
|
-
type: :development
|
97
85
|
requirement: !ruby/object:Gem::Requirement
|
98
86
|
requirements:
|
99
87
|
- - ~>
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '3.12'
|
102
|
-
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
103
92
|
version_requirements: !ruby/object:Gem::Requirement
|
104
93
|
requirements:
|
105
94
|
- - ~>
|
106
95
|
- !ruby/object:Gem::Version
|
107
96
|
version: '3.12'
|
108
|
-
none: false
|
109
|
-
prerelease: false
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: jeweler
|
112
|
-
type: :development
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - ~>
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
118
|
-
|
103
|
+
version: 2.0.1
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
119
106
|
version_requirements: !ruby/object:Gem::Requirement
|
120
107
|
requirements:
|
121
108
|
- - ~>
|
122
109
|
- !ruby/object:Gem::Version
|
123
|
-
version:
|
124
|
-
none: false
|
125
|
-
prerelease: false
|
110
|
+
version: 2.0.1
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: simplecov
|
128
|
-
type: :development
|
129
113
|
requirement: !ruby/object:Gem::Requirement
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - ~>
|
132
116
|
- !ruby/object:Gem::Version
|
133
|
-
version:
|
134
|
-
|
117
|
+
version: 0.7.1
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
135
120
|
version_requirements: !ruby/object:Gem::Requirement
|
136
121
|
requirements:
|
137
|
-
- -
|
122
|
+
- - ~>
|
138
123
|
- !ruby/object:Gem::Version
|
139
|
-
version:
|
140
|
-
none: false
|
141
|
-
prerelease: false
|
124
|
+
version: 0.7.1
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: webmock
|
144
|
-
type: :development
|
145
127
|
requirement: !ruby/object:Gem::Requirement
|
146
128
|
requirements:
|
147
129
|
- - ~>
|
148
130
|
- !ruby/object:Gem::Version
|
149
131
|
version: 1.8.0
|
150
|
-
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
151
134
|
version_requirements: !ruby/object:Gem::Requirement
|
152
135
|
requirements:
|
153
136
|
- - ~>
|
154
137
|
- !ruby/object:Gem::Version
|
155
138
|
version: 1.8.0
|
156
|
-
none: false
|
157
|
-
prerelease: false
|
158
139
|
- !ruby/object:Gem::Dependency
|
159
140
|
name: rspec
|
160
|
-
type: :development
|
161
141
|
requirement: !ruby/object:Gem::Requirement
|
162
142
|
requirements:
|
163
143
|
- - ! '>='
|
164
144
|
- !ruby/object:Gem::Version
|
165
145
|
version: '0'
|
166
|
-
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
167
148
|
version_requirements: !ruby/object:Gem::Requirement
|
168
149
|
requirements:
|
169
150
|
- - ! '>='
|
170
151
|
- !ruby/object:Gem::Version
|
171
152
|
version: '0'
|
172
|
-
none: false
|
173
|
-
prerelease: false
|
174
153
|
- !ruby/object:Gem::Dependency
|
175
154
|
name: vcr
|
176
|
-
type: :development
|
177
155
|
requirement: !ruby/object:Gem::Requirement
|
178
156
|
requirements:
|
179
157
|
- - ! '>='
|
180
158
|
- !ruby/object:Gem::Version
|
181
159
|
version: '0'
|
182
|
-
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
183
162
|
version_requirements: !ruby/object:Gem::Requirement
|
184
163
|
requirements:
|
185
164
|
- - ! '>='
|
186
165
|
- !ruby/object:Gem::Version
|
187
166
|
version: '0'
|
188
|
-
none: false
|
189
|
-
prerelease: false
|
190
167
|
- !ruby/object:Gem::Dependency
|
191
168
|
name: guard
|
192
|
-
type: :development
|
193
169
|
requirement: !ruby/object:Gem::Requirement
|
194
170
|
requirements:
|
195
171
|
- - ! '>='
|
196
172
|
- !ruby/object:Gem::Version
|
197
173
|
version: '0'
|
198
|
-
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
199
176
|
version_requirements: !ruby/object:Gem::Requirement
|
200
177
|
requirements:
|
201
178
|
- - ! '>='
|
202
179
|
- !ruby/object:Gem::Version
|
203
180
|
version: '0'
|
204
|
-
none: false
|
205
|
-
prerelease: false
|
206
181
|
- !ruby/object:Gem::Dependency
|
207
182
|
name: guard-rspec
|
208
|
-
type: :development
|
209
183
|
requirement: !ruby/object:Gem::Requirement
|
210
184
|
requirements:
|
211
185
|
- - ! '>='
|
212
186
|
- !ruby/object:Gem::Version
|
213
187
|
version: '0'
|
214
|
-
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
215
190
|
version_requirements: !ruby/object:Gem::Requirement
|
216
191
|
requirements:
|
217
192
|
- - ! '>='
|
218
193
|
- !ruby/object:Gem::Version
|
219
194
|
version: '0'
|
220
|
-
none: false
|
221
|
-
prerelease: false
|
222
195
|
- !ruby/object:Gem::Dependency
|
223
196
|
name: guard-bundler
|
224
|
-
type: :development
|
225
197
|
requirement: !ruby/object:Gem::Requirement
|
226
198
|
requirements:
|
227
199
|
- - ! '>='
|
228
200
|
- !ruby/object:Gem::Version
|
229
201
|
version: '0'
|
230
|
-
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
231
204
|
version_requirements: !ruby/object:Gem::Requirement
|
232
205
|
requirements:
|
233
206
|
- - ! '>='
|
234
207
|
- !ruby/object:Gem::Version
|
235
208
|
version: '0'
|
236
|
-
none: false
|
237
|
-
prerelease: false
|
238
209
|
- !ruby/object:Gem::Dependency
|
239
210
|
name: guard-yard
|
240
|
-
type: :development
|
241
211
|
requirement: !ruby/object:Gem::Requirement
|
242
212
|
requirements:
|
243
213
|
- - ! '>='
|
244
214
|
- !ruby/object:Gem::Version
|
245
215
|
version: '0'
|
246
|
-
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
247
218
|
version_requirements: !ruby/object:Gem::Requirement
|
248
219
|
requirements:
|
249
220
|
- - ! '>='
|
250
221
|
- !ruby/object:Gem::Version
|
251
222
|
version: '0'
|
252
|
-
none: false
|
253
|
-
prerelease: false
|
254
223
|
- !ruby/object:Gem::Dependency
|
255
224
|
name: growl
|
256
|
-
type: :development
|
257
225
|
requirement: !ruby/object:Gem::Requirement
|
258
226
|
requirements:
|
259
227
|
- - ! '>='
|
260
228
|
- !ruby/object:Gem::Version
|
261
229
|
version: '0'
|
262
|
-
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
263
232
|
version_requirements: !ruby/object:Gem::Requirement
|
264
233
|
requirements:
|
265
234
|
- - ! '>='
|
266
235
|
- !ruby/object:Gem::Version
|
267
236
|
version: '0'
|
268
|
-
none: false
|
269
|
-
prerelease: false
|
270
237
|
- !ruby/object:Gem::Dependency
|
271
238
|
name: redcarpet
|
272
|
-
type: :development
|
273
239
|
requirement: !ruby/object:Gem::Requirement
|
274
240
|
requirements:
|
275
241
|
- - ! '>='
|
276
242
|
- !ruby/object:Gem::Version
|
277
243
|
version: '0'
|
278
|
-
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
279
246
|
version_requirements: !ruby/object:Gem::Requirement
|
280
247
|
requirements:
|
281
248
|
- - ! '>='
|
282
249
|
- !ruby/object:Gem::Version
|
283
250
|
version: '0'
|
284
|
-
none: false
|
285
|
-
prerelease: false
|
286
251
|
- !ruby/object:Gem::Dependency
|
287
252
|
name: rb-fsevent
|
288
|
-
type: :development
|
289
253
|
requirement: !ruby/object:Gem::Requirement
|
290
254
|
requirements:
|
291
255
|
- - ! '>='
|
292
256
|
- !ruby/object:Gem::Version
|
293
257
|
version: '0'
|
294
|
-
|
258
|
+
type: :development
|
259
|
+
prerelease: false
|
295
260
|
version_requirements: !ruby/object:Gem::Requirement
|
296
261
|
requirements:
|
297
262
|
- - ! '>='
|
298
263
|
- !ruby/object:Gem::Version
|
299
264
|
version: '0'
|
300
|
-
none: false
|
301
|
-
prerelease: false
|
302
265
|
description: This gem allows to easily access facebook's ads api in ruby. See https://developers.facebook.com/docs/reference/ads-api/
|
303
266
|
email: jannis@gmail.com
|
304
267
|
executables: []
|
@@ -324,7 +287,7 @@ files:
|
|
324
287
|
- lib/zuck/facebook/ad_campaign.rb
|
325
288
|
- lib/zuck/facebook/ad_creative.rb
|
326
289
|
- lib/zuck/facebook/ad_group.rb
|
327
|
-
- lib/zuck/facebook/
|
290
|
+
- lib/zuck/facebook/ad_interest.rb
|
328
291
|
- lib/zuck/facebook/targeting_spec.rb
|
329
292
|
- lib/zuck/fb_object.rb
|
330
293
|
- lib/zuck/fb_object/dsl.rb
|
@@ -339,9 +302,9 @@ files:
|
|
339
302
|
- spec/fixtures/a_single_account.yml
|
340
303
|
- spec/fixtures/a_single_campaign.yml
|
341
304
|
- spec/fixtures/a_single_group.yml
|
342
|
-
- spec/fixtures/
|
343
|
-
- spec/fixtures/
|
344
|
-
- spec/fixtures/
|
305
|
+
- spec/fixtures/ad_interest_search_disney.yml
|
306
|
+
- spec/fixtures/ad_interest_search_moviepilot.yml
|
307
|
+
- spec/fixtures/ad_interest_search_nonexistant.yml
|
345
308
|
- spec/fixtures/create_ad_campaign.yml
|
346
309
|
- spec/fixtures/create_ad_group.yml
|
347
310
|
- spec/fixtures/delete_ad_group.yml
|
@@ -351,12 +314,12 @@ files:
|
|
351
314
|
- spec/fixtures/list_of_ad_creatives.yml
|
352
315
|
- spec/fixtures/list_of_ad_groups.yml
|
353
316
|
- spec/fixtures/list_of_all_ad_creatives_of_account.yml
|
354
|
-
- spec/fixtures/
|
317
|
+
- spec/fixtures/reach_for_invalid_interest.yml
|
355
318
|
- spec/fixtures/reach_for_valid_keywords.yml
|
356
319
|
- spec/fixtures/reach_for_valid_keywords_male_young.yml
|
357
320
|
- spec/lib/zuck/facebook/ad_account_spec.rb
|
358
321
|
- spec/lib/zuck/facebook/ad_campaign_spec.rb
|
359
|
-
- spec/lib/zuck/facebook/
|
322
|
+
- spec/lib/zuck/facebook/ad_interest_spec.rb
|
360
323
|
- spec/lib/zuck/facebook/targeting_spec_spec.rb
|
361
324
|
- spec/lib/zuck/fb_object/helpers_spec.rb
|
362
325
|
- spec/lib/zuck/koala/koala_methods_spec.rb
|
@@ -368,6 +331,7 @@ files:
|
|
368
331
|
homepage: http://github.com/jayniz/zuck
|
369
332
|
licenses:
|
370
333
|
- MIT
|
334
|
+
metadata: {}
|
371
335
|
post_install_message:
|
372
336
|
rdoc_options: []
|
373
337
|
require_paths:
|
@@ -376,21 +340,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
376
340
|
requirements:
|
377
341
|
- - ! '>='
|
378
342
|
- !ruby/object:Gem::Version
|
379
|
-
segments:
|
380
|
-
- 0
|
381
|
-
hash: 2263188203156526454
|
382
343
|
version: '0'
|
383
|
-
none: false
|
384
344
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
385
345
|
requirements:
|
386
346
|
- - ! '>='
|
387
347
|
- !ruby/object:Gem::Version
|
388
348
|
version: '0'
|
389
|
-
none: false
|
390
349
|
requirements: []
|
391
350
|
rubyforge_project:
|
392
|
-
rubygems_version:
|
351
|
+
rubygems_version: 2.2.2
|
393
352
|
signing_key:
|
394
|
-
specification_version:
|
353
|
+
specification_version: 4
|
395
354
|
summary: Ruby adapter to facebook's ad api
|
396
355
|
test_files: []
|