twitter-ads 2.0.0 → 3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1831dee8de9255d8b7b9a5131ebd8a2f7960cca7
4
- data.tar.gz: 180c8bb92cf67b4cf01fb662f6a39d9557cfae29
3
+ metadata.gz: c478e42cfbc201c9d7b1398f4839d3c7ed371516
4
+ data.tar.gz: 8d095aa46a24e63d4d82d458b3c212374e8af751
5
5
  SHA512:
6
- metadata.gz: 78279f2ea036bd2c39b5b603d0985d6d796f72a4cbfb8fe83355acd6ea4c3b0c9f6540c850d8c7ff15b82bec598e0b38c6f7457f11808151b9a8cb3e39929a5d
7
- data.tar.gz: c3dd5a42d10352ac6c39fe9064c3e30535a0741f4a15a958547845b8acfdc2127f5b1404e1730d2a7d36b33e48bc7813694a3bee2310ccd1cedbc5316f475f40
6
+ metadata.gz: a1580a6a6ced69b6697cff139584e179a0d2922aab01d655e836f085f5de8723b93fe57f7d831217493b0108413ff7bebe7c963772e3064115a7e3289e6a97e7
7
+ data.tar.gz: 77cc29877f848a55e04459c73ca8041769b1ce6043c499e1c2ea6fce5f13d8b48beb319c90e8867a9d696fc3954cbd3053e1c25898c11158a899e8dbf3eaa534
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -24,7 +24,7 @@ account = client.accounts('c3won9gy')
24
24
 
25
25
  # load and update a specific campaign
26
26
  campaign = account.campaigns('4m0gjms')
27
- campaign.paused = true
27
+ campaign.entity_status = EntityStatus::PAUSED
28
28
  campaign.save
29
29
 
30
30
  # iterate through campaigns
data/lib/twitter-ads.rb CHANGED
@@ -27,6 +27,7 @@ require 'twitter-ads/http/request'
27
27
  require 'twitter-ads/http/response'
28
28
  require 'twitter-ads/http/ton_upload'
29
29
 
30
+ require 'twitter-ads/audiences/audience_intelligence'
30
31
  require 'twitter-ads/audiences/tailored_audience'
31
32
 
32
33
  require 'twitter-ads/campaign/app_list'
@@ -56,9 +57,11 @@ require 'twitter-ads/targeting_criteria/behavior_taxonomy'
56
57
  require 'twitter-ads/targeting_criteria/app_store_category'
57
58
 
58
59
  require 'twitter-ads/creative/account_media'
60
+ require 'twitter-ads/creative/cards_fetch'
59
61
  require 'twitter-ads/creative/image_app_download_card'
60
62
  require 'twitter-ads/creative/image_conversation_card'
61
63
  require 'twitter-ads/creative/media_creative'
64
+ require 'twitter-ads/creative/media_library'
62
65
  require 'twitter-ads/creative/promoted_account'
63
66
  require 'twitter-ads/creative/promoted_tweet'
64
67
  require 'twitter-ads/creative/scheduled_tweet'
@@ -67,6 +70,7 @@ require 'twitter-ads/creative/video_conversation_card'
67
70
  require 'twitter-ads/creative/video_website_card'
68
71
  require 'twitter-ads/creative/website_card'
69
72
  require 'twitter-ads/creative/video'
73
+ require 'twitter-ads/creative/poll_cards'
70
74
 
71
75
  require 'twitter-ads/targeting/reach_estimate'
