datasift 3.7.2 → 3.8.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
- data/CHANGELOG.md +8 -0
- data/datasift.gemspec +6 -3
- data/lib/api/api_resource.rb +1 -1
- data/lib/datasift.rb +53 -16
- data/lib/errors.rb +8 -0
- data/lib/live_stream.rb +7 -7
- data/lib/pylon.rb +59 -26
- data/lib/tasks.rb +51 -0
- data/lib/version.rb +3 -0
- metadata +5 -83
- data/.gitignore +0 -12
- data/.rubocop.yml +0 -12
- data/.rubocop_todo.yml +0 -497
- data/.travis.yml +0 -17
- data/Gemfile +0 -15
- data/LICENSE +0 -19
- data/MIGRATING_TO_V.3.0.0.md +0 -262
- data/Rakefile +0 -10
- data/VERSION +0 -1
- data/examples/account_eg.rb +0 -33
- data/examples/account_identity_eg.rb +0 -50
- data/examples/account_identity_limit_eg.rb +0 -72
- data/examples/account_identity_token_eg.rb +0 -73
- data/examples/auth.rb +0 -55
- data/examples/cli.sh +0 -155
- data/examples/core_api_eg.rb +0 -50
- data/examples/historics_eg.rb +0 -66
- data/examples/historics_preview_eg.rb +0 -31
- data/examples/ingestion/twitter_gnip_batch_eg.rb +0 -61
- data/examples/live_stream_eg.rb +0 -92
- data/examples/managed_source_fb_eg.rb +0 -129
- data/examples/managed_source_ig_eg.rb +0 -126
- data/examples/pull.rb +0 -47
- data/examples/push_eg.rb +0 -51
- data/examples/pylon/pylon_api_v1.2_eg.rb +0 -166
- data/examples/pylon/pylon_api_v1.3_eg.rb +0 -201
- data/test/datasift/account/account_api_test.rb +0 -35
- data/test/datasift/core_api_test.rb +0 -179
- data/test/datasift/historics_preview_api_test.rb +0 -56
- data/test/datasift/odp/batch_upload_test.rb +0 -52
- data/test/datasift/push_api_test.rb +0 -238
- data/test/fixtures/cassettes/account/usage/default.json +0 -1
- data/test/fixtures/cassettes/account/usage/invalid.json +0 -1
- data/test/fixtures/cassettes/account/usage/valid_params.json +0 -1
- data/test/fixtures/cassettes/core/after_historic_dpu.json +0 -1
- data/test/fixtures/cassettes/core/balance_get.json +0 -1
- data/test/fixtures/cassettes/core/before_dpu.json +0 -1
- data/test/fixtures/cassettes/core/before_historic_dpu.json +0 -1
- data/test/fixtures/cassettes/core/compile_success.json +0 -1
- data/test/fixtures/cassettes/core/dpu_get_cost.json +0 -1
- data/test/fixtures/cassettes/core/dpu_throw_badrequest.json +0 -1
- data/test/fixtures/cassettes/core/historic_dpu.json +0 -1
- data/test/fixtures/cassettes/core/usage_success.json +0 -1
- data/test/fixtures/cassettes/core/validate_invalid_hash.json +0 -1
- data/test/fixtures/cassettes/core/validate_success_bool.json +0 -1
- data/test/fixtures/cassettes/core/validate_success_hash.json +0 -1
- data/test/fixtures/cassettes/odp/batch/after_upload.json +0 -1
- data/test/fixtures/cassettes/odp/batch/before_upload.json +0 -1
- data/test/fixtures/cassettes/odp/batch/upload_failure_no_source.json +0 -1
- data/test/fixtures/cassettes/odp/batch/upload_success.json +0 -1
- data/test/fixtures/cassettes/preview/before_preview_create.json +0 -1
- data/test/fixtures/cassettes/preview/before_preview_get.json +0 -1
- data/test/fixtures/cassettes/preview/preview_create_success.json +0 -1
- data/test/fixtures/cassettes/preview/preview_get_success.json +0 -1
- data/test/fixtures/cassettes/push/after_push_create.json +0 -1
- data/test/fixtures/cassettes/push/after_push_get.json +0 -1
- data/test/fixtures/cassettes/push/after_push_log.json +0 -1
- data/test/fixtures/cassettes/push/after_push_pause.json +0 -1
- data/test/fixtures/cassettes/push/after_push_resume.json +0 -1
- data/test/fixtures/cassettes/push/after_push_stop.json +0 -1
- data/test/fixtures/cassettes/push/after_push_update.json +0 -1
- data/test/fixtures/cassettes/push/before_push_create.json +0 -1
- data/test/fixtures/cassettes/push/before_push_delete.json +0 -1
- data/test/fixtures/cassettes/push/before_push_get.json +0 -1
- data/test/fixtures/cassettes/push/before_push_log.json +0 -1
- data/test/fixtures/cassettes/push/before_push_pause.json +0 -1
- data/test/fixtures/cassettes/push/before_push_resume.json +0 -1
- data/test/fixtures/cassettes/push/before_push_stop.json +0 -1
- data/test/fixtures/cassettes/push/before_push_update.json +0 -1
- data/test/fixtures/cassettes/push/push_create.json +0 -1
- data/test/fixtures/cassettes/push/push_delete.json +0 -1
- data/test/fixtures/cassettes/push/push_get_by_id.json +0 -1
- data/test/fixtures/cassettes/push/push_log_with_id.json +0 -1
- data/test/fixtures/cassettes/push/push_pause.json +0 -1
- data/test/fixtures/cassettes/push/push_resume.json +0 -1
- data/test/fixtures/cassettes/push/push_stop.json +0 -1
- data/test/fixtures/cassettes/push/push_update.json +0 -1
- data/test/fixtures/cassettes/push/push_validate.json +0 -1
- data/test/fixtures/data/fake_gnip_tweets.json +0 -10
- data/test/test_helper.rb +0 -49
@@ -1,73 +0,0 @@
|
|
1
|
-
require './auth'
|
2
|
-
class AccountIdentityTokenEg < DataSiftExample
|
3
|
-
def initialize
|
4
|
-
super
|
5
|
-
@datasift = DataSift::Client.new(@config)
|
6
|
-
run
|
7
|
-
end
|
8
|
-
|
9
|
-
def run
|
10
|
-
begin
|
11
|
-
puts "Create a new identity to create tokens for"
|
12
|
-
identity = @datasift.account_identity.create(
|
13
|
-
"Ruby Identity for Tokena",
|
14
|
-
"active",
|
15
|
-
false
|
16
|
-
)
|
17
|
-
identity_id = identity[:data][:id]
|
18
|
-
puts identity[:data].to_json
|
19
|
-
|
20
|
-
puts "\nCreate a Token for our Identity"
|
21
|
-
puts @datasift.account_identity_token.create(
|
22
|
-
identity_id,
|
23
|
-
'facebook',
|
24
|
-
'YOUR_TOKEN'
|
25
|
-
)[:data].to_json
|
26
|
-
|
27
|
-
puts "\nList all existing Tokens for this Identity"
|
28
|
-
puts @datasift.account_identity_token.list(
|
29
|
-
identity_id
|
30
|
-
)[:data].to_json
|
31
|
-
|
32
|
-
puts "\nGet existing Token by Identity and Service"
|
33
|
-
puts @datasift.account_identity_token.get(
|
34
|
-
identity_id,
|
35
|
-
'facebook'
|
36
|
-
)[:data].to_json
|
37
|
-
|
38
|
-
puts "\nUpdate a Token for a given Identity"
|
39
|
-
puts @datasift.account_identity_token.update(
|
40
|
-
identity_id,
|
41
|
-
'facebook',
|
42
|
-
'YOUR_NEW_TOKEN'
|
43
|
-
)[:data].to_json
|
44
|
-
|
45
|
-
puts "\nDelete an Token for a given Identity and Service"
|
46
|
-
puts @datasift.account_identity_token.delete(
|
47
|
-
identity_id,
|
48
|
-
'facebook'
|
49
|
-
)[:data].to_json
|
50
|
-
|
51
|
-
puts "\nCleanup and remove the Identity"
|
52
|
-
@datasift.account_identity.delete(identity_id)
|
53
|
-
|
54
|
-
rescue DataSiftError => dse
|
55
|
-
puts dse.inspect
|
56
|
-
# Then match specific error to take action;
|
57
|
-
# All errors thrown by the client extend DataSiftError
|
58
|
-
case dse
|
59
|
-
when ConnectionError
|
60
|
-
# some connection error
|
61
|
-
when AuthError
|
62
|
-
when BadRequestError
|
63
|
-
puts '[WARNING] You will need to use a valid token to run through this example'
|
64
|
-
else
|
65
|
-
# do something else...
|
66
|
-
end
|
67
|
-
puts "\nCleanup and remove the Identity"
|
68
|
-
@datasift.account_identity.delete(identity_id)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
AccountIdentityTokenEg.new
|
data/examples/auth.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
class DataSiftExample
|
2
|
-
require 'datasift'
|
3
|
-
|
4
|
-
def initialize
|
5
|
-
@config = {
|
6
|
-
username: 'DATASIFT_USERNAME',
|
7
|
-
api_key: 'DATASIFT_API_KEY',
|
8
|
-
api_version: 'v1.3'
|
9
|
-
}
|
10
|
-
@params = {
|
11
|
-
output_type: 's3',
|
12
|
-
output_params: {
|
13
|
-
bucket: 'YOUR_BUCKET_NAME',
|
14
|
-
directory: 'ruby',
|
15
|
-
acl: 'private',
|
16
|
-
delivery_frequency: 0,
|
17
|
-
max_size: 104857600,
|
18
|
-
file_prefix: 'DataSift',
|
19
|
-
auth: {
|
20
|
-
access_key: 'ADD_YOUR_ACCESS_KEY',
|
21
|
-
secret_key: 'ADD_YOUR_SECRET_KEY',
|
22
|
-
}
|
23
|
-
}
|
24
|
-
}
|
25
|
-
@pull_params = {
|
26
|
-
output_type: 'pull',
|
27
|
-
output_params: {
|
28
|
-
max_size: 52428800
|
29
|
-
}
|
30
|
-
}
|
31
|
-
@datasift = DataSift::Client.new(@config)
|
32
|
-
end
|
33
|
-
|
34
|
-
attr_reader :datasift, :params
|
35
|
-
|
36
|
-
def create_push(hash, is_historics_id = false)
|
37
|
-
create_params = @params.merge ({
|
38
|
-
# Hash or historics_id can be used, but not both
|
39
|
-
name: 'My awesome push subscription',
|
40
|
-
initial_status: 'active', # or 'paused' or 'waiting_for_start'
|
41
|
-
})
|
42
|
-
if is_historics_id
|
43
|
-
create_params.merge!(historics_id: hash)
|
44
|
-
else
|
45
|
-
# Start and end are not valid for historics
|
46
|
-
create_params.merge!(
|
47
|
-
hash: hash,
|
48
|
-
start: Time.now.to_i,
|
49
|
-
end: Time.now.to_i + 320
|
50
|
-
)
|
51
|
-
end
|
52
|
-
puts 'Creating subscription'
|
53
|
-
@datasift.push.create create_params
|
54
|
-
end
|
55
|
-
end
|
data/examples/cli.sh
DELETED
@@ -1,155 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
command -v jq >/dev/null 2>&1 || { echo >&2 "jq command must be available. See http://stedolan.github.io/jq/. Aborting."; exit 1; }
|
3
|
-
|
4
|
-
set -e
|
5
|
-
|
6
|
-
DEFAULT_API='api.datasift.com'
|
7
|
-
|
8
|
-
CC=${1:$CC}
|
9
|
-
DU=${2:-$DU}
|
10
|
-
DK=${3:-$DK}
|
11
|
-
API=${4:-$DEFAULT_API}
|
12
|
-
|
13
|
-
function ds(){
|
14
|
-
${CC} -a ${DU} ${DK} --u ${API} "$@" #| jq .
|
15
|
-
}
|
16
|
-
|
17
|
-
# core API - validate our hash, compile it, check our usage, dpu and balance
|
18
|
-
echo 'Validating CSDL'
|
19
|
-
csdl='interaction.content contains "music"'
|
20
|
-
valid=$(ds -e core -c validate -p csdl "$csdl" | jq .status)
|
21
|
-
|
22
|
-
if [ ${valid} != 200 ]; then
|
23
|
-
echo "Validating CSDL failed"
|
24
|
-
echo ${valid}
|
25
|
-
exit -1
|
26
|
-
fi
|
27
|
-
|
28
|
-
echo 'Compiling'
|
29
|
-
hash=$(ds -e core -c compile -p csdl "$csdl" | jq -r .body.hash)
|
30
|
-
echo "Compiled and got $hash"
|
31
|
-
|
32
|
-
echo 'Usage :'
|
33
|
-
ds -e core -c usage | jq .
|
34
|
-
|
35
|
-
echo 'DPU :'
|
36
|
-
ds -e core -c dpu -p hash $hash | jq .
|
37
|
-
|
38
|
-
echo 'Balance :'
|
39
|
-
ds -e core -c usage | jq .
|
40
|
-
|
41
|
-
echo 'Preparing Historic query'
|
42
|
-
end=`expr $(date +%s) - 7200`
|
43
|
-
start=`expr $end - 3600`
|
44
|
-
|
45
|
-
historic=$(ds -e historics -c prepare -p start ${start} -p end ${end} -p name "Historics CLI @ $start" -p hash ${hash})
|
46
|
-
echo ${historic} | jq .
|
47
|
-
historic_id=$(echo ${historic} | jq -r .body.id)
|
48
|
-
echo "Historic created with ID $historic_id"
|
49
|
-
|
50
|
-
echo 'Validating Push subscription'
|
51
|
-
push_v=$(ds -e push -c validate -p historics_id ${historic_id} -p name "Playback CLI @ $start" -p output_type http \
|
52
|
-
-p output_params.method post -p output_params.url 'http://ec2-50-19-63-138.compute-1.amazonaws.com:80' \
|
53
|
-
-p output_params.delivery_frequency 0 -p output_params.max_size 102400 -p output_params.auth.type none \
|
54
|
-
-p output_params.verify_ssl false -p output_params.use_gzip true)
|
55
|
-
push_status=$(echo ${push_v} | jq .status)
|
56
|
-
echo ${push_v} | jq .
|
57
|
-
|
58
|
-
if [ ${push_status} != 200 ]; then
|
59
|
-
echo "Validating Push subscription failed"
|
60
|
-
exit -1
|
61
|
-
fi
|
62
|
-
|
63
|
-
echo 'Creating Push from Historic'
|
64
|
-
push=$(ds -e push -c create -p historics_id ${historic_id} -p name "Playback CLI @ $start" -p output_type http \
|
65
|
-
-p output_params.method post -p output_params.url 'http://ec2-50-19-63-138.compute-1.amazonaws.com:80' \
|
66
|
-
-p output_params.delivery_frequency 0 -p output_params.max_size 102400 -p output_params.auth.type none \
|
67
|
-
-p output_params.verify_ssl false -p output_params.use_gzip true)
|
68
|
-
|
69
|
-
echo "Created push subscription for historic"
|
70
|
-
echo ${push} | jq .
|
71
|
-
push_id=$(echo ${push} | jq -r .body.id)
|
72
|
-
|
73
|
-
echo 'Starting Historic query'
|
74
|
-
ds -e historics -c start -p id ${historic_id} | jq .
|
75
|
-
|
76
|
-
echo 'Getting Historic status'
|
77
|
-
ds -e historics -c status -p start ${start} -p end ${end} | jq .
|
78
|
-
|
79
|
-
echo 'Getting Historics'
|
80
|
-
ds -e historics -c get -p id ${historic_id} | jq .
|
81
|
-
|
82
|
-
echo 'Updating historic'
|
83
|
-
ds -e historics -c update -p id ${historic_id} -p name "Some name @ $start - CLI" | jq .
|
84
|
-
|
85
|
-
echo 'Getting push'
|
86
|
-
ds -e push -c get -p id ${push_id} | jq .
|
87
|
-
|
88
|
-
echo 'Getting push logs'
|
89
|
-
ds -e push -c log -p id ${push_id} | jq .
|
90
|
-
|
91
|
-
echo 'Pausing push'
|
92
|
-
ds -e push -c pause -p id ${push_id} | jq .
|
93
|
-
|
94
|
-
echo 'Resuming push'
|
95
|
-
ds -e push -c resume -p id ${push_id} | jq .
|
96
|
-
|
97
|
-
echo 'Stopping Historic'
|
98
|
-
ds -e historics -c stop -p id ${historic_id} | jq .
|
99
|
-
|
100
|
-
echo 'Deleting Historic'
|
101
|
-
ds -e historics -c delete -p id ${historic_id} | jq .
|
102
|
-
|
103
|
-
echo 'Stopping push'
|
104
|
-
ds -e push -c stop -p id ${push_id} | jq .
|
105
|
-
|
106
|
-
echo 'Deleting push'
|
107
|
-
ds -e push -c delete -p id ${push_id} | jq .
|
108
|
-
#todo update push, pull
|
109
|
-
|
110
|
-
echo "Attempting to create a Historics preview"
|
111
|
-
preview=$(ds -e preview -c create -p start ${start} -p end ${end} -p hash ${hash} -p sources tumblr \
|
112
|
-
-p parameters 'interaction.author.link,targetVol,hour;interaction.type,freqDist,10')
|
113
|
-
|
114
|
-
echo ${preview} | jq .
|
115
|
-
preview_id=$(echo ${preview} | jq -r .body.id)
|
116
|
-
|
117
|
-
|
118
|
-
echo "Getting the preview we created"
|
119
|
-
ds -e preview -c get -p id ${preview_id} | jq .
|
120
|
-
|
121
|
-
echo "Creating a managed source"
|
122
|
-
source=$(ds -e managed_sources -c create -p source_type instagram -p name api \
|
123
|
-
-p auth "[{\"parameters\":{\"value\":\"$start$end\"}}]" \
|
124
|
-
-p resources '[{"parameters":{"value":"cats","type":"tag"}}]' \
|
125
|
-
-p parameters '{"comments":true,"likes":false}')
|
126
|
-
echo ${source}
|
127
|
-
source_id=$(echo ${source}| jq -r .body.id)
|
128
|
-
echo ${source_id}
|
129
|
-
|
130
|
-
echo "Starting managed source"
|
131
|
-
ds -e managed_sources -c start -p source_id ${source_id} | jq .
|
132
|
-
|
133
|
-
echo "Getting managed sources"
|
134
|
-
ds -e managed_sources -c get | jq .
|
135
|
-
|
136
|
-
echo "Getting Instagram sources"
|
137
|
-
ds -e managed_sources -c get -p source_type instagram | jq .
|
138
|
-
|
139
|
-
echo "Getting Facebook page sources"
|
140
|
-
ds -e managed_sources -c get -p source_type facebook_page | jq .
|
141
|
-
|
142
|
-
echo "Getting page 2 of instagram sources"
|
143
|
-
ds -e managed_sources -c get -p source_type instagram -p page 2 | jq .
|
144
|
-
|
145
|
-
echo "Getting source for $source_id"
|
146
|
-
ds -e managed_sources -c get -p source_id ${source_id} | jq .
|
147
|
-
|
148
|
-
echo "Getting logs for source $source_id"
|
149
|
-
ds -e managed_sources -c log -p source_id ${source_id} -p page 2 -p per_page 1 | jq .
|
150
|
-
|
151
|
-
echo "Stopping managed source"
|
152
|
-
ds -e managed_sources -c stop -p source_id ${source_id} | jq .
|
153
|
-
|
154
|
-
echo "Deleting managed source $source_id"
|
155
|
-
ds -e managed_sources -c delete -p source_id ${source_id} | jq .
|
data/examples/core_api_eg.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
require './auth'
|
2
|
-
class CoreApiEg < DataSiftExample
|
3
|
-
def initialize
|
4
|
-
super
|
5
|
-
@datasift = DataSift::Client.new(@config)
|
6
|
-
run
|
7
|
-
end
|
8
|
-
|
9
|
-
def run
|
10
|
-
begin
|
11
|
-
csdl = 'interaction.content contains "test"'
|
12
|
-
# see docs at http://dev.datasift.com/docs/rest-api/validate
|
13
|
-
puts "Is the following CSDL valid? #{csdl}"
|
14
|
-
puts @datasift.valid? csdl
|
15
|
-
|
16
|
-
# http://dev.datasift.com/docs/rest-api/compile
|
17
|
-
puts "\nCompile the CSDL and get a stream hash"
|
18
|
-
stream = @datasift.compile csdl
|
19
|
-
puts stream[:data]
|
20
|
-
|
21
|
-
# http://dev.datasift.com/docs/rest-api/dpu
|
22
|
-
puts "\nGet the DPU cost of the compiled CSDL"
|
23
|
-
dpu = @datasift.dpu stream[:data][:hash]
|
24
|
-
puts dpu[:data][:dpu]
|
25
|
-
|
26
|
-
# http://dev.datasift.com/docs/rest-api/balance
|
27
|
-
puts "\nGet the remaining balance for my account"
|
28
|
-
balance = @datasift.balance
|
29
|
-
puts balance[:data]
|
30
|
-
|
31
|
-
#http://dev.datasift.com/docs/rest-api/usage
|
32
|
-
puts "\nGet my recent account usage"
|
33
|
-
usage = @datasift.usage
|
34
|
-
puts usage[:data]
|
35
|
-
|
36
|
-
rescue DataSiftError => dse
|
37
|
-
puts dse.message
|
38
|
-
# Then match specific one to take action; All errors thrown by the client extend DataSiftError
|
39
|
-
case dse
|
40
|
-
when ConnectionError
|
41
|
-
# some connection error
|
42
|
-
when AuthError
|
43
|
-
when BadRequestError
|
44
|
-
else
|
45
|
-
# do something else...
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
CoreApiEg.new
|
data/examples/historics_eg.rb
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
require './auth'
|
2
|
-
class HistoricsApi < DataSiftExample
|
3
|
-
def initialize
|
4
|
-
super
|
5
|
-
run_historics
|
6
|
-
end
|
7
|
-
|
8
|
-
def run_historics
|
9
|
-
begin
|
10
|
-
stream = @datasift.compile 'interaction.content contains "datasift"'
|
11
|
-
hash = stream[:data][:hash]
|
12
|
-
start = Time.now.to_i - 10800
|
13
|
-
end_time = start + 3600
|
14
|
-
|
15
|
-
puts 'Check the data coverage for this Historic period'
|
16
|
-
puts @datasift.historics.status(start, end_time)
|
17
|
-
|
18
|
-
puts "\nPreparing"
|
19
|
-
# Prepare an Historics query to start from three hours ago and run for 1
|
20
|
-
# hour using Tumblr as a data source and using only a 10% sample
|
21
|
-
historics = @datasift.historics.prepare(
|
22
|
-
hash, start, end_time, 'My ruby historics', 'tumblr', 10
|
23
|
-
)
|
24
|
-
puts historics
|
25
|
-
|
26
|
-
id = historics[:data][:id]
|
27
|
-
|
28
|
-
puts "\nCheck the DPU cost of this Historics query"
|
29
|
-
puts "#{@datasift.dpu('', id)[:data][:dpu]} DPUs"
|
30
|
-
|
31
|
-
puts "\nCreating push subscription for historics"
|
32
|
-
subscription = create_push(id, true)
|
33
|
-
|
34
|
-
puts "\nStarting historics #{id}"
|
35
|
-
puts @datasift.historics.start id
|
36
|
-
|
37
|
-
puts "\nPausing historics #{id}"
|
38
|
-
puts @datasift.historics.pause id
|
39
|
-
|
40
|
-
puts "\nResuming historics #{id}"
|
41
|
-
puts @datasift.historics.resume id
|
42
|
-
|
43
|
-
puts "\nUpdating historics"
|
44
|
-
puts @datasift.historics.update(id, 'The new name of my historics')
|
45
|
-
|
46
|
-
puts "\nGet info for the historics"
|
47
|
-
puts @datasift.historics.get_by_id id
|
48
|
-
|
49
|
-
puts "\nGetting info for all my historics"
|
50
|
-
puts @datasift.historics.get
|
51
|
-
|
52
|
-
puts "\nStopping historics"
|
53
|
-
puts @datasift.historics.stop id
|
54
|
-
|
55
|
-
puts "\nDeleting historics"
|
56
|
-
puts @datasift.historics.delete id
|
57
|
-
|
58
|
-
puts "\nCleanup and delete Push subscription"
|
59
|
-
puts @datasift.push.delete subscription[:data][:id]
|
60
|
-
rescue DataSiftError => dse
|
61
|
-
puts dse.message
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
HistoricsApi.new
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require './auth'
|
2
|
-
class HistoricsPreviewApi < DataSiftExample
|
3
|
-
def initialize
|
4
|
-
super
|
5
|
-
run
|
6
|
-
end
|
7
|
-
|
8
|
-
def run
|
9
|
-
begin
|
10
|
-
puts 'Creating hash'
|
11
|
-
stream = @datasift.compile 'interaction.content contains "datasift"'
|
12
|
-
hash = stream[:data][:hash]
|
13
|
-
|
14
|
-
puts "\nCreating a preview"
|
15
|
-
# see http://dev.datasift.com/docs/rest-api/previewcreate for docs
|
16
|
-
sources = 'tumblr'
|
17
|
-
parameters = 'interaction.author.link,targetVol,hour;interaction.type,freqDist,10'
|
18
|
-
start = Time.now.to_i - (3600 * 48) # 48hrs ago
|
19
|
-
source = @datasift.historics_preview.create(hash, sources, parameters, start)
|
20
|
-
puts source
|
21
|
-
|
22
|
-
puts "\nGetting preview data"
|
23
|
-
puts @datasift.historics_preview.get source[:data][:id]
|
24
|
-
|
25
|
-
rescue DataSiftError => dse
|
26
|
-
puts dse.message
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
HistoricsPreviewApi.new
|
@@ -1,61 +0,0 @@
|
|
1
|
-
require './../auth'
|
2
|
-
class TwitterGnipBatchEg < DataSiftExample
|
3
|
-
def initialize
|
4
|
-
super
|
5
|
-
@datasift = DataSift::Client.new(@config)
|
6
|
-
run
|
7
|
-
end
|
8
|
-
|
9
|
-
def run
|
10
|
-
begin
|
11
|
-
# "gnip_1" is the default mapping used to map Tweets ingested from Gnip into a
|
12
|
-
# format DataSift can use. Using this mapping will altomatically define the
|
13
|
-
# IDML you need to use for this source
|
14
|
-
resource = [{
|
15
|
-
parameters: {
|
16
|
-
mapping: "gnip_1"
|
17
|
-
}
|
18
|
-
}]
|
19
|
-
puts "Creating Managed Source for ODP Ingestion\n"
|
20
|
-
source = @datasift.managed_source.create('twitter_gnip', 'Ruby ODP API', {}, resource)
|
21
|
-
puts "Manage Source with ID #{source[:data][:id]} created"
|
22
|
-
|
23
|
-
lines = 0
|
24
|
-
payload = ''
|
25
|
-
# Read interactions out of the fake Tweets fixture file
|
26
|
-
File.readlines('./../../test/fixtures/data/fake_gnip_tweets.json').each do |line|
|
27
|
-
lines += 1
|
28
|
-
payload += line
|
29
|
-
|
30
|
-
# Upload interactions as batches of five
|
31
|
-
if lines % 5 == 0
|
32
|
-
puts "\nUploading a batch of five interactions\n"
|
33
|
-
puts @datasift.odp.ingest(source[:data][:id], payload)[:data].to_json
|
34
|
-
payload = ''
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
puts "\nCleanup after this test and delete the Managed Source"
|
39
|
-
@datasift.managed_source.delete(source[:data][:id])
|
40
|
-
|
41
|
-
rescue DataSiftError => dse
|
42
|
-
puts dse.message
|
43
|
-
# Then match specific one to take action - All errors thrown by the client extend
|
44
|
-
# DataSiftError
|
45
|
-
case dse
|
46
|
-
when ConnectionError
|
47
|
-
# some connection error
|
48
|
-
when AuthError
|
49
|
-
when BadRequestError
|
50
|
-
when PayloadTooLargeError
|
51
|
-
# You've probably hit your x_ingestion_data_ratelimit_limit rate limit; back off
|
52
|
-
# and try again in a bit. Check your x_ingestion_request_ratelimit_reset header
|
53
|
-
# to see when you can retry this request successfully
|
54
|
-
else
|
55
|
-
# do something else...
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
TwitterGnipBatchEg.new
|