datasift 3.1.5 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -2
  3. data/.yardopts +4 -0
  4. data/CHANGELOG.md +23 -0
  5. data/Gemfile +13 -0
  6. data/README.md +17 -16
  7. data/VERSION +1 -1
  8. data/datasift.gemspec +8 -14
  9. data/examples/account_identity_eg.rb +48 -0
  10. data/examples/account_identity_limit_eg.rb +68 -0
  11. data/examples/account_identity_token_eg.rb +70 -0
  12. data/examples/auth.rb +4 -4
  13. data/examples/core_api_eg.rb +1 -2
  14. data/examples/historics_eg.rb +7 -1
  15. data/examples/pylon_eg.rb +116 -0
  16. data/lib/account.rb +6 -0
  17. data/lib/account_identity.rb +73 -0
  18. data/lib/account_identity_limit.rb +85 -0
  19. data/lib/account_identity_token.rb +86 -0
  20. data/lib/api/api_resource.rb +14 -5
  21. data/lib/cli.rb +306 -132
  22. data/lib/datasift.rb +82 -47
  23. data/lib/errors.rb +21 -5
  24. data/lib/historics.rb +71 -40
  25. data/lib/historics_preview.rb +25 -8
  26. data/lib/managed_source.rb +69 -25
  27. data/lib/managed_source_auth.rb +21 -6
  28. data/lib/managed_source_resource.rb +21 -6
  29. data/lib/push.rb +132 -65
  30. data/lib/pylon.rb +122 -0
  31. data/test/datasift/core_api_test.rb +116 -90
  32. data/test/datasift/historics_preview_api_test.rb +27 -58
  33. data/test/datasift/push_api_test.rb +156 -141
  34. data/test/fixtures/cassettes/core/after_historic_dpu.json +1 -0
  35. data/test/fixtures/cassettes/core/balance_get.json +1 -0
  36. data/test/fixtures/cassettes/core/before_dpu.json +1 -0
  37. data/test/fixtures/cassettes/core/before_historic_dpu.json +1 -0
  38. data/test/fixtures/cassettes/core/compile_success.json +1 -0
  39. data/test/fixtures/cassettes/core/dpu_get_cost.json +1 -0
  40. data/test/fixtures/cassettes/core/dpu_throw_badrequest.json +1 -0
  41. data/test/fixtures/cassettes/core/historic_dpu.json +1 -0
  42. data/test/fixtures/cassettes/core/usage_success.json +1 -0
  43. data/test/fixtures/cassettes/core/validate_invalid_hash.json +1 -0
  44. data/test/fixtures/cassettes/core/validate_success_bool.json +1 -0
  45. data/test/fixtures/cassettes/core/validate_success_hash.json +1 -0
  46. data/test/fixtures/cassettes/preview/before_preview_create.json +1 -0
  47. data/test/fixtures/cassettes/preview/before_preview_get.json +1 -0
  48. data/test/fixtures/cassettes/preview/preview_create_success.json +1 -0
  49. data/test/fixtures/cassettes/preview/preview_get_success.json +1 -0
  50. data/test/fixtures/cassettes/push/after_push_create.json +1 -0
  51. data/test/fixtures/cassettes/push/after_push_get.json +1 -0
  52. data/test/fixtures/cassettes/push/after_push_log.json +1 -0
  53. data/test/fixtures/cassettes/push/after_push_pause.json +1 -0
  54. data/test/fixtures/cassettes/push/after_push_resume.json +1 -0
  55. data/test/fixtures/cassettes/push/after_push_stop.json +1 -0
  56. data/test/fixtures/cassettes/push/after_push_update.json +1 -0
  57. data/test/fixtures/cassettes/push/before_push_create.json +1 -0
  58. data/test/fixtures/cassettes/push/before_push_delete.json +1 -0
  59. data/test/fixtures/cassettes/push/before_push_get.json +1 -0
  60. data/test/fixtures/cassettes/push/before_push_log.json +1 -0
  61. data/test/fixtures/cassettes/push/before_push_pause.json +1 -0
  62. data/test/fixtures/cassettes/push/before_push_resume.json +1 -0
  63. data/test/fixtures/cassettes/push/before_push_stop.json +1 -0
  64. data/test/fixtures/cassettes/push/before_push_update.json +1 -0
  65. data/test/fixtures/cassettes/push/push_create.json +1 -0
  66. data/test/fixtures/cassettes/push/push_delete.json +1 -0
  67. data/test/fixtures/cassettes/push/push_get_by_id.json +1 -0
  68. data/test/fixtures/cassettes/push/push_log_with_id.json +1 -0
  69. data/test/fixtures/cassettes/push/push_pause.json +1 -0
  70. data/test/fixtures/cassettes/push/push_resume.json +1 -0
  71. data/test/fixtures/cassettes/push/push_stop.json +1 -0
  72. data/test/fixtures/cassettes/push/push_update.json +1 -0
  73. data/test/fixtures/cassettes/push/push_validate.json +1 -0
  74. data/test/test_helper.rb +31 -1
  75. metadata +64 -104
  76. data/examples/dynamic_list_eg.rb +0 -74
  77. data/examples/dynamic_list_replace_eg.rb +0 -45
  78. data/lib/dynamic_list.rb +0 -66
  79. data/lib/dynamic_list_replace.rb +0 -45
  80. data/test/fixtures/balance.json +0 -1
  81. data/test/fixtures/compile_csdl_invalid.json +0 -1
  82. data/test/fixtures/compile_csdl_valid.json +0 -1
  83. data/test/fixtures/dpu_valid.json +0 -1
  84. data/test/fixtures/preview_create_valid.json +0 -1
  85. data/test/fixtures/preview_get_running.json +0 -1
  86. data/test/fixtures/preview_get_succeeded.json +0 -1
  87. data/test/fixtures/push_create_valid.json +0 -1
  88. data/test/fixtures/push_get_list_by_hash_valid.json +0 -1
  89. data/test/fixtures/push_get_list_by_historics_id_valid.json +0 -1
  90. data/test/fixtures/push_get_list_valid.json +0 -1
  91. data/test/fixtures/push_get_valid.json +0 -1
  92. data/test/fixtures/push_log_valid.json +0 -1
  93. data/test/fixtures/push_pause_valid.json +0 -1
  94. data/test/fixtures/push_stop_valid.json +0 -1
  95. data/test/fixtures/push_validate_valid.json +0 -1
  96. data/test/fixtures/usage_current.json +0 -1
  97. data/test/fixtures/validate_csdl_invalid.json +0 -1
  98. data/test/fixtures/validate_csdl_valid.json +0 -1