72
76
 
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ class AudienceIntelligence
6
+
7
+ include TwitterAds::DSL
8
+ include TwitterAds::Resource::InstanceMethods
9
+
10
+ attr_reader :account
11
+
12
+ # writable
13
+ property :conversation_type
14
+ property :targeting_inputs
15
+ property :audience_definition
16
+
17
+ # demographics-only
18
+ property :start_time, type: :time
19
+ property :end_time, type: :time
20
+
21
+ # read
22
+ property :operator_type, read_only: true
23
+ property :targeting_type, read_only: true
24
+ property :targeting_value, read_only: true
25
+ property :localized, read_only: true
26
+
27
+ RESOURCE_CONVERSATIONS = "/#{TwitterAds::API_VERSION}/" \
28
+ 'accounts/%{account_id}/audience_intelligence/' \
29
+ 'conversations'.freeze # @api private
30
+ RESOURCE_DEMOGRAPHICS = "/#{TwitterAds::API_VERSION}/" \
31
+ 'accounts/%{account_id}/audience_intelligence/' \
32
+ 'demographics'.freeze # @api private
33
+
34
+ def initialize(account)
35
+ @account = account
36
+ self
37
+ end
38
+
39
+ def conversations
40
+ headers = { 'Content-Type' => 'application/json' }
41
+ params = {
42
+ conversation_type: conversation_type,
43
+ audience_definition: audience_definition,
44
+ targeting_inputs: targeting_inputs
45
+ }
46
+ resource = RESOURCE_CONVERSATIONS % { account_id: account.id }
47
+ request = Request.new(account.client, :post, resource, body: params.to_json, headers: headers)
48
+ Cursor.new(self.class, request, init_with: [account])
49
+ end
50
+
51
+ def demographics
52
+ headers = { 'Content-Type' => 'application/json' }
53
+ params = {
54
+ audience_definition: audience_definition,
55
+ targeting_inputs: targeting_inputs
56
+ }
57
+ resource = RESOURCE_DEMOGRAPHICS % { account_id: account.id }
58
+ response = Request.new(
59
+ account.client,
60
+ :post,
61
+ resource,
62
+ body: params.to_json,
63
+ headers: headers).perform
64
+ response.body[:data]
65
+ # cannot use cursor here given that the response "keys" are dynmaic based on input values
66
+ end
67
+ end
68
+ end
@@ -11,7 +11,6 @@ module TwitterAds
11
11
 
12
12
  property :id, read_only: true
13
13
  property :name, read_only: true
14
- property :cancelled, read_only: true
15
14
  property :credit_limit_local_micro, read_only: true
16
15
  property :currency, read_only: true
17
16
  property :description, read_only: true
@@ -21,7 +20,7 @@ module TwitterAds
21
20
  property :updated_at, type: :time, read_only: true
22
21
  property :deleted, type: :bool, read_only: true
23
22
  property :able_to_fund, type: :bool, read_only: true
24
- property :paused, type: :bool, read_only: true
23
+ property :entity_status, read_only: true
25
24
  property :io_header, read_only: true
26
25
  property :reasons_not_able_to_fund, read_only: true
27
26
 
@@ -3,7 +3,7 @@
3
3
 
4
4
  module TwitterAds
5
5
 
6
- API_VERSION = '2'.freeze
6
+ API_VERSION = '3'.freeze
7
7
 
8
8
  # The Ads API Client class which functions as a
9
9
  # container for basic API consumer information.
