twitter-ads 0.3.4 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/twitter-ads.rb +18 -0
  5. data/lib/twitter-ads/account.rb +20 -5
  6. data/lib/twitter-ads/audiences/tailored_audience.rb +4 -4
  7. data/lib/twitter-ads/campaign/app_list.rb +2 -2
  8. data/lib/twitter-ads/campaign/campaign.rb +4 -3
  9. data/lib/twitter-ads/campaign/funding_instrument.rb +2 -2
  10. data/lib/twitter-ads/campaign/line_item.rb +12 -14
  11. data/lib/twitter-ads/campaign/promotable_user.rb +2 -2
  12. data/lib/twitter-ads/campaign/targeting_criteria.rb +2 -2
  13. data/lib/twitter-ads/campaign/tweet.rb +5 -4
  14. data/lib/twitter-ads/creative/account_media.rb +36 -0
  15. data/lib/twitter-ads/creative/app_download_card.rb +2 -2
  16. data/lib/twitter-ads/creative/image_app_download_card.rb +2 -2
  17. data/lib/twitter-ads/creative/image_conversation_card.rb +2 -2
  18. data/lib/twitter-ads/creative/lead_gen_card.rb +2 -2
  19. data/lib/twitter-ads/creative/media_creative.rb +37 -0
  20. data/lib/twitter-ads/creative/promoted_account.rb +4 -3
  21. data/lib/twitter-ads/creative/promoted_tweet.rb +4 -3
  22. data/lib/twitter-ads/creative/video.rb +2 -2
  23. data/lib/twitter-ads/creative/video_app_download_card.rb +2 -2
  24. data/lib/twitter-ads/creative/video_conversation_card.rb +2 -2
  25. data/lib/twitter-ads/creative/website_card.rb +2 -2
  26. data/lib/twitter-ads/enum.rb +49 -2
  27. data/lib/twitter-ads/http/request.rb +2 -2
  28. data/lib/twitter-ads/resources/analytics.rb +129 -24
  29. data/lib/twitter-ads/resources/dsl.rb +1 -1
  30. data/lib/twitter-ads/targeting/reach_estimate.rb +17 -10
  31. data/lib/twitter-ads/targeting_criteria/app_store_category.rb +22 -0
  32. data/lib/twitter-ads/targeting_criteria/behavior.rb +26 -0
  33. data/lib/twitter-ads/targeting_criteria/behavior_taxonomy.rb +23 -0
  34. data/lib/twitter-ads/targeting_criteria/device.rb +24 -0
  35. data/lib/twitter-ads/targeting_criteria/event.rb +32 -0
  36. data/lib/twitter-ads/targeting_criteria/interest.rb +22 -0
  37. data/lib/twitter-ads/targeting_criteria/language.rb +21 -0
  38. data/lib/twitter-ads/targeting_criteria/location.rb +22 -0
  39. data/lib/twitter-ads/targeting_criteria/network_operator.rb +22 -0
  40. data/lib/twitter-ads/targeting_criteria/platform.rb +22 -0
  41. data/lib/twitter-ads/targeting_criteria/platform_version.rb +23 -0
  42. data/lib/twitter-ads/targeting_criteria/tv_channel.rb +20 -0
  43. data/lib/twitter-ads/targeting_criteria/tv_genre.rb +20 -0
  44. data/lib/twitter-ads/targeting_criteria/tv_market.rb +22 -0
  45. data/lib/twitter-ads/targeting_criteria/tv_show.rb +22 -0
  46. data/lib/twitter-ads/version.rb +1 -1
  47. data/spec/spec_helper.rb +1 -1
  48. data/spec/twitter-ads/campaign/app_list_spec.rb +1 -1
  49. data/spec/twitter-ads/campaign/line_item_spec.rb +0 -22
  50. data/spec/twitter-ads/campaign/reach_estimate_spec.rb +16 -11
  51. data/spec/twitter-ads/campaign/tweet_spec.rb +2 -2
  52. data/spec/twitter-ads/client_spec.rb +1 -1
  53. data/spec/twitter-ads/creative/account_media_spec.rb +32 -0
  54. data/spec/twitter-ads/creative/media_creative_spec.rb +32 -0
  55. metadata +44 -22
  56. metadata.gz.sig +0 -0
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ class Language
6
+
7
+ include TwitterAds::DSL
8
+ include TwitterAds::Resource
9
+
10
+ property :name, read_only: true
11
+ property :targeting_type, read_only: true
12
+ property :targeting_value, read_only: true
13
+
14
+ RESOURCE_COLLECTION = '/1/targeting_criteria/languages'.freeze # @api private
15
+
16
+ def initialize(account)
17
+ @account = account
18
+ self
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ class Location
6
+
7
+ include TwitterAds::DSL
8
+ include TwitterAds::Resource
9
+
10
+ property :name, read_only: true
11
+ property :targeting_type, read_only: true
12
+ property :targeting_value, read_only: true
13
+ property :location_type, read_only: true
14
+
15
+ RESOURCE_COLLECTION = '/1/targeting_criteria/locations'.freeze # @api private
16
+
17
+ def initialize(account)
18
+ @account = account
19
+ self
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ class NetworkOperator
6
+
7
+ include TwitterAds::DSL
8
+ include TwitterAds::Resource
9
+
10
+ property :name, read_only: true
11
+ property :targeting_type, read_only: true
12
+ property :targeting_value, read_only: true
13
+ property :country_code, read_only: true
14
+
15
+ RESOURCE_COLLECTION = '/1/targeting_criteria/network_operators'.freeze # @api private
16
+
17
+ def initialize(account)
18
+ @account = account
19
+ self
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ class Platform
6
+
7
+ include TwitterAds::DSL
8
+ include TwitterAds::Resource
9
+
10
+ property :name, read_only: true
11
+ property :targeting_type, read_only: true
12
+ property :targeting_value, read_only: true
13
+ property :localized_name, read_only: true
14
+
15
+ RESOURCE_COLLECTION = '/1/targeting_criteria/platforms'.freeze # @api private
16
+
17
+ def initialize(account)
18
+ @account = account
19
+ self
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ class PlatformVersion
6
+
7
+ include TwitterAds::DSL
8
+ include TwitterAds::Resource
9
+
10
+ property :name, read_only: true
11
+ property :targeting_type, read_only: true
12
+ property :targeting_value, read_only: true
13
+ property :number, read_only: true
14
+ property :platform, read_only: true
15
+
16
+ RESOURCE_COLLECTION = '/1/targeting_criteria/platform_versions'.freeze # @api private
17
+
18
+ def initialize(account)
19
+ @account = account
20
+ self
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ class TVChannel
6
+
7
+ include TwitterAds::DSL
8
+ include TwitterAds::Resource
9
+
10
+ property :id, read_only: true
11
+ property :name, read_only: true
12
+
13
+ RESOURCE_COLLECTION = '/1/targeting_criteria/tv_channels'.freeze # @api private
14
+
15
+ def initialize(account)
16
+ @account = account
17
+ self
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ class TVGenre
6
+
7
+ include TwitterAds::DSL
8
+ include TwitterAds::Resource
9
+
10
+ property :id, read_only: true
11
+ property :name, read_only: true
12
+
13
+ RESOURCE_COLLECTION = '/1/targeting_criteria/tv_genres'.freeze # @api private
14
+
15
+ def initialize(account)
16
+ @account = account
17
+ self
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ class TVMarket
6
+
7
+ include TwitterAds::DSL
8
+ include TwitterAds::Resource
9
+
10
+ property :id, read_only: true
11
+ property :name, read_only: true
12
+ property :locale, read_only: true
13
+ property :country_code, read_only: true
14
+
15
+ RESOURCE_COLLECTION = '/1/targeting_criteria/tv_markets'.freeze # @api private
16
+
17
+ def initialize(account)
18
+ @account = account
19
+ self
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ class TVShow
6
+
7
+ include TwitterAds::DSL
8
+ include TwitterAds::Resource
9
+
10
+ property :id, read_only: true
11
+ property :name, read_only: true
12
+ property :estimated_users, read_only: true
13
+ property :genre, read_only: true
14
+
15
+ RESOURCE_COLLECTION = '/1/targeting_criteria/tv_shows'.freeze # @api private
16
+
17
+ def initialize(account)
18
+ @account = account
19
+ self
20
+ end
21
+ end
22
+ end
@@ -2,5 +2,5 @@
2
2
  # Copyright (C) 2015 Twitter, Inc.