@@ -1,28 +1,48 @@
1
1
  module DataSift
2
+ # Methods for using {http://dev.datasift.com/docs/sources/managed-sources
3
+ # DataSift Managed Sources}
2
4
  class ManagedSource < DataSift::ApiResource
3
-
4
- ##
5
5
  # Creates a new managed source
6
- #+source_type+:: can be facebook_page, googleplus, instagram or yammer
6
+ #
7
+ # @param source_type [String] Type of Managed Source you are creating. e.g.
8
+ # facebook_page, instagram, etc
9
+ # @param name [String] Name of this Managed Source
10
+ # @param parameters [Hash] Source-specific configuration parameters
11
+ # @param resources [Array] Array of source-specific resources
12
+ # @param auth [Array] Array of source-specific auth credentials
7
13
  def create(source_type, name, parameters = {}, resources = [], auth = [], options = {})
8
- raise BadParametersError.new('source_type and name are required') if source_type.nil? || name.nil?
14
+ fail BadParametersError, 'source_type and name are required' if source_type.nil? || name.nil?
9
15
  params = {
10
- :source_type => source_type,
11
- :name => name
16
+ :source_type => source_type,
17
+ :name => name
12
18
  }
13
19
  params.merge!(options) unless options.empty?
14
- params.merge!({:auth => auth.is_a?(String) ? auth : MultiJson.dump(auth)}) unless auth.empty?
15
- params.merge!({:parameters => parameters.is_a?(String) ? parameters : MultiJson.dump(parameters)}) unless parameters.empty?
16
- params.merge!({:resources => resources.is_a?(String) ? resources : MultiJson.dump(resources)}) if resources.length > 0
20
+ params.merge!(
21
+ { :auth => auth.is_a?(String) ? auth : MultiJson.dump(auth) }
22
+ ) unless auth.empty?
23
+ params.merge!(
24
+ { :parameters => parameters.is_a?(String) ? parameters : MultiJson.dump(parameters) }
25
+ ) unless parameters.empty?
26
+ params.merge!(
27
+ { :resources => resources.is_a?(String) ? resources : MultiJson.dump(resources) }
28
+ ) if resources.length > 0
17
29
  DataSift.request(:POST, 'source/create', @config, params)