@@ -0,0 +1,119 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ module Creative
6
+
7
+ class CardsFetch
8
+
9
+ include TwitterAds::DSL
10
+ include TwitterAds::Resource
11
+ include TwitterAds::Persistence
12
+
13
+ attr_reader :account
14
+
15
+ property :app_country_code, read_only: true
16
+ property :app_cta, read_only: true
17
+ property :card_type, read_only: true
18
+ property :card_uri, read_only: true
19
+ property :content_duration_seconds, read_only: true
20
+ property :created_at, type: :time, read_only: true
21
+ property :deleted, type: :bool, read_only: true
22
+ property :duration_in_minutes, read_only: true
23
+ property :end_time, type: :time, read_only: true
24
+ property :first_choice, read_only: true
25
+ property :first_cta, read_only: true
26
+ property :first_cta_tweet, read_only: true
27
+ property :first_cta_welcome_message_id, read_only: true
28
+ property :fouth_choice, read_only: true
29
+ property :fouth_cta, read_only: true
30
+ property :fouth_cta_tweet, read_only: true
31
+ property :fourth_cta_welcome_message_id, read_only: true
32
+ property :googleplay_app_id, read_only: true
33
+ property :googleplay_deep_link, read_only: true
34
+ property :id, read_only: true
35
+ property :image, read_only: true
36
+ property :image_display_height, read_only: true
37
+ property :image_display_width, read_only: true
38
+ property :ipad_app_id, read_only: true
39
+ property :ipad_deep_link, read_only: true
40
+ property :iphone_app_id, read_only: true
41
+ property :iphone_deep_link, read_only: true
42
+ property :name, read_only: true
43
+ property :preview_url, read_only: true
44
+ property :recipient_user_id, read_only: true
45
+ property :second_choice, read_only: true
46
+ property :second_cta, read_only: true
47
+ property :second_cta_tweet, read_only: true
48
+ property :second_cta_welcome_message_id, read_only: true
49
+ property :start_time, type: :time, read_only: true
50
+ property :thank_you_text, read_only: true
51
+ property :thank_you_url, read_only: true
52
+ property :third_choice, read_only: true
53
+ property :third_cta, read_only: true
54
+ property :third_cta_tweet, read_only: true
55
+ property :third_cta_welcome_message_id, read_only: true
56
+ property :title, read_only: true
57
+ property :updated_at, type: :time, read_only: true
58
+ property :video_content_id, read_only: true
59
+ property :video_height, read_only: true
60
+ property :video_hls_url, read_only: true
61
+ property :video_owner_id, read_only: true
62
+ property :video_poster_height, read_only: true
63
+ property :video_poster_url, read_only: true
64
+ property :video_poster_width, read_only: true
65
+ property :video_width, read_only: true
66
+ property :video_url, read_only: true
67
+ property :website_dest_url, read_only: true
68
+ property :website_display_url, read_only: true
69
+ property :website_shortened_url, read_only: true
70
+ property :website_title, read_only: true
71
+ property :website_url, read_only: true
72
+ property :wide_app_image, read_only: true
73
+ property :id, read_only: true
74
+
75
+ FETCH_URI = "/#{TwitterAds::API_VERSION}/" +
76
+ 'accounts/%{account_id}/cards'.freeze # @api private
77
+ FETCH_ID = "/#{TwitterAds::API_VERSION}/" +
78
+ 'accounts/%{account_id}/cards/all/%{id}'.freeze # @api private
79
+
80
+ def all(*)
81
+ raise ArgumentError.new(
82
+ "'CardsFetch' object has no attribute 'all'")
83
+ end
84
+
85
+ def load(account, card_uri = nil, card_id = nil, with_deleted = nil, opts = {})
86
+ if (card_uri && card_id) || (card_uri.nil? && card_id.nil?)
87
+ raise ArgumentError.new('card_uri and card_id are exclusive parameters. ' \
88
+ 'Please supply one or the other, but not both.')
89
+ end
90
+
91
+ if card_uri
92
+ params = { card_uri: card_uri }.merge!(opts)
93
+ resource = FETCH_URI % { account_id: account.id }
94
+ else
95
+ params = { card_id: card_id }.merge!(opts)
96
+ resource = FETCH_ID % { account_id: account.id, id: card_id }
97
+ end
98
+
99
+ if with_deleted && TwitterAds::Utils.to_bool(with_deleted)
100
+ params = { with_deleted: true }.merge!(opts)
101
+ end
102
+
103
+ response = Request.new(account.client, :get, resource, params: params).perform
104
+ from_response(response.body[:data])
105
+ end
106
+
107
+ def reload!
108
+ load(@account, card_id: @id) if @id
109
+ end
110
+
111
+ def initialize(account)
112
+ @account = account
113
+ self
114
+ end
115
+
116
+ end
117
+
118
+ end
119
+ end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ module Creative
6
+
7
+ class MediaLibrary
8
+
9
+ include TwitterAds::DSL
10
+ include TwitterAds::Resource
11
+ include TwitterAds::Persistence
12
+
13
+ attr_reader :account
14
+
15
+ # read-only
16
+ property :aspect_ratio, read_only: true
17
+ property :created_at, type: :bool, read_only: true
18
+ property :deleted, type: :bool, read_only: true
19
+ property :duration, read_only: true
20
+ property :media_status, read_only: true
21
+ property :media_type, read_only: true
22
+ property :media_url, read_only: true
23
+ property :tweeted, type: :bool, read_only: true
24
+ property :updated_at, type: :time, read_only: true
25
+
26
+ # writable
27
+ property :media_category
28
+ property :media_id
29
+ property :media_key
30
+ property :description
31
+ property :file_name
32
+ property :name
33
+ property :poster_image_media_id
34
+ property :poster_image_media_key
35
+ property :title
36
+
37
+ RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/" +
38
+ 'accounts/%{account_id}/media_library'.freeze # @api private
39
+ RESOURCE = "/#{TwitterAds::API_VERSION}/" +
40
+ 'accounts/%{account_id}/media_library/%{id}'.freeze # @api private
41
+
42
+ def reload(account, opts = {})
43
+ if @media_key
44
+ resource = self.class::RESOURCE % { account_id: account.id, id: media_key }
45
+ response = Request.new(account.client, :get, resource, params: opts).perform
46
+ response.body[:data]
47
+ end
48
+ end
49
+
50
+ def save
51
+ params = to_params
52
+ if @media_key
53
+ resource = self.class::RESOURCE % { account_id: account.id, id: media_key }
54
+ response = Request.new(account.client, :put, resource, params: params).perform
55
+ else
56
+ resource = self.class::RESOURCE_COLLECTION % { account_id: account.id }
57
+ response = Request.new(account.client, :post, resource, params: params).perform
58
+ end
59
+ from_response(response.body[:data])
60
+ end
61
+
62
+ def delete!
63
+ resource = RESOURCE % { account_id: account.id, id: media_key }
64
+ response = Request.new(account.client, :delete, resource).perform
65
+ from_response(response.body[:data])
66
+ end
67
+
68
+ def initialize(account)
69
+ @account = account
70
+ self
71
+ end
72
+
73
+ end
74
+
75
+ end
76
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ module Creative
6
+
7
+ class PollCard
8
+
9
+ include TwitterAds::DSL
10
+ include TwitterAds::Resource
11
+ include TwitterAds::Persistence
12
+
13
+ attr_reader :account
14
+
15
+ property :card_type, read_only: true
16
+ property :card_uri, read_only: true
17
+ property :content_duration_seconds, read_only: true
18
+ property :created_at, type: :time, read_only: true
19
+ property :deleted, type: :bool, read_only: true
20
+ property :end_time, type: :time, read_only: true
21
+ property :id, read_only: true
22
+ property :image, read_only: true
23
+ property :image_display_height, read_only: true
24
+ property :image_display_width, read_only: true
25
+ property :preview_url, read_only: true
26
+ property :start_time, type: :time, read_only: true
27
+ property :updated_at, type: :time, read_only: true
28
+ property :video_height, read_only: true
29
+ property :video_hls_url, read_only: true
30
+ property :video_poster_height, read_only: true
31
+ property :video_poster_url, read_only: true
32
+ property :video_poster_width, read_only: true
33
+ property :video_url, read_only: true
34
+ property :video_width, read_only: true
35
+
36
+ property :duration_in_minutes
37
+ property :name
38
+ property :media_key
39
+ property :first_choice
40
+ property :second_choice
41
+ property :third_choice
42
+ property :fourth_choice
43
+
44
+ RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/" +
45
+ 'accounts/%{account_id}/cards/poll'.freeze # @api private
46
+ RESOURCE = "/#{TwitterAds::API_VERSION}/" +
47
+ 'accounts/%{account_id}/cards/poll/%{id}'.freeze # @api private
48
+
49
+ def initialize(account)
50
+ @account = account
51
+ self
52
+ end
53
+
54
+ end
55
+
56
+ end
57
+ end
@@ -128,6 +128,19 @@ module TwitterAds
128
128
  INTERSTITIAL_LANDSCAPE_TABLET = 'INTERSTITIAL_LANDSCAPE_TABLET'.freeze