3
3
 
4
4
  module TwitterAds
5
- VERSION = '0.3.4'.freeze
5
+ VERSION = '1.0.0'.freeze
6
6
  end
@@ -28,7 +28,7 @@ include TwitterAds
28
28
  # Require All Support Files
29
29
  Dir['./spec/support/*.rb'].sort.each { |file| require file }
30
30
 
31
- ADS_API = 'https://ads-api.twitter.com/0'.freeze
31
+ ADS_API = 'https://ads-api.twitter.com/1'.freeze
32
32
  TON_API = 'https://ton.twitter.com'.freeze
33
33
  UPLOAD_API = 'https://upload.twitter.com/1.1'.freeze
34
34
 
@@ -31,7 +31,7 @@ describe TwitterAds::AppList do
31
31
 
32
32
  let(:app_list) { TwitterAds::AppList.new(account) }
33
33
  let!(:resource) { "#{ADS_API}/accounts/#{account.id}/app_lists" }
34
- let!(:rel_path) { "/0/accounts/#{account.id}/app_lists" }
34
+ let!(:rel_path) { "/1/accounts/#{account.id}/app_lists" }
35
35
 
36
36
  before(:each) do
37
37
  stub_fixture(:post, :app_lists_load, /#{resource}\?.*/)
@@ -70,26 +70,4 @@ describe TwitterAds::LineItem do
70
70
 
71
71
  end
72
72
 
73
- describe '#objective=' do
74
-
75
- context 'when using TwitterAds::Objective::CUSTOM' do
76
-
77
- it 'raises a warning message' do
78
- expect(TwitterAds::Utils).to receive(:deprecated).with('TwitterAds::Objective::CUSTOM')
79
- subject.objective = TwitterAds::Objective::CUSTOM
80
- end
81
-
82
- end
83
-
84
- context 'when using any object other than TwitterAds::Objective::CUSTOM' do
85
-
86
- it 'does not raise a warning message' do
87
- expect(TwitterAds::Utils).not_to receive(:deprecated).with(any_args)
88
- subject.objective = TwitterAds::Objective::VIDEO_VIEWS
89
- end
90
-
91
- end
92
-
93
- end
94
-
95
73
  end
@@ -24,7 +24,7 @@ describe TwitterAds::ReachEstimate do
24
24
  describe '#fetch' do
25
25
 
26
26
  let!(:resource) { "#{ADS_API}/accounts/#{account.id}/reach_estimate" }
27
- let!(:rel_path) { "/0/accounts/#{account.id}/reach_estimate" }
27
+ let!(:rel_path) { "/1/accounts/#{account.id}/reach_estimate" }
28
28
 
29
29
  before(:each) do
30
30
  stub_fixture(:get, :reach_estimate, /#{resource}\?.*/)
@@ -32,22 +32,23 @@ describe TwitterAds::ReachEstimate do
32
32
 
33
33
  it 'creates proper get request with no optional parameters specified' do
34
34
  expected = { product_type: 'PROMOTED_TWEETS', objective: 'WEBSITE_CLICKS',
35
- user_id: 12, bid_type: 'AUTO' }
35
+ campaign_daily_budget_amount_local_micro: 30000000, bid_type: 'AUTO' }
36
36
  args = [account.client, :get, rel_path, params: expected]
37
37
 
38
38
  expect(Request).to receive(:new).with(*args).and_call_original
39
- TwitterAds::ReachEstimate.fetch(account, 'PROMOTED_TWEETS', 'WEBSITE_CLICKS', 12)
39
+ TwitterAds::ReachEstimate.fetch(account, 'PROMOTED_TWEETS', 'WEBSITE_CLICKS', 30000000)
40
40
  end
41
41
 
42
42
  it 'creates proper get request when optional paremeters are specified' do
43
43
 
44
44
  expected = { product_type: 'PROMOTED_TWEETS', objective: 'WEBSITE_CLICKS',
45
- user_id: 12, similar_to_followers_of_user: '12', gender: '2', bid_type: 'AUTO' }
45
+ campaign_daily_budget_amount_local_micro: 30000000,
46
+ similar_to_followers_of_user: '12', gender: '2', bid_type: 'AUTO' }
46
47
  args = [account.client, :get, rel_path, params: expected]