18
30
  end
19
31
 
32
+ # Update a Managed Source
33
+ #
34
+ # @param id [String] ID of the Managed Source you are updating
35
+ # @param source_type [String] Type of Managed Source you are updating
36
+ # @param name [String] Name (or new name) of the Managed Source
37
+ # @param parameters [Hash] Source-specific configuration parameters
38
+ # @param resources [Array] Array of source-specific resources
39
+ # @param auth [Array] Array of source-specific auth credentials
20
40
  def update(id, source_type, name, parameters = {}, resources = [], auth = [], options = {})
21
- raise BadParametersError.new('id,source_type and name are required') if id.nil? || source_type.nil? || name.nil?
41
+ fail BadParametersError, 'ID, source_type and name are required' if id.nil? || source_type.nil? || name.nil?
22
42
  params = {
23
- :id => id,
24
- :source_type => source_type,
25
- :name => name
43
+ :id => id,
44
+ :source_type => source_type,
45
+ :name => name
26
46
  }
27
47
  params.merge!(options) unless options.empty?
28
48
  params.merge!({:auth => MultiJson.dump(auth)}) if !auth.empty?
@@ -32,33 +52,57 @@ module DataSift
32
52
  DataSift.request(:POST, 'source/update', @config, params)
33
53
  end
34
54
 
55
+ # Delete a Managed Source
56
+ #
57
+ # @param id [String] ID of the Managed Source you are deleting
35
58
  def delete(id)
36
- raise BadParametersError.new('id is required') if id.nil?
37
- DataSift.request(:DELETE, 'source/delete', @config, {:id => id})
59
+ fail BadParametersError, 'ID is required' if id.nil?
60
+ DataSift.request(:DELETE, 'source/delete', @config, { :id => id })
38
61
  end
39
62
 
63
+ # Stop a Managed Source
64
+ #
65
+ # @param id [String] ID of the Managed Source you are stopping
40
66
  def stop(id)
41
- raise BadParametersError.new('id is required') if id.nil?
42
- DataSift.request(:POST, 'source/stop', @config, {:id => id})
67
+ fail BadParametersError, 'ID is required' if id.nil?
68
+ DataSift.request(:POST, 'source/stop', @config, { :id => id })
43
69
  end
44
70
 
71
+ # Start a Managed Source
72
+ #
73
+ # @param id [String] ID of the Managed Source you are starting
45
74
  def start(id)
46
- raise BadParametersError.new('id is required') if id.nil?
47
- DataSift.request(:POST, 'source/start', @config, {:id => id})
75
+ fail BadParametersError, 'ID is required' if id.nil?
76
+ DataSift.request(:POST, 'source/start', @config, { :id => id })
48
77
  end
49
78
 
79
+ # Retrieve details of a Managed Source
80
+ #
81
+ # @param id [String] ID of the Managed Source you are getting. Omitting the
82
+ # ID will return a list of Managed Sources
83
+ # @param source_type [String] Limits the list of Managed Sources returned to
84
+ # only sources of a specific source type if specified
85
+ # @param page [Integer] Number of Managed Sources to return on one page of
86
+ # results
87
+ # @param per_page [Integer] Number of Managed Sources to return per page
50
88
  def get(id = nil, source_type = nil, page = 1, per_page = 20)