129
129
  end
130
130
 
131
+ module MediaCategory
132
+ AMPLIFY_VIDEO = 'AMPLIFY_VIDEO'.freeze
133
+ TWEET_GIF = 'TWEET_GIF'.freeze
134
+ TWEET_IMAGE = 'TWEET_IMAGE'.freeze
135
+ TWEET_VIDEO = 'TWEET_VIDEO'.freeze
136
+ end
137
+
138
+ module MediaType
139
+ GIF = 'GIF'.freeze
140
+ IMAGE = 'IMAGE'.freeze
141
+ VIDEO = 'VIDEO'.freeze
142
+ end
143
+
131
144
  module Optimizations
132
145
  DEFAULT = 'DEFAULT'.freeze
133
146
  WEBSITE_CONVERSIONS = 'WEBSITE_CONVERSIONS'.freeze
@@ -198,5 +211,15 @@ module TwitterAds
198
211
  DOUBLE_CLICK = 'DOUBLE_CLICK'.freeze
199
212
  end
200
213
 
214
+ module ConversationType
215
+ EVENT = 'EVENT'.freeze
216
+ HANDLE = 'HANDLE'.freeze
217
+ HASHTAG = 'HASHTAG'.freeze
218
+ end
219
+
220
+ module AudienceDefinition
221
+ TARGETING_CRITERIA = 'TARGETING_CRITERIA'.freeze
222
+ KEYWORD_AUDIENCE = 'KEYWORD_AUDIENCE'.freeze
223
+ end
201
224
  end