47
48
 
48
49
  expect(Request).to receive(:new).with(*args).and_call_original
49
50
  TwitterAds::ReachEstimate.fetch(
50
- account, 'PROMOTED_TWEETS', 'WEBSITE_CLICKS', 12,
51
+ account, 'PROMOTED_TWEETS', 'WEBSITE_CLICKS', 30000000,
51
52
  similar_to_followers_of_user: '12', gender: '2')
52
53
 
53
54
  end
@@ -56,11 +57,12 @@ describe TwitterAds::ReachEstimate do
56
57
 
57
58
  it 'defaults bid_type to AUTO for backward compatibility' do
58
59
  expected = { product_type: 'PROMOTED_TWEETS', objective: 'WEBSITE_CLICKS',
59
- user_id: 12, bid_type: 'AUTO' }
60
+ campaign_daily_budget_amount_local_micro: 30000000,
61
+ bid_type: 'AUTO' }
60
62
  args = [account.client, :get, rel_path, params: expected]
61
63
 
62
64
  expect(Request).to receive(:new).with(*args).and_call_original
63
- TwitterAds::ReachEstimate.fetch(account, 'PROMOTED_TWEETS', 'WEBSITE_CLICKS', 12)
65
+ TwitterAds::ReachEstimate.fetch(account, 'PROMOTED_TWEETS', 'WEBSITE_CLICKS', 30000000)
64
66
  end