51
- params = {:page => page, :per_page => per_page}
52
- params.merge!({:id => id}) if id != nil
53
- params.merge!({:source_type => source_type}) if source_type != nil
89
+ params = { :page => page, :per_page => per_page }
90
+ params.merge!({ :id => id }) if !id.nil?
91
+ params.merge!({ :source_type => source_type }) if !source_type.nil?
54
92
 
55
93
  DataSift.request(:GET, 'source/get', @config, params)
56
94
  end
57
95
 
96
+ # Retrieve log details of Managed Sources
97
+ #
98
+ # @param id [String] ID of the Managed Source for which you are collecting
99
+ # logs
100
+ # @param page [Integer] Number of Managed Source logs to return on one page
101
+ # of results
102
+ # @param per_page [Integer] Number of Managed Source logs to return per page
58
103
  def log(id, page = 1, per_page = 20)
59
- raise BadParametersError.new('id is required') if id.nil?
60
- DataSift.request(:POST, 'source/log', @config, {:id => id, :page => page, :per_page => per_page})
104
+ fail BadParametersError, 'ID is required' if id.nil?
105
+ DataSift.request(:POST, 'source/log', @config, { :id => id, :page => page, :per_page => per_page })
61
106
  end
62
-
63
107
  end
64
108
  end
@@ -1,20 +1,35 @@
1
1
  module DataSift
2
+ # Methods for using Auth specific Managed Sources API endpoints
2
3
  class ManagedSourceAuth < DataSift::ApiResource
3
-
4
+ # Add auth tokens to a Managed Source
5
+ #
6
+ # @param id [String] ID of the Managed Source you are adding Auth tokens to
7
+ # @param auth [Array] Array of auth tokens you are adding to your source
8
+ # @param validate [Boolean] Whether you want to validate your new tokens
9
+ # against the third party API (i.e. the Facebook or Instagram API)
4
10
  def add(id, auth, validate = 'true')
5
11
  params = {
6
- id: id,
12
+ id: id,
13
+ auth: auth,
7
14
  validate: validate
8
15
  }
9
- params.merge!({:auth => auth})
16
+ requires params
10
17
  DataSift.request(:PUT, 'source/auth/add', @config, params)
11
18
  end
12
19
 
20
+ # Remove auth tokens from a Managed Source
21
+ #
22
+ # @param id [String] ID of the Managed Source you are removing auth tokens
23
+ # from
24
+ # @param auth_ids [Array] Array of auth_id strings you need to remove from
25
+ # your source
13
26
  def remove(id, auth_ids)
14
- params = {id: id}
15
- params.merge!({:auth_ids => auth_ids})
27
+ params = {
28
+ id: id,
29
+ auth: auth_ids
30
+ }
31
+ requires params
16
32
  DataSift.request(:PUT, 'source/auth/remove', @config, params)
17
33
  end
18
-
19
34
  end
20
35
  end
@@ -1,20 +1,35 @@
1
1
  module DataSift
2
+ # Methods for using Auth specific Managed Sources API endpoints
2
3
  class ManagedSourceResource < DataSift::ApiResource
3
-
4
+ # Add resources to a Managed Source
5
+ #
6
+ # @param id [String] ID of the Managed Source you are adding resources to
7
+ # @param resources [Array] Array of resources you are adding to your source
8
+ # @param validate [Boolean] Whether you want to validate your new resources
9
+ # against the third party API (i.e. the Facebook or Instagram API)
4
10
  def add(id, resources, validate = 'true')
5
11
  params = {
6
- id: id,
12
+ id: id,
13
+ resources: resources,
7
14
  validate: validate
8
15
  }
9
- params.merge!({:resources => resources})
16
+ requires params
10
17
  DataSift.request(:PUT, 'source/resource/add', @config, params)
11
18
  end
12
19
 
20
+ # Remove resources from a Managed Source
21
+ #
22
+ # @param id [String] ID of the Managed Source you are removing resources
23
+ # from
24
+ # @param resource_ids [Array] Array of resource_id strings you need to
25
+ # remove from your source
13
26
  def remove(id, resource_ids)
