datasift 3.0.0.beta4 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/CHANGELOG.md +12 -0
  4. data/LICENSE +1 -1
  5. data/MIGRATING_TO_V.3.0.0.md +1 -1
  6. data/README.md +23 -2
  7. data/Rakefile +10 -0
  8. data/VERSION +1 -1
  9. data/datasift.gemspec +4 -4
  10. data/examples/auth.rb +14 -10
  11. data/examples/cli.sh +2 -2
  12. data/examples/core_api_eg.rb +6 -1
  13. data/examples/dynamic_list_eg.rb +74 -0
  14. data/examples/dynamic_list_replace_eg.rb +45 -0
  15. data/examples/historics_eg.rb +20 -13
  16. data/examples/historics_preview_eg.rb +5 -4
  17. data/examples/live_stream_eg.rb +2 -1
  18. data/examples/managed_source_eg.rb +11 -10
  19. data/examples/pull.rb +8 -8
  20. data/examples/push_eg.rb +32 -15
  21. data/lib/cli.rb +2 -2
  22. data/lib/datasift.rb +7 -3
  23. data/lib/dynamic_list.rb +66 -0
  24. data/lib/dynamic_list_replace.rb +45 -0
  25. data/lib/historics.rb +17 -0
  26. data/lib/historics_preview.rb +2 -1
  27. data/lib/push.rb +10 -17
  28. data/test/datasift/core_api_test.rb +153 -0
  29. data/test/datasift/historics_preview_api_test.rb +83 -0
  30. data/test/datasift/push_api_test.rb +223 -0
  31. data/test/fixtures/balance.json +1 -0
  32. data/test/fixtures/compile_csdl_invalid.json +1 -0
  33. data/test/fixtures/compile_csdl_valid.json +1 -0
  34. data/test/fixtures/dpu_valid.json +1 -0
  35. data/test/fixtures/preview_create_valid.json +1 -0
  36. data/test/fixtures/preview_get_running.json +1 -0
  37. data/test/fixtures/preview_get_succeeded.json +1 -0
  38. data/test/fixtures/push_create_valid.json +1 -0
  39. data/test/fixtures/push_get_list_by_hash_valid.json +1 -0
  40. data/test/fixtures/push_get_list_by_historics_id_valid.json +1 -0
  41. data/test/fixtures/push_get_list_valid.json +1 -0
  42. data/test/fixtures/push_get_valid.json +1 -0
  43. data/test/fixtures/push_log_valid.json +1 -0
  44. data/test/fixtures/push_pause_valid.json +1 -0
  45. data/test/fixtures/push_stop_valid.json +1 -0
  46. data/test/fixtures/push_validate_valid.json +1 -0
  47. data/test/fixtures/usage_current.json +1 -0
  48. data/test/fixtures/validate_csdl_invalid.json +1 -0
  49. data/test/fixtures/validate_csdl_valid.json +1 -0
  50. data/test/test_helper.rb +17 -0
  51. metadata +36 -9
  52. data/tests/core_api_test.rb +0 -95
@@ -86,4 +86,5 @@ class StreamingApi < DataSiftExample
86
86
  end
87
87
  end
88
88
  end
89
- StreamingApi.new
89
+
90
+ StreamingApi.new
@@ -10,13 +10,14 @@ class ManagedSourceApi < DataSiftExample
10
10
  puts 'Creating a managed source'
11
11
  parameters = {:likes => true,
12
12
  :posts_by_others => true,
13
- :comments => true
13
+ :comments => true,
14
+ :page_likes => true
14
15
  }
15
16
  resources = [{
16
17
  :parameters => {
17
- :url => 'http://www.facebook.com/thegaurdian',
18
+ :url => 'http://www.facebook.com/theguardian',
18
19
  :title => 'Some news page',
19
- :id => :thegaurdian
20
+ :id => :theguardian
20
21
  }
21
22
  }]
