twitter-ads 1.0.0 → 1.1.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 +4 -4
- checksums.yaml.gz.sig +1 -2
- data.tar.gz.sig +0 -0
- data/lib/twitter-ads.rb +6 -0
- data/lib/twitter-ads/account.rb +8 -0
- data/lib/twitter-ads/campaign/campaign.rb +7 -1
- data/lib/twitter-ads/campaign/funding_instrument.rb +4 -0
- data/lib/twitter-ads/campaign/iab_category.rb +23 -0
- data/lib/twitter-ads/campaign/line_item.rb +6 -0
- data/lib/twitter-ads/campaign/organic_tweet.rb +12 -0
- data/lib/twitter-ads/campaign/targeting_criteria.rb +6 -0
- data/lib/twitter-ads/enum.rb +8 -7
- data/lib/twitter-ads/http/ton_upload.rb +2 -2
- data/lib/twitter-ads/measurement/app_event_tag.rb +29 -0
- data/lib/twitter-ads/measurement/web_event_tag.rb +28 -0
- data/lib/twitter-ads/resources/analytics.rb +7 -2
- data/lib/twitter-ads/resources/batch.rb +65 -0
- data/lib/twitter-ads/targeting/reach_estimate.rb +5 -3
- data/lib/twitter-ads/version.rb +1 -1
- data/twitter-ads.gemspec +2 -2
- metadata +40 -34
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 515186149614e6ad01864e1c993d6d507b9b700a
|
4
|
+
data.tar.gz: 35a9ccc5c1d33bfe13b46ea21841e9c1fe504e87
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb3b164f846c1588f9a4f878c78b095c8c2d995023b5f198c464de95f71f7bc48f882adc2c5904aba04d3b4b17e84757335a5060b6b03208038e1e5dec76e12d
|
7
|
+
data.tar.gz: fddb7139f5e4f6fe7d29eb672ce89e384fb37f3adccbdc8843dc5205e34cfb6ec736bd8a02668349263297933299617c9acbbf05e8d483d6fafa9d3969bd7df1
|
checksums.yaml.gz.sig
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
�="���&[l=HA:�� �$29+2C,3�1���ݽ@c=��*��^,�R�F���
|
1
|
+
��� B֡#�9#{�����[dgA@Y�/w�]��"�|���l����#.��Q:蹖|�T9�Ì���n��,�i(K��`{�/���w&\yjN�:,��\ӈ8�J�[�%��S���>)��$F��"ui�3i��m��=z�K���Ȯ��%�����:Z�,'I��.��\ �����k�.�A�m���K��eB�Z�j�����n3R1��a��i9y�|�6��=C�ɿ�k�v�z5��y�
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/twitter-ads.rb
CHANGED
@@ -17,6 +17,7 @@ require 'twitter-ads/resources/dsl'
|
|
17
17
|
require 'twitter-ads/resources/resource'
|
18
18
|
require 'twitter-ads/resources/persistence'
|
19
19
|
require 'twitter-ads/resources/analytics'
|
20
|
+
require 'twitter-ads/resources/batch'
|
20
21
|
|
21
22
|
require 'twitter-ads/client'
|
22
23
|
require 'twitter-ads/cursor'
|
@@ -35,6 +36,8 @@ require 'twitter-ads/campaign/line_item'
|
|
35
36
|
require 'twitter-ads/campaign/promotable_user'
|
36
37
|
require 'twitter-ads/campaign/targeting_criteria'
|
37
38
|
require 'twitter-ads/campaign/tweet'
|
39
|
+
require 'twitter-ads/campaign/organic_tweet'
|
40
|
+
require 'twitter-ads/campaign/iab_category'
|
38
41
|
|
39
42
|
require 'twitter-ads/enum'
|
40
43
|
|
@@ -69,4 +72,7 @@ require 'twitter-ads/creative/video'
|
|
69
72
|
|
70
73
|
require 'twitter-ads/targeting/reach_estimate'
|
71
74
|
|
75
|
+
require 'twitter-ads/measurement/web_event_tag'
|
76
|
+
require 'twitter-ads/measurement/app_event_tag'
|
77
|
+
|
72
78
|
require 'twitter-ads/legacy.rb'
|
data/lib/twitter-ads/account.rb
CHANGED
@@ -227,6 +227,14 @@ module TwitterAds
|
|
227
227
|
response.body[:data]
|
228
228
|
end
|
229
229
|
|
230
|
+
def web_event_tags(id = nil, opts = {})
|
231
|
+
load_resource(WebEventTag, id, opts)
|
232
|
+
end
|
233
|
+
|
234
|
+
def app_event_tags(id = nil, opts = {})
|
235
|
+
load_resource(AppEventTag, id, opts)
|
236
|
+
end
|
237
|
+
|
230
238
|
private
|
231
239
|
|
232
240
|
def load_resource(klass, id = nil, opts = {})
|
@@ -7,6 +7,8 @@ module TwitterAds
|
|
7
7
|
include TwitterAds::DSL
|
8
8
|
include TwitterAds::Resource
|
9
9
|
include TwitterAds::Persistence
|
10
|
+
include TwitterAds::Analytics
|
11
|
+
include TwitterAds::Batch
|
10
12
|
|
11
13
|
attr_reader :account
|
12
14
|
|
@@ -27,10 +29,14 @@ module TwitterAds
|
|
27
29
|
property :daily_budget_amount_local_micro
|
28
30
|
property :total_budget_amount_local_micro
|
29
31
|
|
32
|
+
# sdk only
|
33
|
+
property :to_delete, type: :bool
|
34
|
+
|
30
35
|
RESOURCE_COLLECTION = '/1/accounts/%{account_id}/campaigns'.freeze # @api private
|
31
36
|
RESOURCE_STATS = '/1/stats/accounts/%{account_id}'.freeze # @api private
|
32
37
|
RESOURCE_ASYNC_STATS = '/1/stats/jobs/accounts/%{account_id}'.freeze # @api private
|
33
|
-
|
38
|
+
RESOURCE_BATCH = '/1/batch/accounts/%{account_id}/campaigns'.freeze # @api private
|
39
|
+
RESOURCE = '/1/accounts/%{account_id}/campaigns/%{id}'.freeze # @api private
|
34
40
|
|
35
41
|
def initialize(account)
|
36
42
|
@account = account
|
@@ -20,6 +20,10 @@ module TwitterAds
|
|
20
20
|
property :created_at, type: :time, read_only: true
|
21
21
|
property :updated_at, type: :time, read_only: true
|
22
22
|
property :deleted, type: :bool, read_only: true
|
23
|
+
property :able_to_fund, type: :bool, read_only: true
|
24
|
+
property :paused, type: :bool, read_only: true
|
25
|
+
property :io_header, read_only: true
|
26
|
+
property :reasons_not_able_to_fund, read_only: true
|
23
27
|
|
24
28
|
RESOURCE_COLLECTION = '/1/accounts/%{account_id}/funding_instruments'.freeze # @api private
|
25
29
|
RESOURCE = '/1/accounts/%{account_id}/funding_instruments/%{id}'.freeze # @api private
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Copyright (C) 2015 Twitter, Inc.
|
3
|
+
|
4
|
+
module TwitterAds
|
5
|
+
class IABCategory
|
6
|
+
|
7
|
+
include TwitterAds::DSL
|
8
|
+
include TwitterAds::Resource
|
9
|
+
|
10
|
+
attr_reader :account
|
11
|
+
|
12
|
+
property :id, read_only: true
|
13
|
+
property :name, read_only: true
|
14
|
+
property :parent_id, read_only: true
|
15
|
+
|
16
|
+
RESOURCE_COLLECTION = '/1/iab_categories'.freeze # @api private
|
17
|
+
|
18
|
+
def initialize(account)
|
19
|
+
@account = account
|
20
|
+
self
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -8,6 +8,7 @@ module TwitterAds
|
|
8
8
|
include TwitterAds::Resource
|
9
9
|
include TwitterAds::Persistence
|
10
10
|
include TwitterAds::Analytics
|
11
|
+
include TwitterAds::Batch
|
11
12
|
|
12
13
|
attr_reader :account
|
13
14
|
|
@@ -32,15 +33,20 @@ module TwitterAds
|
|
32
33
|
property :automatically_select_bid
|
33
34
|
property :bid_amount_local_micro
|
34
35
|
property :total_budget_amount_local_micro
|
36
|
+
property :target_cpa_local_micro
|
35
37
|
|
36
38
|
# beta (not yet generally available)
|
37
39
|
property :advertiser_user_id
|
38
40
|
property :bid_type
|
39
41
|
property :tracking_tags
|
40
42
|
|
43
|
+
# sdk only
|
44
|
+
property :to_delete, type: :bool
|
45
|
+
|
41
46
|
RESOURCE_COLLECTION = '/1/accounts/%{account_id}/line_items'.freeze # @api private
|
42
47
|
RESOURCE_STATS = '/1/stats/accounts/%{account_id}'.freeze # @api private
|
43
48
|
RESOURCE_ASYNC_STATS = '/1/stats/jobs/accounts/%{account_id}'.freeze # @api private
|
49
|
+
RESOURCE_BATCH = '/1/batch/accounts/%{account_id}/line_items'.freeze # @api private
|
44
50
|
RESOURCE = '/1/accounts/%{account_id}/line_items/%{id}'.freeze # @api private
|
45
51
|
RESOURCE_PLACEMENTS = '/1/line_items/placements'.freeze # @api private
|
46
52
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Copyright (C) 2015 Twitter, Inc.
|
3
|
+
# Author Bob, Nugit
|
4
|
+
|
5
|
+
module TwitterAds
|
6
|
+
class OrganicTweet
|
7
|
+
|
8
|
+
include TwitterAds::Analytics
|
9
|
+
|
10
|
+
RESOURCE_ASYNC_STATS = '/1/stats/jobs/accounts/%{account_id}'.freeze # @api private
|
11
|
+
end
|
12
|
+
end
|
@@ -7,6 +7,7 @@ module TwitterAds
|
|
7
7
|
include TwitterAds::DSL
|
8
8
|
include TwitterAds::Persistence
|
9
9
|
include TwitterAds::Resource::InstanceMethods
|
10
|
+
include TwitterAds::Batch
|
10
11
|
|
11
12
|
attr_reader :account
|
12
13
|
|
@@ -22,8 +23,13 @@ module TwitterAds
|
|
22
23
|
property :targeting_value
|
23
24
|
property :tailored_audience_expansion, type: :bool
|
24
25
|
property :tailored_audience_type
|
26
|
+
property :location_type
|
27
|
+
|
28
|
+
# sdk only
|
29
|
+
property :to_delete, type: :bool
|
25
30
|
|
26
31
|
RESOURCE_COLLECTION = '/1/accounts/%{account_id}/targeting_criteria'.freeze # @api private
|
32
|
+
RESOURCE_BATCH = '/1/batch/accounts/%{account_id}/targeting_criteria'.freeze # @api private
|
27
33
|
RESOURCE = '/1/accounts/%{account_id}/targeting_criteria/%{id}'.freeze # @api private
|
28
34
|
|
29
35
|
def initialize(account)
|
data/lib/twitter-ads/enum.rb
CHANGED
@@ -7,13 +7,14 @@ module TwitterAds
|
|
7
7
|
module Enum
|
8
8
|
|
9
9
|
module Objective
|
10
|
-
APP_ENGAGEMENTS
|
11
|
-
APP_INSTALLS
|
12
|
-
FOLLOWERS
|
13
|
-
LEAD_GENERATION
|
14
|
-
TWEET_ENGAGEMENTS
|
15
|
-
VIDEO_VIEWS
|
16
|
-
WEBSITE_CLICKS
|
10
|
+
APP_ENGAGEMENTS = 'APP_ENGAGEMENTS'.freeze
|
11
|
+
APP_INSTALLS = 'APP_INSTALLS'.freeze
|
12
|
+
FOLLOWERS = 'FOLLOWERS'.freeze
|
13
|
+
LEAD_GENERATION = 'LEAD_GENERATION'.freeze
|
14
|
+
TWEET_ENGAGEMENTS = 'TWEET_ENGAGEMENTS'.freeze
|
15
|
+
VIDEO_VIEWS = 'VIDEO_VIEWS'.freeze
|
16
|
+
WEBSITE_CLICKS = 'WEBSITE_CLICKS'.freeze
|
17
|
+
WEBSITE_CONVERSIONS = 'WEBSITE_CONVERSIONS'.freeze
|
17
18
|
|
18
19
|
end
|
19
20
|
|
@@ -10,7 +10,7 @@ module TwitterAds
|
|
10
10
|
DEFAULT_RESOURCE = '/1.1/ton/bucket/'.freeze # @api private
|
11
11
|
DEFAULT_BUCKET = 'ta_partner'.freeze # @api private
|
12
12
|
DEFAULT_EXPIRE = (Time.now + 10 * 24 * 60 * 60).httpdate # @api private
|
13
|
-
MIN_FILE_SIZE = 1024 * 1024 *
|
13
|
+
MIN_FILE_SIZE = 1024 * 1024 * 64 # @api private
|
14
14
|
|
15
15
|
private_constant :DEFAULT_DOMAIN,
|
16
16
|
:DEFAULT_BUCKET,
|
@@ -71,7 +71,7 @@ module TwitterAds
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
-
location
|
74
|
+
location.split('?')[0]
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Copyright (C) 2015 Twitter, Inc.
|
3
|
+
|
4
|
+
module TwitterAds
|
5
|
+
class AppEventTag
|
6
|
+
|
7
|
+
include TwitterAds::DSL
|
8
|
+
include TwitterAds::Resource
|
9
|
+
include TwitterAds::Persistence
|
10
|
+
|
11
|
+
property :id, read_only: true
|
12
|
+
property :account_id
|
13
|
+
property :app_store_identifier
|
14
|
+
property :os_type
|
15
|
+
property :conversion_type
|
16
|
+
property :provider_app_event_id
|
17
|
+
property :provider_app_event_name
|
18
|
+
property :deleted, read_only: true
|
19
|
+
property :post_view_attribution_window
|
20
|
+
property :post_engagement_attribution_window
|
21
|
+
|
22
|
+
RESOURCE_COLLECTION = '/1/accounts/%{account_id}/app_event_tags'.freeze # @api private
|
23
|
+
|
24
|
+
def initialize(account)
|
25
|
+
@account = account
|
26
|
+
self
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Copyright (C) 2015 Twitter, Inc.
|
3
|
+
|
4
|
+
module TwitterAds
|
5
|
+
class WebEventTag
|
6
|
+
|
7
|
+
include TwitterAds::DSL
|
8
|
+
include TwitterAds::Resource
|
9
|
+
include TwitterAds::Persistence
|
10
|
+
|
11
|
+
property :id, read_only: true
|
12
|
+
property :name
|
13
|
+
property :retargeting_enabled, type: :bool
|
14
|
+
property :status, read_only: true
|
15
|
+
property :type
|
16
|
+
property :view_through_window
|
17
|
+
property :deleted, read_only: true
|
18
|
+
property :embed_code, read_only: true
|
19
|
+
property :click_window
|
20
|
+
|
21
|
+
RESOURCE_COLLECTION = '/1/accounts/%{account_id}/web_event_tags'.freeze # @api private
|
22
|
+
|
23
|
+
def initialize(account)
|
24
|
+
@account = account
|
25
|
+
self
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -8,6 +8,7 @@ module TwitterAds
|
|
8
8
|
module Analytics
|
9
9
|
|
10
10
|
ANALYTICS_MAP = {
|
11
|
+
'TwitterAds::Campaign' => 'CAMPAIGN'.freeze,
|
11
12
|
'TwitterAds::LineItem' => 'LINE_ITEM'.freeze,
|
12
13
|
'TwitterAds::OrganicTweet' => 'ORGANIC_TWEET'.freeze,
|
13
14
|
'TwitterAds::Creative::PromotedTweet' => 'PROMOTED_TWEET'.freeze
|
@@ -119,6 +120,8 @@ module TwitterAds
|
|
119
120
|
granularity = opts.fetch(:granularity, :hour)
|
120
121
|
placement = opts.fetch(:placement, Placement::ALL_ON_TWITTER)
|
121
122
|
segmentation_type = opts.fetch(:segmentation_type, nil)
|
123
|
+
country = opts.fetch(:country, nil)
|
124
|
+
platform = opts.fetch(:platform, nil)
|
122
125
|
|
123
126
|
params = {
|
124
127
|
metric_groups: metric_groups.join(','),
|
@@ -126,8 +129,10 @@ module TwitterAds
|
|
126
129
|
end_time: TwitterAds::Utils.to_time(end_time, granularity),
|
127
130
|
granularity: granularity.to_s.upcase,
|
128
131
|
entity: ANALYTICS_MAP[name],
|
129
|
-
placement: placement
|
130
|
-
|
132
|
+
placement: placement,
|
133
|
+
country: country,
|
134
|
+
platform: platform
|
135
|
+
}.compact
|
131
136
|
|
132
137
|
params[:segmentation_type] = segmentation_type.to_s.upcase if segmentation_type
|
133
138
|
params['entity_ids'] = ids.join(',')
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Copyright (C) 2015 Twitter, Inc.
|
3
|
+
|
4
|
+
module TwitterAds
|
5
|
+
module Batch
|
6
|
+
|
7
|
+
CLASS_ID_MAP = {
|
8
|
+
'TwitterAds::LineItem' => 'LINE_ITEM'.freeze,
|
9
|
+
'TwitterAds::Campaign' => 'CAMPAIGN'.freeze,
|
10
|
+
'TwitterAds::TargetingCriteria' => 'TARGETING_CRITERION'.freeze
|
11
|
+
}.freeze # @api private
|
12
|
+
|
13
|
+
def self.included(klass)
|
14
|
+
klass.extend ClassMethods
|
15
|
+
end
|
16
|
+
|
17
|
+
module ClassMethods
|
18
|
+
|
19
|
+
# Makes batch request(s) for a passed in list of objects
|
20
|
+
#
|
21
|
+
# @param account [Account] The Account object instance.
|
22
|
+
# @param objs [Array] A collection of entities to save.
|
23
|
+
#
|
24
|
+
# @since 1.1.0
|
25
|
+
def batch_save(account, objs)
|
26
|
+
resource = self::RESOURCE_BATCH % { account_id: account.id }
|
27
|
+
|
28
|
+
json_body = []
|
29
|
+
|
30
|
+
objs.each do |obj|
|
31
|
+
entity_type = CLASS_ID_MAP[obj.class.name].downcase
|
32
|
+
obj_params = obj.to_params
|
33
|
+
obj_json = { 'params' => obj_params }
|
34
|
+
|
35
|
+
if obj.id.nil?
|
36
|
+
obj_json['operation_type'] = 'Create'
|
37
|
+
elsif obj.to_delete == true
|
38
|
+
obj_json['operation_type'] = 'Delete'
|
39
|
+
obj_json['params'][entity_type + '_id'] = obj.id
|
40
|
+
else
|
41
|
+
obj_json['operation_type'] = 'Update'
|
42
|
+
obj_json['params'][entity_type + '_id'] = obj.id
|
43
|
+
end
|
44
|
+
|
45
|
+
json_body.push(obj_json)
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
headers = { 'Content-Type' => 'application/json' }
|
50
|
+
response = TwitterAds::Request.new(account.client,
|
51
|
+
:post,
|
52
|
+
resource,
|
53
|
+
headers: headers,
|
54
|
+
body: json_body.to_json).perform
|
55
|
+
|
56
|
+
# persist each entity
|
57
|
+
objs.zip(response.body[:data]) { |obj, res_obj|
|
58
|
+
obj.from_response(res_obj)
|
59
|
+
}
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
@@ -55,9 +55,11 @@ module TwitterAds
|
|
55
55
|
def fetch(account, product_type, objective, campaign_daily_budget,
|
56
56
|
opts = {})
|
57
57
|
resource = "/1/accounts/#{account.id}/reach_estimate"
|
58
|
-
params = {
|
59
|
-
|
60
|
-
|
58
|
+
params = {
|
59
|
+
product_type: product_type,
|
60
|
+
objective: objective,
|
61
|
+
campaign_daily_budget_amount_local_micro: campaign_daily_budget
|
62
|
+
}.merge!(opts)
|
61
63
|
|
62
64
|
# The response value count is "bid sensitive", we default to bid_type=AUTO here to preserve
|
63
65
|
# expected behavior despite an API change that occurred in December 2015.
|
data/lib/twitter-ads/version.rb
CHANGED
data/twitter-ads.gemspec
CHANGED
@@ -8,8 +8,8 @@ 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']
|
12
|
-
s.email = ['
|
11
|
+
s.authors = ['Brandon Black', 'John Babich', 'Jacob Petrie']
|
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.'
|
15
15
|
s.summary = s.description
|
metadata
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twitter-ads
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Black
|
8
|
+
- John Babich
|
9
|
+
- Jacob Petrie
|
8
10
|
autorequire:
|
9
11
|
bindir: bin
|
10
12
|
cert_chain:
|
@@ -12,89 +14,86 @@ cert_chain:
|
|
12
14
|
-----BEGIN CERTIFICATE-----
|
13
15
|
MIIDkjCCAnqgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMRcwFQYDVQQDDA50d2l0
|
14
16
|
dGVyZGV2LWFkczEXMBUGCgmSJomT8ixkARkWB3R3aXR0ZXIxEzARBgoJkiaJk/Is
|
15
|
-
|
17
|
+
ZAEZFgNjb20wHhcNMTcwMTEyMDIwNTIxWhcNMTgwMTEyMDIwNTIxWjBHMRcwFQYD
|
16
18
|
VQQDDA50d2l0dGVyZGV2LWFkczEXMBUGCgmSJomT8ixkARkWB3R3aXR0ZXIxEzAR
|
17
19
|
BgoJkiaJk/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
AQCohThVTk44k9/nFQyBlZBpf6fxtqxtJkSUPQjBLyiXgNwtbsK1XVX7isPCe48P
|
21
|
+
EfLyXhflaNdAxu4Ho26/Zdt3S2qyfP1hAWVmwJKTqVsE1bUnSTPcWs1LYWeyIkW2
|
22
|
+
5GRAndY6aQn9zncEVu/Ri8umA8NsIUL3WBVW1wcR28e61Fq1Js8Vqeui5n8C+sh3
|
23
|
+
lce3vrlY1UtBeGmGGA5rQQTiGzN3FCUdjHo8bqq7AWw5jIwdRA3rOpT7zj25ppc9
|
24
|
+
7IacnOz8U7lJ/xjDwnZqkzQCPESSIWWUqhhaQY4c3cfq7nxHDVnxtN9DA7uzOLKx
|
25
|
+
8cM8dbobNw3Of/TTs1CG/dKTAgMBAAGjgYgwgYUwCQYDVR0TBAIwADALBgNVHQ8E
|
26
|
+
BAMCBLAwHQYDVR0OBBYEFF/89vydkzOdlfrSj279rAJq5UNZMCUGA1UdEQQeMByB
|
25
27
|
GnR3aXR0ZXJkZXYtYWRzQHR3aXR0ZXIuY29tMCUGA1UdEgQeMByBGnR3aXR0ZXJk
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
28
|
+
ZXYtYWRzQHR3aXR0ZXIuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQClOgtZ70c9sj73
|
29
|
+
X3I0lXKHxTv+Pwvd3dRp7NXJzPjmq93muuj5uyHsi5gbQdHul8pRka3i5qxZodNn
|
30
|
+
vWguk67iWN7m4pIqEtc456JflY2H5UWnChLHCmZ5MqrKNJh9us8cClyKn3/rBqnV
|
31
|
+
uu/+mfbfpqDp2MLLKFo77cFNXpzKl0JmKyxtBJlWCK6PeTqU3IvWIvQ9R1OfyMN0
|
32
|
+
B0nhMKYDZajZXhtjz/tyeakKeyVZV/99hDa63V+08xClwMLVHNoc1+no48kXRog5
|
33
|
+
ouZXSlxLCCseakgV8oMPuyzeHOo/xRmPR+aePyLRG8makXFDQIVfHE2YdLuARcEy
|
34
|
+
rpYQ/nux
|
33
35
|
-----END CERTIFICATE-----
|
34
|
-
date:
|
36
|
+
date: 2017-01-12 00:00:00.000000000 Z
|
35
37
|
dependencies:
|
36
38
|
- !ruby/object:Gem::Dependency
|
37
39
|
name: multi_json
|
38
40
|
requirement: !ruby/object:Gem::Requirement
|
39
41
|
requirements:
|
40
|
-
- -
|
42
|
+
- - ~>
|
41
43
|
- !ruby/object:Gem::Version
|
42
44
|
version: '1.11'
|
43
45
|
type: :runtime
|
44
46
|
prerelease: false
|
45
47
|
version_requirements: !ruby/object:Gem::Requirement
|
46
48
|
requirements:
|
47
|
-
- -
|
49
|
+
- - ~>
|
48
50
|
- !ruby/object:Gem::Version
|
49
51
|
version: '1.11'
|
50
52
|
- !ruby/object:Gem::Dependency
|
51
53
|
name: oauth
|
52
54
|
requirement: !ruby/object:Gem::Requirement
|
53
55
|
requirements:
|
54
|
-
- -
|
56
|
+
- - ~>
|
55
57
|
- !ruby/object:Gem::Version
|
56
58
|
version: '0.4'
|
57
59
|
type: :runtime
|
58
60
|
prerelease: false
|
59
61
|
version_requirements: !ruby/object:Gem::Requirement
|
60
62
|
requirements:
|
61
|
-
- -
|
63
|
+
- - ~>
|
62
64
|
- !ruby/object:Gem::Version
|
63
65
|
version: '0.4'
|
64
66
|
- !ruby/object:Gem::Dependency
|
65
67
|
name: bundler
|
66
68
|
requirement: !ruby/object:Gem::Requirement
|
67
69
|
requirements:
|
68
|
-
- -
|
70
|
+
- - ~>
|
69
71
|
- !ruby/object:Gem::Version
|
70
72
|
version: '1.6'
|
71
73
|
type: :development
|
72
74
|
prerelease: false
|
73
75
|
version_requirements: !ruby/object:Gem::Requirement
|
74
76
|
requirements:
|
75
|
-
- -
|
77
|
+
- - ~>
|
76
78
|
- !ruby/object:Gem::Version
|
77
79
|
version: '1.6'
|
78
80
|
description: The officially supported Twitter Ads API SDK for Ruby.
|
79
81
|
email:
|
80
|
-
-
|
82
|
+
- twitterdev-ads@twitter.com
|
81
83
|
executables:
|
82
84
|
- twitter-ads
|
83
85
|
extensions: []
|
84
86
|
extra_rdoc_files: []
|
85
87
|
files:
|
86
|
-
- CONTRIBUTING.md
|
87
|
-
- LICENSE
|
88
|
-
- README.md
|
89
|
-
- Rakefile
|
90
88
|
- bin/twitter-ads
|
91
|
-
- lib/twitter-ads.rb
|
92
89
|
- lib/twitter-ads/account.rb
|
93
90
|
- lib/twitter-ads/audiences/tailored_audience.rb
|
94
91
|
- lib/twitter-ads/campaign/app_list.rb
|
95
92
|
- lib/twitter-ads/campaign/campaign.rb
|
96
93
|
- lib/twitter-ads/campaign/funding_instrument.rb
|
94
|
+
- lib/twitter-ads/campaign/iab_category.rb
|
97
95
|
- lib/twitter-ads/campaign/line_item.rb
|
96
|
+
- lib/twitter-ads/campaign/organic_tweet.rb
|
98
97
|
- lib/twitter-ads/campaign/promotable_user.rb
|
99
98
|
- lib/twitter-ads/campaign/targeting_criteria.rb
|
100
99
|
- lib/twitter-ads/campaign/tweet.rb
|
@@ -118,7 +117,10 @@ files:
|
|
118
117
|
- lib/twitter-ads/http/response.rb
|
119
118
|
- lib/twitter-ads/http/ton_upload.rb
|
120
119
|
- lib/twitter-ads/legacy.rb
|
120
|
+
- lib/twitter-ads/measurement/app_event_tag.rb
|
121
|
+
- lib/twitter-ads/measurement/web_event_tag.rb
|
121
122
|
- lib/twitter-ads/resources/analytics.rb
|
123
|
+
- lib/twitter-ads/resources/batch.rb
|
122
124
|
- lib/twitter-ads/resources/dsl.rb
|
123
125
|
- lib/twitter-ads/resources/persistence.rb
|
124
126
|
- lib/twitter-ads/resources/resource.rb
|
@@ -140,6 +142,12 @@ files:
|
|
140
142
|
- lib/twitter-ads/targeting_criteria/tv_show.rb
|
141
143
|
- lib/twitter-ads/utils.rb
|
142
144
|
- lib/twitter-ads/version.rb
|
145
|
+
- lib/twitter-ads.rb
|
146
|
+
- twitter-ads.gemspec
|
147
|
+
- LICENSE
|
148
|
+
- README.md
|
149
|
+
- CONTRIBUTING.md
|
150
|
+
- Rakefile
|
143
151
|
- spec/fixtures/accounts_all.json
|
144
152
|
- spec/fixtures/accounts_features.json
|
145
153
|
- spec/fixtures/accounts_load.json
|
@@ -190,7 +198,6 @@ files:
|
|
190
198
|
- spec/twitter-ads/cursor_spec.rb
|
191
199
|
- spec/twitter-ads/placements_spec.rb
|
192
200
|
- spec/twitter-ads/utils_spec.rb
|
193
|
-
- twitter-ads.gemspec
|
194
201
|
homepage: https://github.com/twitterdev/twitter-ruby-ads-sdk
|
195
202
|
licenses:
|
196
203
|
- MIT
|
@@ -201,17 +208,17 @@ require_paths:
|
|
201
208
|
- lib
|
202
209
|
required_ruby_version: !ruby/object:Gem::Requirement
|
203
210
|
requirements:
|
204
|
-
- -
|
211
|
+
- - '>='
|
205
212
|
- !ruby/object:Gem::Version
|
206
213
|
version: 2.0.0
|
207
214
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
208
215
|
requirements:
|
209
|
-
- -
|
216
|
+
- - '>='
|
210
217
|
- !ruby/object:Gem::Version
|
211
218
|
version: 2.0.0
|
212
219
|
requirements: []
|
213
220
|
rubyforge_project:
|
214
|
-
rubygems_version: 2.
|
221
|
+
rubygems_version: 2.0.14.1
|
215
222
|
signing_key:
|
216
223
|
specification_version: 4
|
217
224
|
summary: The officially supported Twitter Ads API SDK for Ruby.
|
@@ -266,4 +273,3 @@ test_files:
|
|
266
273
|
- spec/twitter-ads/cursor_spec.rb
|
267
274
|
- spec/twitter-ads/placements_spec.rb
|
268
275
|
- spec/twitter-ads/utils_spec.rb
|
269
|
-
has_rdoc:
|
metadata.gz.sig
CHANGED
Binary file
|