202
225
  end
@@ -2,5 +2,5 @@
2
2
  # Copyright (C) 2015 Twitter, Inc.
3
3
 
4
4
  module TwitterAds
5
- VERSION = '2.0.0'.freeze
5
+ VERSION = '3.0.0'.freeze
6
6
  end
@@ -11,7 +11,7 @@
11
11
  "standard_delivery": true,
12
12
  "total_budget_amount_local_micro": null,
13
13
  "id": "2wap7",
14
- "paused": false,
14
+ "entity_status": "ACTIVE",
15
15
  "account_id": "2iqph",
16
16
  "currency": "USD",
17
17
  "created_at": "2015-08-12T20:26:24Z",
@@ -13,11 +13,11 @@
13
13
  "description": "Denesik, O'Reilly and Zulauf",
14
14
  "credit_limit_local_micro": null,
15
15
  "end_time": "2017-02-28T08:15:40Z",
16
- "cancelled": false,
17
16
  "id": "5aa0p",
18
- "paused": false,
17
+ "entity_status": "ACTIVE",
19
18
  "account_id": "2iqph",
20
19
  "reasons_not_able_to_fund": [],
20
+ "io_header": null,
21
21
  "currency": "USD",
22
22
  "funded_amount_local_micro": 5000000000,
23
23
  "created_at": "2015-08-19T01:35:10Z",
@@ -32,13 +32,13 @@
32
32
  "description": "Simonis-Barton",
33
33
  "credit_limit_local_micro": null,
34
34
  "end_time": "2012-07-12T06:59:59Z",
35
- "cancelled": false,
36
35
  "id": "7cdql",
37
- "paused": false,
36
+ "entity_status": "ACTIVE",
38
37
  "account_id": "2iqph",
39
38
  "reasons_not_able_to_fund": [
40
39
  "EXPIRED"
41
40
  ],
41
+ "io_header": null,
42
42
  "currency": "USD",
43
43
  "funded_amount_local_micro": 5000000000,
44
44
  "created_at": "2011-07-11T17:33:01Z",
@@ -53,11 +53,11 @@
53
53
  "description": "Farrell Group",
54
54
  "credit_limit_local_micro": 5000000000,
55
55
  "end_time": "2017-02-28T08:15:40Z",
56
- "cancelled": false,
57
56
  "id": "dhuk2",
58
- "paused": false,
57
+ "entity_status": "ACTIVE",
59
58
  "account_id": "2iqph",
60
59
  "reasons_not_able_to_fund": [],
60
+ "io_header": null,
61
61
  "currency": "USD",
62
62
  "funded_amount_local_micro": null,
63
63
  "created_at": "2015-08-19T01:35:10Z",
@@ -5,11 +5,11 @@
5
5
  "description": "Denesik, O'Reilly and Zulauf",
6
6
  "credit_limit_local_micro": null,
7
7
  "end_time": "2017-02-28T08:15:40Z",
8
- "cancelled": false,
9
8
  "id": "5aa0p",
10
- "paused": false,
9
+ "entity_status": "ACTIVE",
11
10
  "account_id": "2iqph",
12
11
  "reasons_not_able_to_fund": [],
12
+ "io_header": null,
13
13
  "currency": "USD",
14
14
  "funded_amount_local_micro": 5000000000,
15
15
  "created_at": "2015-08-19T01:35:10Z",