14
- params = {id: id}
15
- params.merge!({:resource_ids => resource_ids})
27
+ params = {
28
+ id: id,
29
+ resource_ids: resource_ids
30
+ }
31
+ requires params
16
32
  DataSift.request(:PUT, 'source/resource/remove', @config, params)
17
33
  end
18
-
19
34
  end
20
35
  end
data/lib/push.rb CHANGED
@@ -1,148 +1,215 @@
1
1
  module DataSift
2
2
  ##
3
- # Push is a simple and robust mechanism for periodically delivering your data directly to a given destination
4
- # Several widely adopted storage locations are available including Amazon S3, FTP, HTTP, SFTP, DynamoDB, CouchDB
5
- # MongoDB, Splunk, Elastic search and more! See http://dev.datasift.com/docs/push/connectors
3
+ # Push is a simple and robust mechanism for periodically delivering your data
4
+ # directly to a given destination. Several widely adopted storage locations
5
+ # are available including Amazon S3, (S)FTP, HTTP, DynamoDB, CouchDB,
6
+ # MongoDB, Splunk, ElasticSearch and more! See
7
+ # http://dev.datasift.com/docs/push/connectors
6
8
  class Push < DataSift::ApiResource
7
-
8
9
  ##
9
- # Check that a subscription is defined correctly
10
+ # Check that a Push subscription definition is valid
11
+ #
12
+ # @param params [Hash] Hash of Push subscription parameters
13
+ # @param bool_response [Boolean] True if you want a boolean response. False
14
+ # if you want the full response object
10
15
  def valid?(params, bool_response = true)
11
16
  requires params
12
17
  res = DataSift.request(:POST, 'push/validate', @config, params)
13
18
  bool_response ? res[:http][:status] == 200 : res
14
19
  end
15
20
 
16
- ##
17
- #Create a new subscription to a live stream or historics query
18
- # Possible params are
19
- # hash, historics_id, name, output_type, initial_status, start, end and output_params.*
20
- # where output_params.* depends on the output_type for specific options see the documentation at
21
- # http://dev.datasift.com/docs/rest-api/pushcreate
22
- # For a list of available connectors see http://dev.datasift.com/docs/push/connectors
21
+ # Create a new subscription to a live stream or historics query. Possible
22
+ # params are hash, historics_id, name, output_type, initial_status, start,
23
+ # end and output_params.* where output_params.* depends on the output_type
24
+ # for specific options see the documentation at
25
+ # http://dev.datasift.com/docs/rest-api/pushcreate For a list of available
26
+ # connectors see http://dev.datasift.com/docs/push/connectors
27
+ #
28
+ # @param params [Hash] Hash of Push subscription parameters
23
29
  def create(params)
24
30
  DataSift.request(:POST, 'push/create', @config, params)
25
31
  end
26
32
 
27
- ##
28
33
  # Update the name or output parameters for an existing subscription
29
- def update (params)
34
+ #
35
+ # @param params [Hash] Hash of Push subscription parameters
36
+ def update(params)
30
37
  DataSift.request(:POST, 'push/update', @config, params)
31
38
  end
32
39
 
33
- ##
34
- #Pause a subscription and buffer the data for up to an hour
40
+ # Pause a subscription and buffer the data for up to an hour
41
+ #
42
+ # @param id [String] ID of the Push subscription to pause
35
43
  def pause(id)
36
- params = {:id => id}
44
+ params = { :id => id }
37
45
  requires params
38
46
  DataSift.request(:PUT, 'push/pause', @config, params)
39
47
  end
40
48
 
41
- ##
42
- #Restart a job that was previously paused
49
+ # Resume a Push subscription that was previously paused
50
+ #
51
+ # @param id [String] ID of the Push subscription to resume
43
52
  def resume(id)
44
- params = {:id => id}
53
+ params = { :id => id }
45
54
  requires params
46
55
  DataSift.request(:PUT, 'push/resume', @config, params)
47
56
  end
48
57
 
49
- ##
50
- # Stop a historics query or a live stream that is running with push
58
+ # Stop a Push subscription; you will not be able to resume this
59
+ #
60
+ # @param id [String] ID of the Push subscription to stop
51
61
  def stop(id)
