twitter-ads 10.0.0 → 11.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/lib/twitter-ads/campaign/campaign.rb +2 -2
- data/lib/twitter-ads/campaign/line_item.rb +1 -2
- data/lib/twitter-ads/client.rb +1 -1
- data/lib/twitter-ads/creative/cards.rb +31 -22
- data/lib/twitter-ads/creative/draft_tweet.rb +0 -1
- data/lib/twitter-ads/cursor.rb +2 -2
- data/lib/twitter-ads/enum.rb +4 -0
- data/lib/twitter-ads/resources/analytics.rb +1 -2
- data/lib/twitter-ads/version.rb +1 -1
- data/lib/twitter-ads.rb +0 -4
- data/spec/fixtures/cards_all.json +836 -0
- data/spec/fixtures/cards_load.json +42 -0
- data/spec/twitter-ads/campaign/line_item_spec.rb +1 -0
- data/spec/twitter-ads/creative/cards_spec.rb +52 -0
- metadata +41 -39
- data/lib/twitter-ads/creative/image_app_download_card.rb +0 -47
- data/lib/twitter-ads/creative/video_app_download_card.rb +0 -48
- data/lib/twitter-ads/creative/video_website_card.rb +0 -50
- data/lib/twitter-ads/creative/website_card.rb +0 -45
@@ -0,0 +1,42 @@
|
|
1
|
+
{
|
2
|
+
"request": {
|
3
|
+
"params": {
|
4
|
+
"account_id": "2iqph",
|
5
|
+
"card_id": "1503831318555086849"
|
6
|
+
}
|
7
|
+
},
|
8
|
+
"data": {
|
9
|
+
"name": "my new card",
|
10
|
+
"components": [
|
11
|
+
{
|
12
|
+
"media_key": "13_794652834998325248",
|
13
|
+
"media_metadata": {
|
14
|
+
"13_794652834998325248": {
|
15
|
+
"type": "VIDEO",
|
16
|
+
"url": "https://video.twimg.com/amplify_video/794652834998325248/vid/640x360/pUgE2UKcfPwF_5Uh.mp4",
|
17
|
+
"width": 640,
|
18
|
+
"height": 360,
|
19
|
+
"video_duration": 7967,
|
20
|
+
"video_aspect_ratio": "16:9"
|
21
|
+
}
|
22
|
+
},
|
23
|
+
"type": "MEDIA"
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"title": "Twitter",
|
27
|
+
"destination": {
|
28
|
+
"url": "http://twitter.com/login",
|
29
|
+
"type": "WEBSITE"
|
30
|
+
},
|
31
|
+
"type": "DETAILS"
|
32
|
+
}
|
33
|
+
],
|
34
|
+
"id": "1503831318555086849",
|
35
|
+
"created_at": "2022-03-15T20:31:40Z",
|
36
|
+
"card_uri": "card://1503831318555086849",
|
37
|
+
"updated_at": "2022-03-15T20:31:40Z",
|
38
|
+
"deleted": false,
|
39
|
+
"card_type": "VIDEO_WEBSITE"
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Copyright (C) 2019 Twitter, Inc.
|
3
|
+
|
4
|
+
require 'spec_helper'
|
5
|
+
|
6
|
+
include TwitterAds::Enum
|
7
|
+
|
8
|
+
describe TwitterAds::Creative::Cards do
|
9
|
+
|
10
|
+
let!(:resource) { "#{ADS_API}/accounts/2iqph/cards" }
|
11
|
+
|
12
|
+
before(:each) do
|
13
|
+
stub_fixture(:get, :accounts_load, "#{ADS_API}/accounts/2iqph")
|
14
|
+
|
15
|
+
resource_collection = "#{ADS_API}/accounts/#{account.id}/cards"
|
16
|
+
stub_fixture(:get, :cards_all, resource_collection)
|
17
|
+
|
18
|
+
resource = "#{ADS_API}/accounts/#{account.id}/cards/1508693734346485761"
|
19
|
+
stub_fixture(:get, :cards_load, /#{resource}\?.*/)
|
20
|
+
end
|
21
|
+
|
22
|
+
let(:client) do
|
23
|
+
Client.new(
|
24
|
+
Faker::Lorem.characters(40),
|
25
|
+
Faker::Lorem.characters(40),
|
26
|
+
Faker::Lorem.characters(40),
|
27
|
+
Faker::Lorem.characters(40)
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
let(:account) { client.accounts('2iqph') }
|
32
|
+
|
33
|
+
it 'inspect Cards.load() response' do
|
34
|
+
card = described_class.load(account, '1508693734346485761')
|
35
|
+
|
36
|
+
expect(card).to be_instance_of(TwitterAds::Creative::Cards)
|
37
|
+
expect(card.id).to eq '1503831318555086849'
|
38
|
+
expect(card.card_type).to eq 'VIDEO_WEBSITE'
|
39
|
+
expect(card.card_uri).to eq 'card://1503831318555086849'
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'inspect Cards.all() response' do
|
43
|
+
cards = described_class.all(account)
|
44
|
+
|
45
|
+
expect(cards).to be_instance_of(Cursor)
|
46
|
+
card = cards.first
|
47
|
+
expect(card.id).to eq '1340029888649076737'
|
48
|
+
expect(card.card_type).to eq 'VIDEO_WEBSITE'
|
49
|
+
expect(card.card_uri).to eq 'card://1340029888649076737'
|
50
|
+
end
|
51
|
+
|
52
|
+
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:
|
4
|
+
version: 11.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Babich
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2022-05-27 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: multi_json
|
@@ -75,7 +75,6 @@ files:
|
|
75
75
|
- lib/twitter-ads/creative/cards.rb
|
76
76
|
- lib/twitter-ads/creative/cards_fetch.rb
|
77
77
|
- lib/twitter-ads/creative/draft_tweet.rb
|
78
|
-
- lib/twitter-ads/creative/image_app_download_card.rb
|
79
78
|
- lib/twitter-ads/creative/image_conversation_card.rb
|
80
79
|
- lib/twitter-ads/creative/media_creative.rb
|
81
80
|
- lib/twitter-ads/creative/media_library.rb
|
@@ -85,10 +84,7 @@ files:
|
|
85
84
|
- lib/twitter-ads/creative/scheduled_tweet.rb
|
86
85
|
- lib/twitter-ads/creative/tweet_previews.rb
|
87
86
|
- lib/twitter-ads/creative/tweets.rb
|
88
|
-
- lib/twitter-ads/creative/video_app_download_card.rb
|
89
87
|
- lib/twitter-ads/creative/video_conversation_card.rb
|
90
|
-
- lib/twitter-ads/creative/video_website_card.rb
|
91
|
-
- lib/twitter-ads/creative/website_card.rb
|
92
88
|
- lib/twitter-ads/cursor.rb
|
93
89
|
- lib/twitter-ads/enum.rb
|
94
90
|
- lib/twitter-ads/error.rb
|
@@ -128,6 +124,8 @@ files:
|
|
128
124
|
- spec/fixtures/audience_estimate.json
|
129
125
|
- spec/fixtures/campaigns_all.json
|
130
126
|
- spec/fixtures/campaigns_load.json
|
127
|
+
- spec/fixtures/cards_all.json
|
128
|
+
- spec/fixtures/cards_load.json
|
131
129
|
- spec/fixtures/custom_audiences_all.json
|
132
130
|
- spec/fixtures/custom_audiences_load.json
|
133
131
|
- spec/fixtures/funding_instruments_all.json
|
@@ -159,6 +157,7 @@ files:
|
|
159
157
|
- spec/twitter-ads/campaign/tracking_tag_spec.rb
|
160
158
|
- spec/twitter-ads/campaign/tweet_spec.rb
|
161
159
|
- spec/twitter-ads/client_spec.rb
|
160
|
+
- spec/twitter-ads/creative/cards_spec.rb
|
162
161
|
- spec/twitter-ads/creative/media_creative_spec.rb
|
163
162
|
- spec/twitter-ads/creative/promoted_account_spec.rb
|
164
163
|
- spec/twitter-ads/creative/promoted_tweet_spec.rb
|
@@ -189,57 +188,60 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
189
188
|
- !ruby/object:Gem::Version
|
190
189
|
version: 2.6.0
|
191
190
|
requirements: []
|
192
|
-
rubygems_version: 3.
|
191
|
+
rubygems_version: 3.1.6
|
193
192
|
signing_key:
|
194
193
|
specification_version: 4
|
195
194
|
summary: The officially supported Twitter Ads API SDK for Ruby.
|
196
195
|
test_files:
|
197
|
-
- spec/
|
198
|
-
- spec/fixtures/
|
199
|
-
- spec/fixtures/accounts_load.json
|
196
|
+
- spec/quality_spec.rb
|
197
|
+
- spec/fixtures/promoted_tweets_all.json
|
200
198
|
- spec/fixtures/app_lists_all.json
|
199
|
+
- spec/fixtures/accounts_features.json
|
200
|
+
- spec/fixtures/tracking_tags_load.json
|
201
|
+
- spec/fixtures/line_items_load.json
|
202
|
+
- spec/fixtures/line_items_all.json
|
203
|
+
- spec/fixtures/campaigns_load.json
|
201
204
|
- spec/fixtures/app_lists_load.json
|
202
|
-
- spec/fixtures/audience_estimate.json
|
203
205
|
- spec/fixtures/campaigns_all.json
|
204
|
-
- spec/fixtures/
|
205
|
-
- spec/fixtures/
|
206
|
-
- spec/fixtures/custom_audiences_load.json
|
207
|
-
- spec/fixtures/funding_instruments_all.json
|
206
|
+
- spec/fixtures/tailored_audiences_all.json
|
207
|
+
- spec/fixtures/tweet_previews.json
|
208
208
|
- spec/fixtures/funding_instruments_load.json
|
209
|
-
- spec/fixtures/
|
210
|
-
- spec/fixtures/
|
211
|
-
- spec/fixtures/
|
212
|
-
- spec/fixtures/
|
213
|
-
- spec/fixtures/promotable_users_all.json
|
209
|
+
- spec/fixtures/accounts_load.json
|
210
|
+
- spec/fixtures/cards_all.json
|
211
|
+
- spec/fixtures/videos_load.json
|
212
|
+
- spec/fixtures/videos_all.json
|
214
213
|
- spec/fixtures/promotable_users_load.json
|
215
|
-
- spec/fixtures/
|
216
|
-
- spec/fixtures/promoted_tweets_load.json
|
214
|
+
- spec/fixtures/accounts_all.json
|
217
215
|
- spec/fixtures/reach_estimate.json
|
218
|
-
- spec/fixtures/tailored_audiences_all.json
|
219
216
|
- spec/fixtures/targeted_audiences.json
|
220
|
-
- spec/fixtures/
|
221
|
-
- spec/fixtures/
|
222
|
-
- spec/fixtures/
|
223
|
-
- spec/fixtures/
|
224
|
-
- spec/
|
217
|
+
- spec/fixtures/audience_estimate.json
|
218
|
+
- spec/fixtures/promoted_tweets_load.json
|
219
|
+
- spec/fixtures/custom_audiences_load.json
|
220
|
+
- spec/fixtures/funding_instruments_all.json
|
221
|
+
- spec/fixtures/promotable_users_all.json
|
222
|
+
- spec/fixtures/placements.json
|
223
|
+
- spec/fixtures/cards_load.json
|
224
|
+
- spec/fixtures/no_content.json
|
225
|
+
- spec/fixtures/custom_audiences_all.json
|
225
226
|
- spec/shared/properties.rb
|
226
|
-
- spec/spec_helper.rb
|
227
227
|
- spec/support/helpers.rb
|
228
|
+
- spec/twitter-ads/placements_spec.rb
|
228
229
|
- spec/twitter-ads/account_spec.rb
|
229
|
-
- spec/twitter-ads/
|
230
|
-
- spec/twitter-ads/
|
231
|
-
- spec/twitter-ads/campaign/line_item_spec.rb
|
230
|
+
- spec/twitter-ads/retry_count_spec.rb
|
231
|
+
- spec/twitter-ads/client_spec.rb
|
232
232
|
- spec/twitter-ads/campaign/targeting_criteria_spec.rb
|
233
|
-
- spec/twitter-ads/campaign/
|
233
|
+
- spec/twitter-ads/campaign/line_item_spec.rb
|
234
234
|
- spec/twitter-ads/campaign/tweet_spec.rb
|
235
|
-
- spec/twitter-ads/
|
236
|
-
- spec/twitter-ads/
|
235
|
+
- spec/twitter-ads/campaign/tracking_tag_spec.rb
|
236
|
+
- spec/twitter-ads/campaign/app_list_spec.rb
|
237
|
+
- spec/twitter-ads/utils_spec.rb
|
238
|
+
- spec/twitter-ads/audiences/custom_audience_spec.rb
|
239
|
+
- spec/twitter-ads/cursor_spec.rb
|
240
|
+
- spec/twitter-ads/creative/cards_spec.rb
|
237
241
|
- spec/twitter-ads/creative/promoted_account_spec.rb
|
238
242
|
- spec/twitter-ads/creative/promoted_tweet_spec.rb
|
239
243
|
- spec/twitter-ads/creative/tweet_previews_spec.rb
|
240
|
-
- spec/twitter-ads/
|
241
|
-
- spec/twitter-ads/placements_spec.rb
|
244
|
+
- spec/twitter-ads/creative/media_creative_spec.rb
|
242
245
|
- spec/twitter-ads/rate_limit_spec.rb
|
243
|
-
- spec/twitter-ads/retry_count_spec.rb
|
244
246
|
- spec/twitter-ads/targeting/audience_estimate_spec.rb
|
245
|
-
- spec/
|
247
|
+
- spec/spec_helper.rb
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Copyright (C) 2019 Twitter, Inc.
|
3
|
-
|
4
|
-
module TwitterAds
|
5
|
-
module Creative
|
6
|
-
|
7
|
-
class ImageAppDownloadCard
|
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 :created_at, type: :time, read_only: true
|
18
|
-
property :deleted, type: :bool, read_only: true
|
19
|
-
property :id, read_only: true
|
20
|
-
property :image_display_height, read_only: true
|
21
|
-
property :image_display_width, read_only: true
|
22
|
-
property :updated_at, type: :time, read_only: true
|
23
|
-
property :media_url, read_only: true
|
24
|
-
|
25
|
-
property :country_code
|
26
|
-
property :app_cta
|
27
|
-
property :googleplay_app_id
|
28
|
-
property :googleplay_deep_link
|
29
|
-
property :ios_app_store_identifier
|
30
|
-
property :ios_deep_link
|
31
|
-
property :name
|
32
|
-
property :media_key
|
33
|
-
|
34
|
-
RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/" \
|
35
|
-
'accounts/%{account_id}/cards/image_app_download' # @api private
|
36
|
-
RESOURCE = "/#{TwitterAds::API_VERSION}/" \
|
37
|
-
'accounts/%{account_id}/cards/image_app_download/%{id}' # @api private
|
38
|
-
|
39
|
-
def initialize(account)
|
40
|
-
@account = account
|
41
|
-
self
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Copyright (C) 2019 Twitter, Inc.
|
3
|
-
|
4
|
-
module TwitterAds
|
5
|
-
module Creative
|
6
|
-
|
7
|
-
class VideoAppDownloadCard
|
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 :created_at, type: :time, read_only: true
|
18
|
-
property :deleted, type: :bool, read_only: true
|
19
|
-
property :id, read_only: true
|
20
|
-
property :updated_at, type: :time, read_only: true
|
21
|
-
property :video_owner_id, read_only: true
|
22
|
-
property :poster_media_url, read_only: true
|
23
|
-
property :media_url, read_only: true
|
24
|
-
|
25
|
-
property :country_code
|
26
|
-
property :app_cta
|
27
|
-
property :poster_media_key
|
28
|
-
property :ios_app_store_identifier
|
29
|
-
property :ios_deep_link
|
30
|
-
property :googleplay_app_id
|
31
|
-
property :googleplay_deep_link
|
32
|
-
property :name
|
33
|
-
property :media_key
|
34
|
-
|
35
|
-
RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/" \
|
36
|
-
'accounts/%{account_id}/cards/video_app_download' # @api private
|
37
|
-
RESOURCE = "/#{TwitterAds::API_VERSION}/" \
|
38
|
-
'accounts/%{account_id}/cards/video_app_download/%{id}' # @api private
|
39
|
-
|
40
|
-
def initialize(account)
|
41
|
-
@account = account
|
42
|
-
self
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Copyright (C) 2019 Twitter, Inc.
|
3
|
-
|
4
|
-
module TwitterAds
|
5
|
-
module Creative
|
6
|
-
|
7
|
-
class VideoWebsiteCard
|
8
|
-
|
9
|
-
include TwitterAds::DSL
|
10
|
-
include TwitterAds::Resource
|
11
|
-
include TwitterAds::Persistence
|
12
|
-
|
13
|
-
attr_reader :account
|
14
|
-
|
15
|
-
property :account_id, read_only: true
|
16
|
-
property :card_type, read_only: true
|
17
|
-
property :card_uri, read_only: true
|
18
|
-
property :created_at, type: :time, read_only: true
|
19
|
-
property :deleted, type: :bool, read_only: true
|
20
|
-
property :id, read_only: true
|
21
|
-
property :updated_at, type: :time, read_only: true
|
22
|
-
property :video_height, read_only: true
|
23
|
-
property :video_owner_id, read_only: true
|
24
|
-
property :video_poster_height, read_only: true
|
25
|
-
property :poster_media_url, read_only: true
|
26
|
-
property :video_poster_width, read_only: true
|
27
|
-
property :media_url, read_only: true
|
28
|
-
property :video_width, read_only: true
|
29
|
-
property :website_display_url, read_only: true
|
30
|
-
property :website_dest_url, read_only: true
|
31
|
-
|
32
|
-
property :name
|
33
|
-
property :title
|
34
|
-
property :media_key
|
35
|
-
property :website_url
|
36
|
-
|
37
|
-
RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/accounts/%{account_id}/cards/video_website"
|
38
|
-
# @api private
|
39
|
-
RESOURCE = "/#{TwitterAds::API_VERSION}/" \
|
40
|
-
'accounts/%{account_id}/cards/video_website/%{id}' # @api private
|
41
|
-
|
42
|
-
def initialize(account)
|
43
|
-
@account = account
|
44
|
-
self
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
50
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# Copyright (C) 2019 Twitter, Inc.
|
3
|
-
|
4
|
-
module TwitterAds
|
5
|
-
module Creative
|
6
|
-
|
7
|
-
class WebsiteCard
|
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 :created_at, type: :time, read_only: true
|
18
|
-
property :deleted, type: :bool, read_only: true
|
19
|
-
property :id, read_only: true
|
20
|
-
property :media_url, read_only: true
|
21
|
-
property :image_display_height, read_only: true
|
22
|
-
property :image_display_width, read_only: true
|
23
|
-
property :updated_at, type: :time, read_only: true
|
24
|
-
property :website_dest_url, read_only: true
|
25
|
-
property :website_display_url, read_only: true
|
26
|
-
|
27
|
-
property :media_key
|
28
|
-
property :name
|
29
|
-
property :website_title
|
30
|
-
property :website_url
|
31
|
-
|
32
|
-
RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/accounts/%{account_id}/cards/website"
|
33
|
-
# @api private
|
34
|
-
RESOURCE = "/#{TwitterAds::API_VERSION}/accounts/%{account_id}/cards/website/%{id}"
|
35
|
-
# @api private
|
36
|
-
|
37
|
-
def initialize(account)
|
38
|
-
@account = account
|
39
|
-
self
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
end
|