data/twitter-ads.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.version = TwitterAds::VERSION
9
9
  s.platform = Gem::Platform::RUBY
10
10
  s.licenses = ['MIT']
11
- s.authors = ['Brandon Black', 'John Babich', 'Jacob Petrie']
11
+ s.authors = ['John Babich', 'Tushar Bhushan', 'Juan Shishido']
12
12
  s.email = ['twitterdev-ads@twitter.com']
13
13
  s.homepage = 'https://github.com/twitterdev/twitter-ruby-ads-sdk'
14
14
  s.description = 'The officially supported Twitter Ads API SDK for Ruby.'
metadata CHANGED
@@ -1,39 +1,38 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitter-ads
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Brandon Black
8
7
  - John Babich
9
- - Jacob Petrie
8
+ - Tushar Bhushan
9
+ - Juan Shishido
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain:
13
13
  - |
14
14
  -----BEGIN CERTIFICATE-----
15
- MIIDkjCCAnqgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMRcwFQYDVQQDDA50d2l0
16
- dGVyZGV2LWFkczEXMBUGCgmSJomT8ixkARkWB3R3aXR0ZXIxEzARBgoJkiaJk/Is
17
- ZAEZFgNjb20wHhcNMTcwMTEyMDIwNTIxWhcNMTgwMTEyMDIwNTIxWjBHMRcwFQYD
18
- VQQDDA50d2l0dGVyZGV2LWFkczEXMBUGCgmSJomT8ixkARkWB3R3aXR0ZXIxEzAR
19
- BgoJkiaJk/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
20
- AQCohThVTk44k9/nFQyBlZBpf6fxtqxtJkSUPQjBLyiXgNwtbsK1XVX7isPCe48P
21
- EfLyXhflaNdAxu4Ho26/Zdt3S2qyfP1hAWVmwJKTqVsE1bUnSTPcWs1LYWeyIkW2
22
- 5GRAndY6aQn9zncEVu/Ri8umA8NsIUL3WBVW1wcR28e61Fq1Js8Vqeui5n8C+sh3
23
- lce3vrlY1UtBeGmGGA5rQQTiGzN3FCUdjHo8bqq7AWw5jIwdRA3rOpT7zj25ppc9
24
- 7IacnOz8U7lJ/xjDwnZqkzQCPESSIWWUqhhaQY4c3cfq7nxHDVnxtN9DA7uzOLKx
25
- 8cM8dbobNw3Of/TTs1CG/dKTAgMBAAGjgYgwgYUwCQYDVR0TBAIwADALBgNVHQ8E
26
- BAMCBLAwHQYDVR0OBBYEFF/89vydkzOdlfrSj279rAJq5UNZMCUGA1UdEQQeMByB
27
- GnR3aXR0ZXJkZXYtYWRzQHR3aXR0ZXIuY29tMCUGA1UdEgQeMByBGnR3aXR0ZXJk
28
- ZXYtYWRzQHR3aXR0ZXIuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQClOgtZ70c9sj73
29
- X3I0lXKHxTv+Pwvd3dRp7NXJzPjmq93muuj5uyHsi5gbQdHul8pRka3i5qxZodNn
30
- vWguk67iWN7m4pIqEtc456JflY2H5UWnChLHCmZ5MqrKNJh9us8cClyKn3/rBqnV
31
- uu/+mfbfpqDp2MLLKFo77cFNXpzKl0JmKyxtBJlWCK6PeTqU3IvWIvQ9R1OfyMN0
32
- B0nhMKYDZajZXhtjz/tyeakKeyVZV/99hDa63V+08xClwMLVHNoc1+no48kXRog5
33
- ouZXSlxLCCseakgV8oMPuyzeHOo/xRmPR+aePyLRG8makXFDQIVfHE2YdLuARcEy
34
- rpYQ/nux
15
+ MIIDgDCCAmigAwIBAgIBATANBgkqhkiG9w0BAQUFADBDMRMwEQYDVQQDDAphZHNh
16
+ cGktZGV2MRcwFQYKCZImiZPyLGQBGRYHdHdpdHRlcjETMBEGCgmSJomT8ixkARkW
17
+ A2NvbTAeFw0xODAzMjIxNDU1NDNaFw0xOTAzMjIxNDU1NDNaMEMxEzARBgNVBAMM
18
+ CmFkc2FwaS1kZXYxFzAVBgoJkiaJk/IsZAEZFgd0d2l0dGVyMRMwEQYKCZImiZPy
19
+ LGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvc9MVtVP
20
+ iFcis6l0AVMhrz6PY2q6phws6rXDVlnfJ6YoCzKVaZQ7/F7rNccgBRm3e1YtfSMS
21
+ Rbi6utXIyvi5w6f05R8ete2aI1mzocoErsg179ohrp9NCE1kkfX+1LV/HbFPhmcm
22
+ KjbmBisAhcAz2SHUk+GBq8fbfKj+jv/K0WpsCinZtd38s96dBIiWK/o+evpSCXIo
23
+ OwCwP+rxj9m3R6ZbyhFmagfMl3bTk8Xw+UZwc1GgCOJwODVqHMV7/ryyX6IY/Wbu
24
+ Xw7hQ/4+dMs3xumArhfjQG/3ocHLo4jFScXJ0JYY+b1fW7b0EuvTAEoIcUctNz8o
25
+ R+ptZC3y2GQ2BQIDAQABo38wfTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
26
+ HQ4EFgQU/NBrOwjh8uJx/JrAN0FA9dy+RsIwIQYDVR0RBBowGIEWYWRzYXBpLWRl
27
+ dkB0d2l0dGVyLmNvbTAhBgNVHRIEGjAYgRZhZHNhcGktZGV2QHR3aXR0ZXIuY29t
28
+ MA0GCSqGSIb3DQEBBQUAA4IBAQAHgAKu94Ix68zuH9+sd89YLpj/bQKyrsW/YZMK
29
+ JOIbklJGn2xzipuOnaiWCnetm4twROdmVqz+eu7DPFpVRuh8yd72/w5xO8GPBihs
30
+ WiE4Wn2nS83n6szuSHtz+Osuwnpwi+IGcRaUU5k0ql4wzq0ThxfV1JLp1rYhioWn
31
+ AwnieA4MlAGo5XyxOBSfgWz6J7qsG9iyvbMMSzn81PX0bUz0n0F1W4A+GPnn62/C
32
+ 6/42oM9SP/6CMxevv7dmeQsbzuQWezV1EvcgHn8ITnFH9JXY8ZfDXPVyqvxPjeFH
33
+ gs09+Abi4upZUoQi8GBp5k0sYT1f3aGIpxtuAJtahWypI+LI
35
34
  -----END CERTIFICATE-----