52
- params = {:id => id}
62
+ params = { :id => id }
53
63
  requires params
54
64
  DataSift.request(:PUT, 'push/stop', @config, params)
55
65
  end
56
66
 
57
- ##
58
67
  # Deletes an existing push subscription
68
+ #
69
+ # @param id [String] ID of the Push subscription to delete
59
70
  def delete(id)
60
71
  params = {:id => id}
61
72
  requires params
62
73
  DataSift.request(:DELETE, 'push/delete', @config, params)
63
74
  end
64
75
 
65
- ##
66
76
  # Retrieve log messages for a specific subscription
77
+ #
78
+ # @param id [String] ID of the Push subscription to retrieve logs for
79
+ # @param page [Integer] Which page of logs to retreive
80
+ # @param per_page [Integer] How many logs to return per page
81
+ # @param order_by [String, Symbol] Which field to sort results by
82
+ # @param order_dir [String, Symbol] Order results in ascending or descending
67
83
  def log_for(id, page = 1, per_page = 20, order_by = :request_time, order_dir = :desc)
68
84
  params = {
69
- :id => id,
70
- :page => page,
71
- :per_page => per_page,
72
- :order_by => order_by,
73
- :order_dir => order_dir
85
+ :id => id
74
86
  }
87
+ requires params
88
+ params.merge!(
89
+ :page => page,
90
+ :per_page => per_page,
91
+ :order_by => order_by,
92
+ :order_dir => order_dir
93
+ )
75
94
  DataSift.request(:GET, 'push/log', @config, params)
76
95
  end
77
96
 
78
- ##
79
97
  # Retrieve log messages for all subscriptions
98
+ #
99
+ # @param page [Integer] Which page of logs to retreive
100
+ # @param per_page [Integer] How many logs to return per page
101
+ # @param order_by [String, Symbol] Which field to sort results by
102
+ # @param order_dir [String, Symbol] Order results in ascending or descending
80
103
  def log(page = 1, per_page = 20, order_by = :request_time, order_dir = :desc)
81
104
  params = {
82
- :page => page,
83
- :per_page => per_page,
84
- :order_by => order_by,
85
- :order_dir => order_dir
105
+ :page => page,
106
+ :per_page => per_page,
107
+ :order_by => order_by,
108
+ :order_dir => order_dir
86
109
  }
87
110
  DataSift.request(:GET, 'push/log', @config, params)
88
111
  end
89
112
 
90
- ##
91
113
  # Get details of the subscription with the given ID
114
+ #
115
+ # @param id [String] ID of the subscription to retrieve
92
116
  def get_by_subscription(id)
93
117
  params = { :id => id }
94
118
  DataSift.request(:GET, 'push/get', @config, params)
95
119
  end
96
120
 
97
- ##
98
- # Get details of the subscription with the given stream ID/hash
99
- def get_by_hash(hash, page = 1, per_page = 20, order_by = :created_at, order_dir = :desc)
121
+ # Get details of the subscription with the given filter hash
122
+ #
123
+ # @param hash [String] CSDL filter hash
124
+ # @param page [Integer] Which page of logs to retreive
125
+ # @param per_page [Integer] How many logs to return per page
126
+ # @param order_by [String, Symbol] Which field to sort results by
127
+ # @param order_dir [String, Symbol] Order results in ascending or descending
128
+ # @param include_finished [Integer] Include Push subscriptions in a
129
+ # 'finished' state in your results
130
+ # @param all [Boolean] Also include Push subscriptions created via the web
131
+ # UI in your results
132
+ def get_by_hash(hash, page = 1, per_page = 20, order_by = :created_at, order_dir = :desc, include_finished = 0, all = false)
100
133
  params = {
101
- :hash => hash,
102
- :page => page,
103
- :per_page => per_page,
104
- :order_by => order_by,
105
- :order_dir => order_dir
134
+ :hash => hash
106
135
  }