65
67
 
66
68
  end
@@ -69,12 +71,14 @@ describe TwitterAds::ReachEstimate do
69
71
 
70
72
  it 'does not default bid_type to AUTO' do
71
73
  expected = { product_type: 'PROMOTED_TWEETS', objective: 'WEBSITE_CLICKS',
72
- user_id: 12, bid_type: 'MAX' }
74
+ bid_amount_local_micro: 3000000,
75
+ campaign_daily_budget_amount_local_micro: 30000000, bid_type: 'MAX' }
73
76
  args = [account.client, :get, rel_path, params: expected]
74
77
 
75
78
  expect(Request).to receive(:new).with(*args).and_call_original
76
79
  TwitterAds::ReachEstimate.fetch(
77
- account, 'PROMOTED_TWEETS', 'WEBSITE_CLICKS', 12, bid_type: 'MAX')
80
+ account, 'PROMOTED_TWEETS', 'WEBSITE_CLICKS', 30000000,
81
+ bid_amount_local_micro: 3000000, bid_type: 'MAX')
78
82
  end
79
83
 
80
84
  end
@@ -83,12 +87,13 @@ describe TwitterAds::ReachEstimate do
83
87
 
84
88
  it 'does not default bid_type to AUTO' do
85
89
  expected = { product_type: 'PROMOTED_TWEETS', objective: 'WEBSITE_CLICKS',
86
- user_id: 12, bid_amount_local_micro: 1500000 }
90
+ bid_amount_local_micro: 1500000,
91
+ campaign_daily_budget_amount_local_micro: 30000000 }
87
92
  args = [account.client, :get, rel_path, params: expected]
88
93
 
89
94
  expect(Request).to receive(:new).with(*args).and_call_original
90
95
  TwitterAds::ReachEstimate.fetch(
91
- account, 'PROMOTED_TWEETS', 'WEBSITE_CLICKS', 12, bid_amount_local_micro: 1500000)
96
+ account, 'PROMOTED_TWEETS', 'WEBSITE_CLICKS', 30000000, bid_amount_local_micro: 1500000)
92
97
  end
93
98
 
94
99
  end
@@ -51,7 +51,7 @@ describe TwitterAds::Tweet do
51
51
  end
52
52
 
53
53
  it 'allows a single value for the media_ids param' do
54
- resource = "/0/accounts/#{account.id}/tweet/preview"
54
+ resource = "/1/accounts/#{account.id}/tweet/preview"
55
55
  expected = { status: 'Hello%20World!', media_ids: 634458428836962304 }
56
56
 