22
23
  auth = [{
@@ -30,22 +31,22 @@ class ManagedSourceApi < DataSiftExample
30
31
 
31
32
  id = source[:data][:id]
32
33
 
33
- puts 'Starting delivery for my private source'
34
+ puts "\nStarting delivery for my Managed Source"
34
35
  puts @datasift.managed_source.start id
35
36
 
36
- puts 'Updating'
37
+ puts "\nUpdating"
37
38
  puts @datasift.managed_source.update(id, 'facebook_page', 'Updated source', parameters, resources, auth)
38
39
 
39
- puts 'Getting info from DataSift about my page'
40
+ puts "\nGetting info from DataSift about my page"
40
41
  puts @datasift.managed_source.get id
41
42
 
42
- puts 'Fetching logs'
43
+ puts "\nFetching logs"
43
44
  puts @datasift.managed_source.log id
44
45
 
45
- puts 'Stopping'
46
+ puts "\nStopping"
46
47
  puts @datasift.managed_source.stop id
47
48
 
48
- puts 'Deleting'
49
+ puts "\nDeleting"
49
50
  puts @datasift.managed_source.delete id
50
51
  rescue DataSiftError => dse
51
52
  puts dse.message
@@ -53,4 +54,4 @@ class ManagedSourceApi < DataSiftExample
53
54
  end
54
55
  end
55
56
 
56
- ManagedSourceApi.new
57
+ ManagedSourceApi.new
data/examples/pull.rb CHANGED
@@ -7,7 +7,7 @@ class PushApi < DataSiftExample
7
7
  def run
8
8
  begin
9
9
  @params = {:output_type => 'pull'}
10
- puts 'Validating'
10
+ puts 'Validating the Pull subscription'
11
11
  if @datasift.push.valid? @params
12
12
  stream = @datasift.compile 'interaction.content contains "music"'
13
13
  subscription = create_push(stream[:data][:hash])
@@ -16,22 +16,22 @@ class PushApi < DataSiftExample
16
16
  #pull a bunch of interactions from the push queue - only work if we had set the output_type above to pull
17
17
  #pull @datasift.pull subscription_id
18
18
 
19
- puts 'pullinga'
19
+ puts "\nPulling data a first time, then waiting 10 seconds"
20
20
  @datasift.push.pull(subscription_id).each { |e| puts e }
21
21
 
22
22
  sleep 10
23
23
 
24
- puts 'pullingb'
24
+ puts "\nPulling data a second time, then waiting 10 seconds"
25
25
  @datasift.push.pull(subscription_id).each { |e| puts e }
26
26
 
27
27
  sleep 10
28
28
 
29
- puts 'pullingc'
29
+ puts "\nPulling data the third and final time time"
30
30
  #passing a lambda is more efficient because it is executed once for each interaction received
31
31
  #this saves having to iterate over the array returned so the same iteration isn't done twice
32
- @datasift.push.pull(subscription_id,20971520,'', lambda{ |e| puts "on_message => #{e}" })
32
+ @datasift.push.pull(subscription_id, 20971520, '', lambda{ |e| puts "on_message => #{e}" })
33
33
 
34
- puts 'pullingdelete'
34
+ puts "\nDeleting the Pull subscription"
35
35
  @datasift.push.delete subscription_id
36
36
  end
37
37
  #rescue DataSiftError
@@ -39,6 +39,6 @@ class PushApi < DataSiftExample
39
39
  puts dse.inspect
40
40
  end
41
41
  end
42
-
43
42
  end
44
- PushApi.new().run
43
+
44
+ PushApi.new().run
data/examples/push_eg.rb CHANGED
@@ -2,32 +2,49 @@ require './auth'
2
2
  class PushApi < DataSiftExample
3
3
  def initialize
4
4
  super
5
+ run
5
6
  end
6
7
 
7
- def run(count)
8
+ def run
8
9
  begin
9
- subscription = create_push('5cdb0c8b4f3f6ca26f6ba1b086f22edd', count)
10
+ puts 'Creating Push subscription'
11
+ subscription = @datasift.push.create @params.merge(hash: '54dbfc8464258de162b7f1a057e630c5', name: 'Ruby Client Example')
10
12
 
11
13
  subscription_id = subscription[:data][:id]
12
- #pull a bunch of interactions from the push queue - only work if we had set the output_type above to pull
13
- #pull @datasift.pull subscription_id
14
+ puts "\nPush subscription created! Push Subscription ID #{subscription_id}"
14
15
 
15
- puts 'getting subscription info'
16
- # get details for a subscription also available are
16
+ puts "\nGetting subscription info"
17
+ # Get details for a subscription. Also available are
17
18
  # push.[get, get_by_hash,get_by_historics_id]
18
19
  puts @datasift.push.get_by_subscription subscription_id
20
+
21
+ puts "\nPausing Push subscription"
22
+ # Push subscriptions can be paused for up to an hour
23
+ @datasift.push.pause subscription_id
24
+
25
+ puts "\nResuming Push subscription"
26
+ # Push subscriptions must be resumed to continue delivering data
27
+ @datasift.push.resume subscription_id
28
+
29
+ puts "\nGetting subscription logs"
30
+ # Get logs for a subscription. Also available is
31
+ # push.log to get logs for all subscriptions
32
+ puts @datasift.push.log_for subscription_id
33
+
34
+ puts "\nStopping Push subscription"
35
+ # Push subscriptions can be stopped. Once stopped, a
36
+ # subscription can not be resumed
37
+ @datasift.push.stop subscription_id
38
+
39
+ puts "\nDeleting Push subscription"
40
+ # Push subscriptions can be deleted. On delete, any undelivered
41
+ # data is dropped. A delete is permenent.
42
+ @datasift.push.delete subscription_id
43
+
19
44
  rescue DataSiftError => dse
20
45
  puts dse.message
21
46
  end
22
47
  end
23
-
24
- def get_all
25
- puts MultiJson.dump(@datasift.push.get(1, 500))
26
- end
27
48
  end
28
49
 
29
- p = PushApi.new()
30
- #for i in 1..1000
31
- # p.run(i)
32
- #end
33
- p.get_all()
50
+ PushApi.new()
data/lib/cli.rb CHANGED
@@ -178,8 +178,8 @@ def run_push_command (c, command, p)
178
178
  c.push.get_by_subscription(p['id'], opt(p['page'], 0), opt(p['per_page'], 20), opt(p['order_by'], :request_time))
179
179
  elsif p['hash']
180
180
  c.push.get_by_hash(p['hash'], opt(p['page'], 0), opt(p['per_page'], 20), opt(p['order_by'], :request_time), opt(p['order_dir'], :desc))
181
- elsif p['playback_id']
182
- c.push.get_by_historics_id(p['playback_id'], opt(p['page'], 0), opt(p['per_page'], 20), opt(p['order_by'], :request_time), opt(p['order_dir'], :desc))
181
+ elsif p['historics_id']
182
+ c.push.get_by_historics_id(p['historics_id'], opt(p['page'], 0), opt(p['per_page'], 20), opt(p['order_by'], :request_time), opt(p['order_dir'], :desc))
183
183
  else
184
184
  c.push.get(opt(p['page'], 0), opt(p['per_page'], 20), opt(p['order_by'], :request_time), opt(p['order_dir'], :desc))
185
185
  end
data/lib/datasift.rb CHANGED
@@ -13,6 +13,8 @@ require dir + '/historics'
13
13
  require dir + '/historics_preview'
14
14
  require dir + '/managed_source'
15
15
  require dir + '/live_stream'
16
+ require dir + '/dynamic_list'
17
+ require dir + '/dynamic_list_replace'
16
18
  #
17
19
  require 'rbconfig'
18
20
 
@@ -53,9 +55,11 @@ module DataSift
53
55
  @push = DataSift::Push.new(config)
54
56
  @managed_source = DataSift::ManagedSource.new(config)
55
57
  @historics_preview = DataSift::HistoricsPreview.new(config)
58
+ @dynamic_list = DataSift::DynamicList.new(config)
59
+ @dynamic_list_replace = DataSift::DynamicListReplace.new(config)
56
60
  end
57
61
 
58
- attr_reader :historics, :push, :managed_source, :historics_preview
62
+ attr_reader :historics, :push, :managed_source, :historics_preview, :dynamic_list, :dynamic_list_replace
59
63
 
60
64
  ##
61
65
  # Checks if the syntax of the given CSDL is valid
@@ -63,7 +67,7 @@ module DataSift
63
67
  # the response object itself is returned
64
68
  def valid?(csdl, boolResponse = true)
65
69
  requires({:csdl => csdl})
66
- res= DataSift.request(:POST, 'validate', @config, {:csdl => csdl})
70
+ res = DataSift.request(:POST, 'validate', @config, {:csdl => csdl})
67
71
  boolResponse ? res[:http][:status] == 200 : res
68
72
  end
69
73
 
@@ -92,7 +96,7 @@ module DataSift
92
96
  ##
93
97
  # Determine your credit balance or DPU balance.
94
98
  def balance
95
- DataSift.request(:POST, 'balance', @config, {})
99
+ DataSift.request(:POST, 'balance', @config)
96
100
  end
97
101
 
98
102
  ##
@@ -0,0 +1,66 @@
1
+ module DataSift
2
+ class DynamicList < DataSift::ApiResource
3
+
4
+ ##
5
+ # Get all lists and their ids.
6
+ def get
7
+ params = {}
8
+ requires params
9
+ DataSift.request(:GET, 'list/get', @config, params)
10
+ end
11
+
12
+ ##
13
+ # Create a new dynamic list
14
+ def create (type, name)
15
+ params = {
16
+ :type => type
17
+ }
18
+ requires params
19
+ params[:name] = name
20
+ DataSift.request(:POST, 'list/create', @config, params)
21
+ end
22
+
23
+ ##
24
+ # Delete a dynamic list
25
+ def delete (id)
26
+ params = {
27
+ :id => id
28
+ }
29
+ requires params
30
+ DataSift.request(:DELETE, 'list/delete', @config, params)
31
+ end
32
+
33
+ ##
34
+ # Check if items exist in given list
35
+ def exists (id, items)
36
+ params = {
37
+ :id => id,
38
+ :items => items
39
+ }
40
+ requires params
41
+ DataSift.request(:POST, 'list/exists', @config, params)
42
+ end
43
+
44
+ ##
45
+ # Add items to a given list
46
+ def add (id, items)
47
+ params = {
48
+ :id => id,
49
+ :items => items
50
+ }
51
+ requires params
52
+ DataSift.request(:POST, 'list/add', @config, params)
53
+ end
54
+
55
+ ##
56
+ # Remove items from a given list
57
+ def remove (id, items)
58
+ params = {
59
+ :id => id,
60
+ :items => items
61
+ }
62
+ requires params
63
+ DataSift.request(:POST, 'list/remove', @config, params)
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,45 @@
1
+ module DataSift
2
+ class DynamicListReplace < DataSift::ApiResource
3
+
4
+ ##
5
+ # Start a new replace list
6
+ def start (list_id)
7
+ params = {
8
+ :list_id => list_id
9
+ }
10
+ requires params
11
+ DataSift.request(:POST, 'list/replace/start', @config, params)
12
+ end
13
+
14
+ ##
15
+ # Commit the replace list
16
+ def commit (id)
17
+ params = {
18
+ :id => id
19
+ }
20
+ requires params
21
+ DataSift.request(:POST, 'list/replace/commit', @config, params)
22
+ end
23
+
24
+ ##
25
+ # Abort the replace list
26
+ def abort (id)
27
+ params = {
28
+ :id => id
29
+ }
30
+ requires params
31
+ DataSift.request(:POST, 'list/replace/abort', @config, params)
32
+ end
33
+
34
+ ##
35
+ # Add items to the replace list
36
+ def add (id, items)
37
+ params = {
38
+ :id => id,
39
+ :items => items
40
+ }
41
+ requires params
42
+ DataSift.request(:POST, 'list/replace/add', @config, params)
43
+ end
44
+ end
45
+ end
data/lib/historics.rb CHANGED
@@ -16,6 +16,22 @@ module DataSift
16
16
  DataSift.request(:POST, 'historics/prepare', @config, params)
17
17
  end
18
18
 
19
+ # Pause historics query.
20
+ def pause(id, reason = '')
21
+ params = {:id => id}
22
+ requires params
23
+ params[:reason] = reason
24
+ DataSift.request(:PUT, 'historics/pause', @config, params)
25
+ end
26
+
27
+ ##
28
+ # Resume historics query.
29
+ def resume(id)
30
+ params = {:id => id}
31
+ requires params
32
+ DataSift.request(:PUT, 'historics/resume', @config, params)
33
+ end
34
+
19
35
  ##
20
36
  # Starts historics query.
21
37
  def start(id)
@@ -32,6 +48,7 @@ module DataSift
32
48
  params[:reason] = reason
33
49
  DataSift.request(:POST, 'historics/stop', @config, params)
34
50
  end
51
+ ##
35
52
 
36
53
  ##
37
54
  # Check the data coverage in the archive for a specified interval.
@@ -1,9 +1,10 @@
1
1
  module DataSift
2
2
  class HistoricsPreview < DataSift::ApiResource
3
3
 
4
- def create(hash, parameters, start, end_time = nil)
4
+ def create(hash, sources, parameters, start, end_time = nil)
5
5
  params = {
6
6
  :hash => hash,
7
+ :sources => sources,
7
8
  :parameters => parameters,
8
9
  :start => start
9
10
  }
data/lib/push.rb CHANGED
@@ -24,7 +24,6 @@ module DataSift
24
24
  DataSift.request(:POST, 'push/create', @config, params)
25
25
  end
26
26
 
27
-
28
27
  ##
29
28
  # Update the name or output parameters for an existing subscription
30
29
  def update (params)
@@ -36,7 +35,7 @@ module DataSift
36
35
  def pause(id)
37
36
  params = {:id => id}
38
37
  requires params
39
- DataSift.request(:POST, 'push/pause', @config, params)
38
+ DataSift.request(:PUT, 'push/pause', @config, params)
40
39
  end
41
40
 
42
41
  ##
@@ -44,7 +43,7 @@ module DataSift
44
43
  def resume(id)
45
44
  params = {:id => id}
46
45
  requires params
47
- DataSift.request(:POST, 'push/resume', @config, params)
46
+ DataSift.request(:PUT, 'push/resume', @config, params)
48
47
  end
49
48
 
50
49
  ##
@@ -52,7 +51,7 @@ module DataSift
52
51
  def stop(id)
53
52
  params = {:id => id}
54
53
  requires params
55
- DataSift.request(:POST, 'push/stop', @config, params)
54
+ DataSift.request(:PUT, 'push/stop', @config, params)
56
55
  end
57
56
 
58
57
  ##
@@ -65,7 +64,7 @@ module DataSift
65
64
 
66
65
  ##
67
66
  # Retrieve log messages for a specific subscription
68
- def logs_for (id, page = 1, per_page = 20, order_by = :request_time, order_dir = :desc)
67
+ def log_for(id, page = 1, per_page = 20, order_by = :request_time, order_dir = :desc)
69
68
  params = {
70
69
  :id => id,
71
70
  :page => page,
@@ -78,7 +77,7 @@ module DataSift
78
77
 
79
78
  ##
80
79
  # Retrieve log messages for all subscriptions
81
- def logs (page = 1, per_page = 20, order_by = :request_time, order_dir = :desc)
80
+ def log(page = 1, per_page = 20, order_by = :request_time, order_dir = :desc)
82
81
  params = {
83
82
  :page => page,
84
83
  :per_page => per_page,
@@ -90,20 +89,14 @@ module DataSift
90
89
 
91
90
  ##
92
91
  # Get details of the subscription with the given ID
93
- def get_by_subscription(id, page = 1, per_page = 20, order_by = :request_time, order_dir = :desc)
94
- params = {
95
- :id => id,
96
- :page => page,
97
- :per_page => per_page,
98
- :order_by => order_by,
99
- :order_dir => order_dir
100
- }
92
+ def get_by_subscription(id)
93
+ params = { :id => id }
101
94
  DataSift.request(:GET, 'push/get', @config, params)
102
95
  end
103
96
 
104
97
  ##
105
98
  # Get details of the subscription with the given stream ID/hash
106
- def get_by_hash(hash, page = 1, per_page = 20, order_by = :request_time, order_dir = :desc)
99
+ def get_by_hash(hash, page = 1, per_page = 20, order_by = :created_at, order_dir = :desc)
107
100
  params = {
108
101
  :hash => hash,
109
102
  :page => page,
@@ -116,7 +109,7 @@ module DataSift
116
109
 
117
110
  ##
118
111
  # Get details of the subscription with the given Historics ID
119
- def get_by_historics_id(id, page = 1, per_page = 20, order_by = :request_time, order_dir = :desc)
112
+ def get_by_historics_id(id, page = 1, per_page = 20, order_by = :created_at, order_dir = :desc)
120
113
  params = {
121
114
  :historics_id => id,
122
115
  :page => page,
@@ -141,7 +134,7 @@ module DataSift
141
134
 
142
135
  ##
143
136
  # Pull data from a 'pull' type Push Subscription
144
- def pull(id, size = 20971520, cursor = '', callback = nil)
137
+ def pull(id, size = 52428800, cursor = '', callback = nil)
145
138
  params = {
146
139
  :id => id,
147
140
  :size => size,