36
- date: 2017-12-13 00:00:00.000000000 Z
35
+ date: 2018-03-22 00:00:00.000000000 Z
37
36
  dependencies:
38
37
  - !ruby/object:Gem::Dependency
39
38
  name: multi_json
@@ -92,6 +91,7 @@ files:
92
91
  - bin/twitter-ads
93
92
  - lib/twitter-ads.rb
94
93
  - lib/twitter-ads/account.rb
94
+ - lib/twitter-ads/audiences/audience_intelligence.rb
95
95
  - lib/twitter-ads/audiences/tailored_audience.rb
96
96
  - lib/twitter-ads/campaign/app_list.rb
97
97
  - lib/twitter-ads/campaign/campaign.rb
@@ -104,9 +104,12 @@ files:
104
104
  - lib/twitter-ads/campaign/tweet.rb
105
105
  - lib/twitter-ads/client.rb
106
106
  - lib/twitter-ads/creative/account_media.rb
107
+ - lib/twitter-ads/creative/cards_fetch.rb
107
108
  - lib/twitter-ads/creative/image_app_download_card.rb
108
109
  - lib/twitter-ads/creative/image_conversation_card.rb
109
110
  - lib/twitter-ads/creative/media_creative.rb
111
+ - lib/twitter-ads/creative/media_library.rb
112
+ - lib/twitter-ads/creative/poll_cards.rb
110
113
  - lib/twitter-ads/creative/promoted_account.rb
111
114
  - lib/twitter-ads/creative/promoted_tweet.rb
112
115
  - lib/twitter-ads/creative/scheduled_tweet.rb
metadata.gz.sig CHANGED
Binary file