57
57
  expect(TwitterAds::Request).to receive(:new).with(
@@ -64,7 +64,7 @@ describe TwitterAds::Tweet do
64
64
  end
65
65
 
66
66
  it 'allows an array of values for the media_ids param' do
67
- resource = "/0/accounts/#{account.id}/tweet/preview"
67
+ resource = "/1/accounts/#{account.id}/tweet/preview"
68
68
  expected = { status: 'Hello%20World!', media_ids: '634458428836962304,634458428836962305' }
69
69
 
70
70
  expect(TwitterAds::Request).to receive(:new).with(
@@ -99,7 +99,7 @@ describe TwitterAds::Client do
99
99
  let!(:account_id) { '2iqph' }
100
100
 
101
101
  before(:all) do
102
- stub_fixture(:get, :accounts_load, /(.*\/0\/accounts\/)([a-zA-Z0-9]*)\z/)
102
+ stub_fixture(:get, :accounts_load, /(.*\/1\/accounts\/)([a-zA-Z0-9]*)\z/)
103
103
  end
104
104
 
105
105
  it 'returns a specific Account object' do
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ require 'spec_helper'
5
+
6
+ include TwitterAds::Enum
7
+
8
+ describe TwitterAds::Creative::AccountMedia do
9
+
10
+ before(:each) do
11
+ stub_fixture(:get, :accounts_all, "#{ADS_API}/accounts")
12
+ stub_fixture(:get, :accounts_load, "#{ADS_API}/accounts/2iqph")
13
+ end
14
+
15
+ let(:client) do
16
+ Client.new(
17
+ Faker::Lorem.characters(15),
18
+ Faker::Lorem.characters(40),
19
+ "123456-#{Faker::Lorem.characters(40)}",
20
+ Faker::Lorem.characters(40)
21
+ )
22
+ end
23
+
24
+ let(:account) { client.accounts.first }
25
+
26
+ # check model properties
27
+ subject { described_class.new(account) }
28
+ read = %w(id created_at updated_at deleted media_url)
29
+ write = %w(media_id creative_type video_id)
30
+ include_examples 'object property check', read, write
31
+
32
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ require 'spec_helper'
5
+
6
+ include TwitterAds::Enum
7
+
8
+ describe TwitterAds::Creative::MediaCreative do
9
+
10
+ before(:each) do
11
+ stub_fixture(:get, :accounts_all, "#{ADS_API}/accounts")
12
+ stub_fixture(:get, :accounts_load, "#{ADS_API}/accounts/2iqph")
13
+ end
14
+
15
+ let(:client) do
16
+ Client.new(
17
+ Faker::Lorem.characters(15),
18
+ Faker::Lorem.characters(40),
19
+ "123456-#{Faker::Lorem.characters(40)}",
20
+ Faker::Lorem.characters(40)
21
+ )
22
+ end
23
+
24
+ let(:account) { client.accounts.first }
25
+
26
+ # check model properties
27
+ subject { described_class.new(account) }
28
+ read = %w(id created_at updated_at deleted approval_status serving_status)
29
+ write = %w(account_media_id line_item_id landing_url)
30
+ include_examples 'object property check', read, write
31
+
32
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitter-ads
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Black
@@ -10,27 +10,28 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MQ8wDQYDVQQDDAZiYmxh
14
- Y2sxFzAVBgoJkiaJk/IsZAEZFgd0d2l0dGVyMRMwEQYKCZImiZPyLGQBGRYDY29t
15
- MB4XDTE1MDUxNDIwMzE0OFoXDTE2MDUxMzIwMzE0OFowPzEPMA0GA1UEAwwGYmJs
16
- YWNrMRcwFQYKCZImiZPyLGQBGRYHdHdpdHRlcjETMBEGCgmSJomT8ixkARkWA2Nv
17
- bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALFcA39CQg7YbcP8v2By
18
- AzyhEpVlrxa2ohJ7LFmi8/Xw8cxS3/XvweWJuufambhfpT/KkUcf0FMA4egt3w8c
19
- PYanwpUCyBnLCXsMvFWGBnyWQqVNSg6CKTVcY1urtCUSA3Jv5KKBPffSUoTOCL5E
20
- uLD3BW9VnPS4Z9SOKzhg7c4aIr0siNBf0/AU0aiwtOhqgJpRkECcd5C74JdYTLdF
21
- 5Gdxzxifr50Em+lojr+hatfYZ51gOksPBtqotQ4l+vSth9JQB8jX1DOfHf/4LdGJ
22
- Y7b9bOORAx4XPncn6VXlNH5YUVRu/pshNf5N0YbQUgXKMG/M0Drxv+VmHpxeg3Ep
23
- MSsCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFJdU
24
- 3qERWamEyBidCvO8vyO4Ofj8MB0GA1UdEQQWMBSBEmJibGFja0B0d2l0dGVyLmNv
25
- bTAdBgNVHRIEFjAUgRJiYmxhY2tAdHdpdHRlci5jb20wDQYJKoZIhvcNAQEFBQAD
26
- ggEBAAEqjpDTcLHBKDhqqSDMmW0gWQTYHBuyKAUuaEleE9fWBS+q9SIPmQSoj2yX
27
- aqzkMmCvcTpiIoVlu2QtYvxtI6bef+HM50hkNjF+AeEyhTSucLxRmg232CzykGZa
28
- sIuWL8AhyPmyLaIi5gsGXUIChk4aXcXE8iD/VGWyPZ3r8zV/EA8dTnT/iVYkxpTv
29
- dUlOT1v22STyPF3Zttqqe5XtOtIN9+i3Szoi1OGueqSB9+XMZyinZoxherrs1BVH
30
- 8Jwp/juPnThUiQlA6qjWMlKQJW9Junn+gQJWm6jW/hR3klmk4uPIB+wxSW2J2K50
31
- aU47pXYcbHgF3qfpEAXAq9qH06E=
13
+ MIIDkjCCAnqgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMRcwFQYDVQQDDA50d2l0
14
+ dGVyZGV2LWFkczEXMBUGCgmSJomT8ixkARkWB3R3aXR0ZXIxEzARBgoJkiaJk/Is
15
+ ZAEZFgNjb20wHhcNMTYwNTI4MDA0OTAwWhcNMTcwNTI4MDA0OTAwWjBHMRcwFQYD
16
+ VQQDDA50d2l0dGVyZGV2LWFkczEXMBUGCgmSJomT8ixkARkWB3R3aXR0ZXIxEzAR
17
+ BgoJkiaJk/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
18
+ AQDRu2wbJR414kYzFQhuhSarGi5olf7uXCI+0qcDjlErUTil6zaE60DDyWft/8aC
19
+ H+s0f8r6Ii875ASHXf3e0ImIpeHuuJyVPi5krsdbmujjDEGuuDuuYylRdOThICxH
20
+ f4Jm/9kLgtPTTpOPvwlCTIVQzMwZfBlIuSjpz4sLptFuj8VFme6jd2uFUSFj8Mkv
21
+ 2bLFK6opau3poGJaTHEEu0XF8aEEHTrUOnEWCO8PnY/fwoICl/b62Efoltsgsvtv
22
+ VoHf2SpB+0V1SX85QRNgtmmcOjKbQsl3viUeXWywz8V39dsjIXf/URcAQ7opfqTj
23
+ uCXwXQKEZWIAxGn5ek4cf5gbAgMBAAGjgYgwgYUwCQYDVR0TBAIwADALBgNVHQ8E
24
+ BAMCBLAwHQYDVR0OBBYEFEisIhn7R3j2V1lkUmbMj+y+qn5TMCUGA1UdEQQeMByB
25
+ GnR3aXR0ZXJkZXYtYWRzQHR3aXR0ZXIuY29tMCUGA1UdEgQeMByBGnR3aXR0ZXJk
26
+ ZXYtYWRzQHR3aXR0ZXIuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQB1M62XZp9prwnv
27
+ 4KlkNmzfUeqN/Ou9OPNOmgko7s/spuzlg5ZkdZh0iiz5Uw0Mf4gpCks06n/cy7XP
28
+ cs63IW0VLLdlRcXSNX7zm91iXHOQBkX8/mzg6pVzhhqXjMZezfi0Cgb86t5ZzR7L
29
+ Dl5UKO3vRh/aR++y6oigeuSo5Yr9tLFA0MPPORJPgXlNjul6eLaCL12r8WTMwMBP
30
+ taq3q3kbi4nXBIvBaiCrmsRKB7aUApUV8dOOXArW+Xm2NuIIUfv8sg6fSosFHuD7
31
+ 6iKH3qLrNmP7FTqx/7IFHIgiptkRhr9W3yyaIregdBYXFNXj9HLpaJWNmDoei1vM
32
+ GNwER2EW
32
33
  -----END CERTIFICATE-----
33
- date: 2016-02-10 00:00:00.000000000 Z
34
+ date: 2016-05-28 00:00:00.000000000 Z
34
35
  dependencies:
35
36
  - !ruby/object:Gem::Dependency
36
37
  name: multi_json
@@ -98,10 +99,12 @@ files:
98
99
  - lib/twitter-ads/campaign/targeting_criteria.rb
99
100
  - lib/twitter-ads/campaign/tweet.rb
100
101
  - lib/twitter-ads/client.rb
102
+ - lib/twitter-ads/creative/account_media.rb
101
103
  - lib/twitter-ads/creative/app_download_card.rb
102
104
  - lib/twitter-ads/creative/image_app_download_card.rb
103
105
  - lib/twitter-ads/creative/image_conversation_card.rb
104
106
  - lib/twitter-ads/creative/lead_gen_card.rb
107
+ - lib/twitter-ads/creative/media_creative.rb
105
108
  - lib/twitter-ads/creative/promoted_account.rb
106
109
  - lib/twitter-ads/creative/promoted_tweet.rb
107
110
  - lib/twitter-ads/creative/video.rb
@@ -120,6 +123,21 @@ files:
120
123
  - lib/twitter-ads/resources/persistence.rb
121
124
  - lib/twitter-ads/resources/resource.rb
122
125
  - lib/twitter-ads/targeting/reach_estimate.rb
126
+ - lib/twitter-ads/targeting_criteria/app_store_category.rb
127
+ - lib/twitter-ads/targeting_criteria/behavior.rb
128
+ - lib/twitter-ads/targeting_criteria/behavior_taxonomy.rb
129
+ - lib/twitter-ads/targeting_criteria/device.rb
130
+ - lib/twitter-ads/targeting_criteria/event.rb
131
+ - lib/twitter-ads/targeting_criteria/interest.rb
132
+ - lib/twitter-ads/targeting_criteria/language.rb
133
+ - lib/twitter-ads/targeting_criteria/location.rb
134
+ - lib/twitter-ads/targeting_criteria/network_operator.rb
135
+ - lib/twitter-ads/targeting_criteria/platform.rb
136
+ - lib/twitter-ads/targeting_criteria/platform_version.rb
137
+ - lib/twitter-ads/targeting_criteria/tv_channel.rb
138
+ - lib/twitter-ads/targeting_criteria/tv_genre.rb
139
+ - lib/twitter-ads/targeting_criteria/tv_market.rb
140
+ - lib/twitter-ads/targeting_criteria/tv_show.rb
123
141
  - lib/twitter-ads/utils.rb
124
142
  - lib/twitter-ads/version.rb
125
143
  - spec/fixtures/accounts_all.json
@@ -156,10 +174,12 @@ files:
156
174
  - spec/twitter-ads/campaign/targeting_criteria_spec.rb
157
175
  - spec/twitter-ads/campaign/tweet_spec.rb
158
176
  - spec/twitter-ads/client_spec.rb
177
+ - spec/twitter-ads/creative/account_media_spec.rb
159
178
  - spec/twitter-ads/creative/app_download_card_spec.rb
160
179
  - spec/twitter-ads/creative/image_app_download_card_spec.rb
161
180
  - spec/twitter-ads/creative/image_conversation_card_spec.rb
162
181
  - spec/twitter-ads/creative/lead_gen_card_spec.rb
182
+ - spec/twitter-ads/creative/media_creative_spec.rb
163
183
  - spec/twitter-ads/creative/promoted_account_spec.rb
164
184
  - spec/twitter-ads/creative/promoted_tweet_spec.rb
165
185
  - spec/twitter-ads/creative/video_app_download_card_spec.rb
@@ -191,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
211
  version: 2.0.0
192
212
  requirements: []
193
213
  rubyforge_project:
194
- rubygems_version: 2.5.1
214
+ rubygems_version: 2.4.5.1
195
215
  signing_key:
196
216
  specification_version: 4
197
217
  summary: The officially supported Twitter Ads API SDK for Ruby.
@@ -230,10 +250,12 @@ test_files:
230
250
  - spec/twitter-ads/campaign/targeting_criteria_spec.rb
231
251
  - spec/twitter-ads/campaign/tweet_spec.rb
232
252
  - spec/twitter-ads/client_spec.rb
253
+ - spec/twitter-ads/creative/account_media_spec.rb
233
254
  - spec/twitter-ads/creative/app_download_card_spec.rb
234
255
  - spec/twitter-ads/creative/image_app_download_card_spec.rb
235
256
  - spec/twitter-ads/creative/image_conversation_card_spec.rb
236
257
  - spec/twitter-ads/creative/lead_gen_card_spec.rb
258
+ - spec/twitter-ads/creative/media_creative_spec.rb
237
259
  - spec/twitter-ads/creative/promoted_account_spec.rb
238
260
  - spec/twitter-ads/creative/promoted_tweet_spec.rb
239
261
  - spec/twitter-ads/creative/video_app_download_card_spec.rb