136
+ requires params
137
+ params.merge!(
138
+ :page => page,
139
+ :per_page => per_page,
140
+ :order_by => order_by,
141
+ :order_dir => order_dir,
142
+ :include_finished => include_finished,
143
+ :all => all
144
+ )
107
145
  DataSift.request(:GET, 'push/get', @config, params)
108
146
  end
109
147
 
110
- ##
111
148
  # Get details of the subscription with the given Historics ID
112
- def get_by_historics_id(id, page = 1, per_page = 20, order_by = :created_at, order_dir = :desc)
149
+ #
150
+ # @param historics_id [String] ID of the Historics query for which you are
151
+ # searching for the related Push subscription
152
+ # @param page [Integer] Which page of logs to retreive
153
+ # @param per_page [Integer] How many logs to return per page
154
+ # @param order_by [String, Symbol] Which field to sort results by
155
+ # @param order_dir [String, Symbol] Order results in ascending or descending
156
+ # @param include_finished [Integer] Include Push subscriptions in a
157
+ # 'finished' state in your results
158
+ # @param all [Boolean] Also include Push subscriptions created via the web
159
+ # UI in your results
160
+ def get_by_historics_id(historics_id, page = 1, per_page = 20, order_by = :created_at, order_dir = :desc, include_finished = 0, all = false)
113
161
  params = {
114
- :historics_id => id,
115
- :page => page,
116
- :per_page => per_page,
117
- :order_by => order_by,
118
- :order_dir => order_dir
162
+ :historics_id => historics_id,
163
+ :page => page,
164
+ :per_page => per_page,
165
+ :order_by => order_by,
166
+ :order_dir => order_dir,
167
+ :include_finished => include_finished,
168
+ :all => all
119
169
  }
120
170
  DataSift.request(:GET, 'push/get', @config, params)
121
171
  end
122
172
 
123
- ##
124
173
  # Get details of all subscriptions within the given page constraints
125
- def get(page = 1, per_page = 20, order_by = :created_at, order_dir = :desc)
174
+ #
175
+ # @param page [Integer] Which page of logs to retreive
176
+ # @param per_page [Integer] How many logs to return per page
177
+ # @param order_by [String, Symbol] Which field to sort results by
178
+ # @param order_dir [String, Symbol] Order results in ascending or descending
179
+ # @param include_finished [Integer] Include Push subscriptions in a
180
+ # 'finished' state in your results
181
+ # @param all [Boolean] Also include Push subscriptions created via the web
182
+ # UI in your results
183
+ def get(page = 1, per_page = 20, order_by = :created_at, order_dir = :desc, include_finished = 0, all = false)
126
184
  params = {
127
- :page => page,
128
- :per_page => per_page,
129
- :order_by => order_by,
130
- :order_dir => order_dir
185
+ :page => page,
186
+ :per_page => per_page,
187
+ :order_by => order_by,
188
+ :order_dir => order_dir,
189
+ :include_finished => include_finished,
190
+ :all => all
131
191
  }
132
192
  DataSift.request(:GET, 'push/get', @config, params)
133
193
  end
134
194
 
135
- ##
136
195
  # Pull data from a 'pull' type Push Subscription
137
- def pull(id, size = 52428800, cursor = '', callback = nil)
196
+ #
197
+ # @param id [String] ID of the Push subscription to pull data from
198
+ # @param size [Integer] Max size (bytes) of the data that should be returned
199
+ # @param cursor [String] Point to a specific point in your Push buffer using
200
+ # a cursor
201
+ # @param callback [Method] Pass a callback to process each interaction
202
+ # returned from a successful pull request
203
+ def pull(id, size = 52_428_800, cursor = '', callback = nil)
138
204
  params = {
139
- :id => id,
140
- :size => size,
141
- :cursor => cursor
205
+ :id => id
142
206
  }
143
- if callback
144
- params.merge!({:on_interaction => callback})
145
- end
207
+ requires params
208
+ params.merge!(
209
+ :size => size,
210
+ :cursor => cursor
211
+ )
212
+ params.merge!({:on_interaction => callback}) unless callback.nil?
146
213
  DataSift.request(:GET, 'pull', @config, params, {}, 30, 30, true)
147
214
  end
148
215
  end