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
@@ -0,0 +1 @@
1
+ {"balance":{"remaining_dpus":-847.8,"cost":0,"plan":"professional","threshold":500}}
@@ -0,0 +1 @@
1
+ {"error":"We are unable to parse this stream. At line 1 position 21 we were expecting one of: an operator that can act on strings, integers or float types (==, !=, <, >, >=, <=), followed by a text value;\n or the \"substring\" operator, followed by a text value;\n or <predicate.contains_parameters>, followed by a list of comma separated strings;\n or the \"in\" operator for strings, followed by a list of comma separated strings;\n or <predicate.contains_parameters>, followed by a quote (\"), followed by a list of comma separated items in a contains near operator's value, followed by a colon (:), followed by the number of words separation argument in the contains near operator's value, followed by a quote (\");\n or <predicate.contains_parameters>, followed by a text value;\n or the \"in\" operator for dynamic lists, followed by a dynamic list key;\n or <predicate.contains_parameters>, followed by a dynamic list key."}
@@ -0,0 +1 @@
1
+ {"hash":"145ea24a4d83a14ecb9077b831f14809","created_at":"2014-05-21 13:53:08","dpu":"0.1"}
@@ -0,0 +1 @@
1
+ {"dpu":0.1,"detail":{"contains":{"count":1,"dpu":0.1,"targets":{"interaction.content":{"count":1,"dpu":0.1}}}}}
@@ -0,0 +1 @@
1
+ {"created_at":1400772868,"id":"fbd5441ab17a46f2ac200f8cab6bdb79fe8efb31"}
@@ -0,0 +1 @@
1
+ {"id":"bba2e37958470b56d2a3d7748fd5ad918f7b8b92","name":"preview","progress":43,"status":"running","feeds":"facebook,twitter","sample":1,"end":1398985200,"created_at":1401293969,"start":1398898800,"user":"1","parameters":"language.tag,freqDist,5;interaction.id,targetVol,hour","hash":"145ea24a4d83a14ecb9077b831f14809"}
@@ -0,0 +1 @@
1
+ {"id":"bba2e37958470b56d2a3d7748fd5ad918f7b8b92","name":"preview","progress":100,"status":"succeeded","feeds":"facebook,twitter","sample":1,"end":1398985200,"created_at":1401293969,"start":1398898800,"user":"1","parameters":"language.tag,freqDist,5;interaction.id,targetVol,hour","hash":"145ea24a4d83a14ecb9077b831f14809","data":[{"target":"language.tag","analysis":"freqDist","output":{"fr":45,"id":49,"en":2720,"es":42,"ms":39},"threshold":5},{"target":"interaction.id","analysis":"targetVol","output":{"2014\/05\/01 21:00:00":108,"2014\/05\/01 08:00:00":76,"2014\/05\/01 09:00:00":204,"2014\/05\/01 12:00:00":133,"2014\/05\/01 00:00:00":118,"2014\/05\/01 18:00:00":104,"2014\/05\/01 06:00:00":90,"2014\/05\/01 02:00:00":181,"2014\/05\/01 03:00:00":119,"2014\/05\/01 22:00:00":105,"2014\/05\/01 15:00:00":162,"2014\/05\/01 07:00:00":95,"2014\/05\/01 05:00:00":87,"2014\/05\/01 14:00:00":137,"2014\/05\/01 10:00:00":124,"2014\/05\/01 20:00:00":99,"2014\/05\/01 01:00:00":154,"2014\/05\/01 17:00:00":131,"2014\/05\/01 04:00:00":142,"2014\/05\/01 11:00:00":101,"2014\/05\/01 19:00:00":105,"2014\/05\/01 16:00:00":161,"2014\/05\/01 13:00:00":158,"2014\/04\/30 23:00:00":116},"interval":"hour","summary":{"count":3010}}]}
@@ -0,0 +1 @@
1
+ {"id":"ca7f50126a9e7e837c8b716ac5f7604a","output_type":"http","name":"connectorhttp","created_at":1401295443,"user_id":1,"hash":"145ea24a4d83a14ecb9077b831f14809","hash_type":"stream","output_params":{"method":"post","url":"http:\/\/example.com\/datasift","compression":"none","delivery_frequency":0,"max_size":10485760,"verify_ssl":"false"},"status":"active","last_request":null,"last_success":null,"remaining_bytes":null,"lost_data":false,"start":1401295443,"end":0}
@@ -0,0 +1 @@
1
+ {"subscriptions":[{"id":"7802b84cfe79e50e0a6e3cdac5ce54ab","output_type":"http","name":"connectorhttp","created_at":1401364070,"user_id":1,"hash":"145ea24a4d83a14ecb9077b831f14809","hash_type":"stream","output_params":{"method":"post","url":"http:\/\/example.com\/datasift","compression":"none","delivery_frequency":0,"max_size":10485760,"verify_ssl":"false"},"status":"active","last_request":1401381810,"last_success":1401381810,"remaining_bytes":null,"lost_data":false,"start":1401364070,"end":null}],"count":1}
@@ -0,0 +1 @@
1
+ {"subscriptions":[{"id":"c0d390b3ad76e8d4a977e7c91364688f","output_type":"ftp","name":"Example","created_at":1401866981,"user_id":1,"hash":"5f569d6f99002bfaa483","hash_type":"historic","output_params":{"format":"json_meta","directory":"\/data","port":21,"max_size":10485760,"delivery_frequency":10,"host":"example.datasift.com"},"status":"finished","last_request":null,"last_success":1401870290,"remaining_bytes":null,"lost_data":false,"start":1401866981,"end":1401875424}],"count":1}
@@ -0,0 +1 @@
1
+ {"subscriptions":[{"id":"7802b84cfe79e50e0a6e3cdac5ce54ab","output_type":"http","name":"connectorhttp","created_at":1401364070,"user_id":1,"hash":"145ea24a4d83a14ecb9077b831f14809","hash_type":"stream","output_params":{"method":"post","url":"http:\/\/example.com\/datasift","compression":"none","delivery_frequency":0,"max_size":10485760,"verify_ssl":"false"},"status":"active","last_request":null,"last_success":null,"remaining_bytes":null,"lost_data":false,"start":1401364070,"end":null}],"count":1}
@@ -0,0 +1 @@
1
+ {"id":"ca7f50126a9e7e837c8b716ac5f7604a","output_type":"http","name":"connectorhttp","created_at":1401295443,"user_id":1,"hash":"145ea24a4d83a14ecb9077b831f14809","hash_type":"stream","output_params":{"method":"post","url":"http:\/\/example.com\/datasift","compression":"none","delivery_frequency":0,"max_size":10485760,"verify_ssl":"false"},"status":"active","last_request":null,"last_success":1401295476,"remaining_bytes":0,"lost_data":false,"start":1401295443,"end":null}
@@ -0,0 +1 @@
1
+ {"success":true,"count":1,"log_entries":[{"request_time":1402413172,"success":true,"subscription_id":"7802b84cfe79e50e0a6e3cdac5ce54ab","message":"Successfully delivered after delivery failure(s)"}]}
@@ -0,0 +1 @@
1
+ {"id":"ca7f50126a9e7e837c8b716ac5f7604a","output_type":"http","name":"connectorhttp","created_at":1401295443,"user_id":1,"hash":"145ea24a4d83a14ecb9077b831f14809","hash_type":"stream","output_params":{"method":"post","url":"http:\/\/example.com\/datasift","compression":"none","delivery_frequency":0,"max_size":10485760,"verify_ssl":"false"},"status":"paused","last_request":null,"last_success":1401295476,"remaining_bytes":0,"lost_data":false,"start":1401295443,"end":null}
@@ -0,0 +1 @@
1
+ {"id":"7802b84cfe79e50e0a6e3cdac5ce54ab","output_type":"http","name":"connectorhttp","created_at":1401364070,"user_id":1,"hash":"145ea24a4d83a14ecb9077b831f14809","hash_type":"stream","output_params":{"method":"post","url":"http:\/\/example.com\/datasift","compression":"none","delivery_frequency":0,"max_size":10485760,"verify_ssl":"false"},"status":"finishing","last_request":1401451186,"last_success":1401451181,"remaining_bytes":null,"lost_data":false,"start":1401364070,"end":1401451186}
@@ -0,0 +1 @@
1
+ {"success":true,"message":"Validated successfully"}
@@ -0,0 +1 @@
1
+ {"start":"Wed, 21 May 2014 10:00:00 +0000","end":"Wed, 21 May 2014 11:00:00 +0000","streams":{"028eaeff74f186a768cc37107378fb9d":{"licenses":{"gender":2255,"interaction":2753,"klout.score":2155,"language":2677,"links":2723,"salience.sentiment":2663,"trends":44,"twitter":2753},"seconds":3600},"0fc46cdc3afbeb7c903ba5cb2ae73781":{"licenses":[],"seconds":3600},"1561e183f191f9aa0e55cda127a1e80d":{"licenses":[],"seconds":300},"49ab3b3aadf32fb81624ae69b4fa6646":{"licenses":{"facebook_page":1,"gender":1,"instagram":1,"interaction":1,"language":1,"salience.sentiment":1},"seconds":3600},"828dd0f10a8f7d0201c54684390d059d":{"licenses":[],"seconds":3600},"9dbf78769d088c868836a5d4861b9e7a":{"licenses":[],"seconds":300}}
@@ -0,0 +1 @@
1
+ {"error": "The target interaction.nonsense does not exist"}
@@ -0,0 +1 @@
1
+ {"created_at": "2014-01-30 10:09:19","dpu": "0.1"}
@@ -0,0 +1,17 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ require File.expand_path('./../../examples/auth', __FILE__)
5
+ require 'datasift'
6
+ require 'minitest/autorun'
7
+ require 'webmock/minitest'
8
+ require 'multi_json'
9
+ require 'ostruct'
10
+
11
+ def fixture_path
12
+ File.expand_path('../fixtures', __FILE__)
13
+ end
14
+
15
+ def fixture(file)
16
+ File.new(fixture_path + '/' + file)
17
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datasift
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta4
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DataSift
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-14 00:00:00.000000000 Z
11
+ date: 2014-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -95,19 +95,19 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: 2.11.3
97
97
  - !ruby/object:Gem::Dependency
98
- name: test-unit
98
+ name: minitest
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 2.5.5
103
+ version: '5.0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 2.5.5
110
+ version: '5.0'
111
111
  description: The official Ruby library for accessing the DataSift API. See http://datasift.com/
112
112
  for full details and to sign up for an account.
113
113
  email:
@@ -122,11 +122,14 @@ files:
122
122
  - LICENSE
123
123
  - MIGRATING_TO_V.3.0.0.md
124
124
  - README.md
125
+ - Rakefile
125
126
  - VERSION
126
127
  - datasift.gemspec
127
128
  - examples/auth.rb
128
129
  - examples/cli.sh
129
130
  - examples/core_api_eg.rb
131
+ - examples/dynamic_list_eg.rb
132
+ - examples/dynamic_list_replace_eg.rb
130
133
  - examples/historics_eg.rb
131
134
  - examples/historics_preview_eg.rb
132
135
  - examples/live_stream_eg.rb
@@ -136,13 +139,37 @@ files:
136
139
  - lib/api/api_resource.rb
137
140
  - lib/cli.rb
138
141
  - lib/datasift.rb
142
+ - lib/dynamic_list.rb
143
+ - lib/dynamic_list_replace.rb
139
144
  - lib/errors.rb
140
145
  - lib/historics.rb
141
146
  - lib/historics_preview.rb
142
147
  - lib/live_stream.rb
143
148
  - lib/managed_source.rb
144
149
  - lib/push.rb
145
- - tests/core_api_test.rb
150
+ - test/datasift/core_api_test.rb
151
+ - test/datasift/historics_preview_api_test.rb
152
+ - test/datasift/push_api_test.rb
153
+ - test/fixtures/balance.json
154
+ - test/fixtures/compile_csdl_invalid.json
155
+ - test/fixtures/compile_csdl_valid.json
156
+ - test/fixtures/dpu_valid.json
157
+ - test/fixtures/preview_create_valid.json
158
+ - test/fixtures/preview_get_running.json
159
+ - test/fixtures/preview_get_succeeded.json
160
+ - test/fixtures/push_create_valid.json
161
+ - test/fixtures/push_get_list_by_hash_valid.json
162
+ - test/fixtures/push_get_list_by_historics_id_valid.json
163
+ - test/fixtures/push_get_list_valid.json
164
+ - test/fixtures/push_get_valid.json
165
+ - test/fixtures/push_log_valid.json
166
+ - test/fixtures/push_pause_valid.json
167
+ - test/fixtures/push_stop_valid.json
168
+ - test/fixtures/push_validate_valid.json
169
+ - test/fixtures/usage_current.json
170
+ - test/fixtures/validate_csdl_invalid.json
171
+ - test/fixtures/validate_csdl_valid.json
172
+ - test/test_helper.rb
146
173
  homepage: https://github.com/datasift/datasift-ruby
147
174
  licenses:
148
175
  - BSD
@@ -163,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
190
  version: 1.3.6
164
191
  requirements: []
165
192
  rubyforge_project:
166
- rubygems_version: 2.2.2
193
+ rubygems_version: 2.3.0
167
194
  signing_key:
168
195
  specification_version: 4
169
196
  summary: DataSift is a simple wrapper for the DataSift API.
@@ -1,95 +0,0 @@
1
- require '../examples/auth'
2
- require 'test/unit'
3
- require 'webmock/test_unit'
4
- require 'multi_json'
5
- class CoreApiTest < Test::Unit::TestCase
6
-
7
- def setup
8
- auth = DataSiftExample.new
9
- @datasift = auth.datasift
10
- @data = OpenStruct.new
11
- @responses = OpenStruct.new
12
- @statuses = OpenStruct.new
13
- @headers = OpenStruct.new
14
-
15
- @data.valid_csdl = 'interaction.content contains "test"'
16
- @data.invalid_csdl = 'interaction.nonsense is not valid'
17
- #{"created_at" => "2014-01-30 10:09:19", "dpu" => "0.1"}
18
- @responses.valid_csdl = '{"created_at": "2014-01-30 10:09:19","dpu": "0.1"}'
19
- @responses.invalid_csdl = '{"error": "The target interaction.nonsense does not exist"}'
20
- @responses.valid_stream = OpenStruct.new({:hash => '145ea24a4d83a14ecb9077b831f14809', :created_at => '2014-01-30 17:35:14', :dpu => '0.1'})
21
-
22
- @statuses.valid_csdl = 200
23
- @statuses.invalid_csdl = 400
24
-
25
- @headers.valid_csdl = {
26
- "date" => "Thu, 30 Jan 2014 10:09:19 GMT", "content-type" => "application/json",
27
- "transfer-encoding" => "chunked", "connection" => "close", "x-api-version" => "1",
28
- "x-ratelimit-limit" => "10000", "x-ratelimit-remaining" => "10000", "x-ratelimit-cost" => "5"}
29
- #valid CSDL
30
- stub_request(:post, /api.datasift.com\/.*\/validate/).
31
- with(:body => {"csdl" => @data.valid_csdl}).
32
- to_return(:status => @statuses.valid_csdl,
33
- :body => @responses.valid_csdl,
34
- :headers => @headers.valid_csdl)
35
- #invalid CSDL
36
- stub_request(:post, /api.datasift.com\/.*\/validate/).
37
- with(:body => {"csdl" => @data.invalid_csdl}).
38
- to_return(:status => @statuses.invalid_csdl,
39
- :body => @responses.invalid_csdl,
40
- :headers => @headers.valid_csdl)
41
- #valid stream compilation
42
- stub_request(:post, /api.datasift.com\/.*\/compile/).
43
- with(:body => {"csdl" => @data.valid_csdl}).
44
- to_return(:status => @statuses.valid_csdl,
45
- :body => MultiJson.dump(@responses.valid_stream),
46
- :headers => @headers.valid_csdl)
47
-
48
- end
49
-
50
-
51
- def teardown
52
- # Do nothing
53
- end
54
-
55
- def test_csdl_cant_be_nil_when_validating
56
- assert_raise InvalidParamError do
57
- @datasift.valid?(nil)
58
- end
59
- end
60
-
61
- def test_csdl_cant_be_empty_when_validating
62
- assert_raise InvalidParamError do
63
- @datasift.valid?('')
64
- end
65
- end
66
-
67
- def test_if_user_can_get_successful_validation_as_bool
68
- assert_boolean @datasift.valid?(@data.valid_csdl), 'Valid must return a bool by default'
69
- assert_true @datasift.valid?(@data.valid_csdl), 'This request should have returned true'
70
- end
71
-
72
- def test_if_user_can_get_successful_validation_as_hash
73
- validation = @datasift.valid?(@data.valid_csdl, false)
74
- assert_kind_of Hash, validation, 'Valid should return a hash here'
75
- assert_equal @statuses.valid_csdl, validation[:http][:status], "This request should have returned status as #{@statuses.validate_csdl}"
76
- end
77
-
78
- def test_failing_csdl_validation
79
- assert_raise BadRequestError do
80
- @datasift.valid?(@data.invalid_csdl)
81
- end
82
- end
83
-
84
- def test_csdl_cant_be_nil_when_compiling
85
- assert_raise InvalidParamError do
86
- @datasift.compile(nil)
87
- end
88
- end
89
-
90
- def test_csdl_cant_be_empty_when_compiling
91
- assert_raise InvalidParamError do
92
- @datasift.compile('')
93
- end
94
- end
95
- end