nexosis_api 2.4.1 → 3.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d289d314e46f48ce9d901cc1d179dc8ba1c1c1a59a3cb7d7bd82a0f2f264ced1
4
- data.tar.gz: 5241b8b07d590ac5578c32e619054e2eb4fe944e0a217b9486daa84a748aa9d6
3
+ metadata.gz: ab792a54e07188d8425d45c39c7b64f3862f009ec1f83c30531057411091a911
4
+ data.tar.gz: c252e1fdd7f2be4c0a1bc6bb91ce0b5cf2f75de33db70f7ecd48e3e62d0c17e6
5
5
  SHA512:
6
- metadata.gz: bc11eaf8123053d1ffaa2414b495567bb2e5570fee70bb17894bb4c24b20410b458e5cc15b9994d8b20644179c8ae5305fc7bae8a380118886ebeb2f031b0e4a
7
- data.tar.gz: b705e940d7bf85bfd33a9d19fe6611a52e5b83efe109b1b84f682fd4e9591949683aa477eeebdfc5a993c228749f316ecdddfe85f3e1ef333e71b41fd1f1adf6
6
+ metadata.gz: d5955b865d93589337ef1ba7f4c4b132adbf2d1513216a1140d673187d49479573eb5021342666a0a653c93cbd8ac00bbbb28f52c8b6161bbfdd64606f7b169c
7
+ data.tar.gz: 5c569ddb22bf8d748dd3b53e72819e1358b0a829789ad68167974676f1ad542b9d8c0244fef4bcc1875fd4358f1d9d22bf038f5abbd4aad6f694dc34a0d48fb4
@@ -20,6 +20,7 @@ require 'nexosis_api/impact_metric'
20
20
  require 'nexosis_api/imports_response'
21
21
  require 'nexosis_api/join'
22
22
  require 'nexosis_api/link'
23
+ require 'nexosis_api/list_queries'
23
24
  require 'nexosis_api/message'
24
25
  require 'nexosis_api/metric'
25
26
  require 'nexosis_api/model_summary'
@@ -31,6 +32,7 @@ require 'nexosis_api/session_response'
31
32
  require 'nexosis_api/session_result'
32
33
  require 'nexosis_api/session_selection_metrics'
33
34
  require 'nexosis_api/session'
35
+ require 'nexosis_api/sort_order'
34
36
  require 'nexosis_api/time_interval'
35
37
  require 'nexosis_api/timeseries_outliers'
36
38
  require 'nexosis_api/view_definition'
@@ -28,19 +28,15 @@ module NexosisApi
28
28
 
29
29
  # Gets the list of data sets that have been saved to the system, optionally filtering by partial name match.
30
30
  #
31
- # @param partial_name [String] if provided, all datasets returned will contain this string
32
- # @param page [int] page number for items in list
33
- # @param page_size [int] number of items in each page
31
+ # @param dataset_list_query [NexosisApi::DatasetListQuery] Defines options for limiting list query results.
34
32
  # @return [NexosisApi::PagedArray of NexosisApi::DatasetSummary] array of datasets found
35
- # @since 1.4 - added paging parameters
36
- def list_datasets(partial_name = '', page = 0, page_size = 50)
33
+ # @since 1.4.0 - added paging parameters
34
+ # @since 2.5.0 - added multiple query options
35
+ # @since 3.0.0 - use list query instead of differing parms
36
+ # @note a default list query will use page=0 and pageSize=50 in the query
37
+ def list_datasets(dataset_list_query = NexosisApi::DatasetListQuery.new)
37
38
  list_dataset_url = '/data'
38
- query = {
39
- page: page,
40
- pageSize: page_size
41
- }
42
- query['partialName'] = partial_name unless partial_name.empty?
43
- response = self.class.get(list_dataset_url, headers: @headers, query: query)
39
+ response = self.class.get(list_dataset_url, headers: @headers, query: dataset_list_query.query_parameters)
44
40
  if response.success?
45
41
  NexosisApi::PagedArray.new(response.parsed_response,
46
42
  response.parsed_response['items']
@@ -8,19 +8,12 @@ module NexosisApi
8
8
 
9
9
  # List all existing import requests
10
10
  #
11
- # @param dataset_name [String] optional name filter of dataset which was imported
12
- # @param page [int] page number for items in list
13
- # @param page_size [int] number of items in each page
11
+ # @param import_list_query [NexosisApi::ImportListQuery] options to limit the query results
14
12
  # @return [NexosisApi::PagedArray of NexosisApi::ImportsResponse]
15
13
  # @since 1.4 added paging parameters
16
- def list_imports(dataset_name = '', page = 0, page_size = 50)
14
+ def list_imports(import_list_query = NexosisApi::ImportListQuery.new)
17
15
  imports_url = '/imports'
18
- query = {
19
- dataSetName: dataset_name,
20
- page: page,
21
- pageSize: page_size
22
- }
23
- response = self.class.get(imports_url, headers: @headers, query: query)
16
+ response = self.class.get(imports_url, headers: @headers, query: import_list_query.query_parameters)
24
17
  if (response.success?)
25
18
  NexosisApi::PagedArray.new(response.parsed_response,
26
19
  response.parsed_response['items']
@@ -5,24 +5,14 @@ module NexosisApi
5
5
  module Models
6
6
  # List all models created in your company, optionally filtered by query parameters
7
7
  #
8
- # @param datasource_name [String] optionally limit to those
9
- # models created for this data source name.
10
- # @param query_options [Hash] limit by dates: begin_date and/or end_date
8
+ # @param model_list_query [NexosisApi::ModelListQuery] optionally limit query results by the given parameters
11
9
  # @note - query options dates can either be ISO 8601 compliant strings or Date objects.
12
10
  # @return [NexosisApi::PagedArray of NexosisApi::ModelSummary] - all models available within the query parameters
13
11
  # @raise [NexosisApi::HttpException]
14
- def list_models(datasource_name = nil, page = 0, page_size = 50, query_options = {})
12
+ # @since 3.0.0 - all query parameters use list query class
13
+ def list_models(model_list_query = NexosisApi::ModelListQuery.new)
15
14
  model_url = '/models'
16
- query = {
17
- page: page,
18
- pageSize: page_size
19
- }
20
- unless query_options.empty?
21
- query.store('createdBeforeDate', query_options['end_date']) unless query_options['end_date'].nil?
22
- query.store('createdAfterDate', query_options['begin_date']) unless query_options['begin_date'].nil?
23
- end
24
- query.store('dataSourceName', datasource_name) unless datasource_name.nil?
25
- response = self.class.get(model_url, headers: @headers, query: query)
15
+ response = self.class.get(model_url, headers: @headers, query: model_list_query.query_parameters)
26
16
  raise HttpException.new("There was a problem listing models: #{response.code}.",
27
17
  "listing models with data source name #{datasource_name}",
28
18
  response) unless response.success?
@@ -10,29 +10,20 @@ module NexosisApi
10
10
 
11
11
  # List sessions previously submitted
12
12
  #
13
- # @param query_options [Hash] optionally provide query parameters to limit the search of sessions.
14
- # @param page [Integer] optionally provide a page number for paging. Defaults to 0 (first page).
15
- # @param pageSize [Integer] optionally provide a page size to limit the total number of results. Defaults to 50, max 1000
13
+ # @param session_list_query [NexosisApi::SessionListQuery] optionally provide query parameters to limit the search of sessions.
16
14
  # @return [NexosisApi::PagedArray of NexosisApi::SessionResponse] with all sessions matching the query or all if no query
17
15
  # @raise [NexosisApi::HttpException]
18
- # @note query parameters hash members are dataset_name, event_name, requested_before_date, and requested_after_date.
19
- # After and before dates refer to the session requested date.
16
+ # @note query parameters hash members are dataset_name, event_name, model_id,
17
+ # sort_by, sort_order, requested_before_date, and requested_after_date.
18
+ # After and before dates refer to the session requested date.
20
19
  # @example query for just one dataset
21
20
  # sessions = NexosisApi.client.list_sessions :dataset_name => 'MyDataset'
22
- def list_sessions(query_options = {}, page = 0, pageSize = 50)
21
+ # @see https://developers.nexosis.com/docs/services/98847a3fbbe64f73aa959d3cededb3af/operations/sessions-list-all?
22
+ def list_sessions(session_list_query = NexosisApi::SessionListQuery.new)
23
23
  sessions_url = '/sessions'
24
- query = {
25
- 'dataSetName' => query_options[:dataset_name],
26
- 'eventName' => query_options[:event_name],
27
- 'requestedAfterDate' => query_options[:requested_after_date],
28
- 'requestedBeforeDate' => query_options[:requested_before_date],
29
- 'type' => query_options[:type],
30
- 'page' => page,
31
- 'pageSize' => pageSize
32
- }
33
- response = self.class.get(sessions_url, headers: @headers, query: query)
24
+ response = self.class.get(sessions_url, headers: @headers, query: session_list_query.query_parameters)
34
25
  raise HttpException.new('Could not retrieve sessions',
35
- "Get all sessions with query #{query_options}",
26
+ "Get all sessions with query #{session_list_query.query_parameters}",
36
27
  response) unless response.success?
37
28
  NexosisApi::PagedArray.new(response.parsed_response, response.parsed_response['items'].map do |session_hash|
38
29
  response_hash = { 'session' => session_hash }.merge(response.headers)
@@ -0,0 +1,198 @@
1
+ module NexosisApi
2
+ require 'date'
3
+ # Class to hold general query options for list requests
4
+ # @since 3.0.0
5
+ class ListQuery
6
+ def initialize(options = { 'page_number': 0, 'page_size': 50 }, *additional_keys)
7
+ assert_valid_keys(options, :page_number, :page_size, :sort_order, :sort_by, additional_keys)
8
+ @page_number = options.key?(:page_number) ? options[:page_number] : 0
9
+ @page_size = options.key?(:page_size) ? options[:page_size] : 50
10
+ @sort_order = NexosisApi::SortOrder.const_get(options[:sort_order].upcase) if options.key? :sort_order
11
+ @sort_by = options[:sort_by] if options.key? :sort_by
12
+ end
13
+
14
+ def to_hash
15
+ query = {
16
+ 'page': @page_number,
17
+ 'pageSize': @page_size
18
+ }
19
+ query.store(:sortOrder, @sort_order) unless @sort_order.nil?
20
+ query.store(:sortBy, @sort_by) unless @sort_by.nil?
21
+ query
22
+ end
23
+
24
+ # Count of results to retrieve in each page (max 1000).
25
+ # @return [Integer]
26
+ attr_accessor :page_size
27
+
28
+ # zero-based page number of results to retrieve
29
+ # @return [Integer]
30
+ attr_accessor :page_number
31
+
32
+ # Direction to sort the results.
33
+ # @return [NexosisApi::SortOrder]
34
+ attr_accessor :sort_order
35
+
36
+ # The name of an entity property to sort by
37
+ # @return [String]
38
+ # @note - each entity has different possibilities. See the api doc links on each list type for more information.
39
+ attr_accessor :sort_by
40
+
41
+ private
42
+
43
+ def date_string(date_field)
44
+ raise ArgumentError, 'date_field was not provided and is not optional ' if date_field.to_s.empty?
45
+ date = DateTime.parse(date_field.to_s)
46
+ date.strftime('%FT%T%:z')
47
+ end
48
+
49
+ def assert_valid_keys(options, *valid_keys)
50
+ valid_keys.flatten!
51
+ options.keys.each do |k|
52
+ unless valid_keys.include?(k)
53
+ raise ArgumentError.new("Unknown key: #{k.inspect}. Valid keys are: #{valid_keys.map(&:inspect).join(', ')}")
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+ # class to hold the query options for list datasets
60
+ # @since 3.0.0
61
+ # @see https://developers.nexosis.com/docs/services/98847a3fbbe64f73aa959d3cededb3af/operations/datasets-list-all?
62
+ # @note - sort by properties include dataSetName, dataSetSize, rowCount, dateCreated, and lastModified
63
+ class DatasetListQuery < ListQuery
64
+ def initialize(options = {})
65
+
66
+ @partial_name = options[:partial_name] if options.key? :partial_name
67
+ super(options, :partial_name)
68
+ end
69
+
70
+ # A hash suitable for using as the query portion of an HTTP request to the API
71
+ # @return [Hash]
72
+ def query_parameters
73
+ parm_hash = {}
74
+ parm_hash.store(:partialName, @partial_name) unless @partial_name.nil?
75
+ self.to_hash.merge(parm_hash)
76
+ end
77
+ # The name or part of a name by which to limit the list results.
78
+ # @return [String]
79
+ attr_accessor :partial_name
80
+ end
81
+
82
+ # class to hold the query options for list datasets
83
+ # @since 3.0.0
84
+ # @see https://developers.nexosis.com/docs/services/98847a3fbbe64f73aa959d3cededb3af/operations/sessions-list-all?
85
+ # @note sort by properties include id, name, type, status, dataSourceName, and requestedDate
86
+ class SessionListQuery < ListQuery
87
+ def initialize(options = {})
88
+ @datasource_name = options[:datasource_name] if options.key? :datasource_name
89
+ @event_name = options[:event_name] if options.key? :event_name
90
+ @model_id = options[:model_id] if options.key? :model_id
91
+ @requested_after_date = options[:requested_after_date] if options.key? :requested_after_date
92
+ @requested_before_date = options[:requested_before_date] if options.key? :requested_before_date
93
+ super(options, :datasource_name, :event_name, :model_id, :requested_after_date, :requested_before_date)
94
+ end
95
+
96
+ # A hash suitable for using as the query portion of an HTTP request to the API
97
+ # @return [Hash]
98
+ def query_parameters
99
+ parm_hash = {}
100
+ parm_hash.store(:dataSourceName, @datasource_name) unless @datasource_name.nil?
101
+ parm_hash.store(:eventName, @event_name) unless @event_name.nil?
102
+ parm_hash.store(:modelId, @model_id) unless @model_id.nil?
103
+ parm_hash.store(:requestedAfterDate, date_string(@requested_after_date)) unless @requested_after_date.nil?
104
+ parm_hash.store(:requestedBeforeDate, date_string(@requested_before_date)) unless @requested_before_date.nil?
105
+ self.to_hash.merge(parm_hash)
106
+ end
107
+
108
+ # Limits sessions to those for a particular data source
109
+ # @return [String]
110
+ attr_accessor :datasource_name
111
+
112
+ # Limits impact sessions to those for a particular event
113
+ # @return [String]
114
+ attr_accessor :event_name
115
+
116
+ # Limits model-building sessions to those that built the specified model
117
+ # @return [String]
118
+ attr_accessor :model_id
119
+
120
+ # Format - date-time (as date-time in ISO8601). Limits sessions to those requested on or after the specified date
121
+ # @return [String]
122
+ attr_accessor :requested_after_date
123
+
124
+ # Format - date-time (as date-time in ISO8601). Limits sessions to those requested on or before the specified date
125
+ # @return [String]
126
+ attr_accessor :requested_before_date
127
+ end
128
+
129
+ # class to hold the query options for list models
130
+ # @since 3.0.0
131
+ # @see https://developers.nexosis.com/docs/services/98847a3fbbe64f73aa959d3cededb3af/operations/models-list-all?
132
+ # @note sort by properties include id, modelName, dataSourceName, type, createdDate, and lastUsedDate
133
+ class ModelListQuery < ListQuery
134
+ def initialize(options = {})
135
+ @datasource_name = options[:datasource_name] if options.key? :datasource_name
136
+ @created_after_date = options[:created_after_date] if options.key? :created_after_date
137
+ @created_before_date = options[:created_before_date] if options.key? :created_before_date
138
+ super(options, :datasource_name, :created_after_date, :created_before_date)
139
+ end
140
+
141
+ # A hash suitable for using as the query portion of an HTTP request to the API
142
+ # @return [Hash]
143
+ def query_parameters
144
+ parm_hash = {}
145
+ parm_hash.store(:dataSourceName, @datasource_name) unless @datasource_name.nil?
146
+ parm_hash.store(:createdAfterDate, date_string(@created_after_date)) unless @created_after_date.nil?
147
+ parm_hash.store(:createdBeforeDate, date_string(@created_before_date)) unless @created_before_date.nil?
148
+ self.to_hash.merge(parm_hash)
149
+ end
150
+
151
+ # Limits models to those for a particular data source
152
+ # @return [String]
153
+ attr_accessor :datasource_name
154
+
155
+ # Format - date-time (as date-time in ISO8601). Limits models to those created on or after the specified date
156
+ # @return [String]
157
+ attr_accessor :created_after_date
158
+
159
+ # Format - date-time (as date-time in ISO8601). Limits models to those created on or before the specified date
160
+ # @return [String]
161
+ attr_accessor :created_before_date
162
+ end
163
+
164
+ # class to hold the query options for list imports
165
+ # @since 3.0.0
166
+ # @see https://developers.nexosis.com/docs/services/98847a3fbbe64f73aa959d3cededb3af/operations/imports-list-imports?
167
+ # @note sort by properties include id, dataSetName, requestedDate, and currentStatusDate
168
+ class ImportListQuery < ListQuery
169
+ def initialize(options = {})
170
+ @dataset_name = options[:dataset_name] if options.key? :dataset_name
171
+ @requested_after_date = options[:requested_after_date] if options.key? :requested_after_date
172
+ @requested_before_date = options[:requested_before_date] if options.key? :requested_before_date
173
+ super(options, :dataset_name, :requested_after_date, :requested_before_date)
174
+ end
175
+
176
+ # A hash suitable for using as the query portion of an HTTP request to the API
177
+ # @return [Hash]
178
+ def query_parameters
179
+ parm_hash = {}
180
+ parm_hash.store(:dataSourceName, @dataset_name) unless @dataset_name.nil?
181
+ parm_hash.store(:requestedAfterDate, date_string(@requested_after_date)) unless @requested_after_date.nil?
182
+ parm_hash.store(:requestedBeforeDate, date_string(@requested_before_date)) unless @requested_before_date.nil?
183
+ self.to_hash.merge(parm_hash)
184
+ end
185
+
186
+ # Limits imports to those for a particular dataset
187
+ # @return [String]
188
+ attr_accessor :dataset_name
189
+
190
+ # Format - date-time (as date-time in ISO8601). Limits imports to those requested on or after the specified date
191
+ # @return [String]
192
+ attr_accessor :requested_after_date
193
+
194
+ # Format - date-time (as date-time in ISO8601). Limits imports to those requested on or before the specified date
195
+ # @return [String]
196
+ attr_accessor :requested_before_date
197
+ end
198
+ end
@@ -0,0 +1,11 @@
1
+ module NexosisApi
2
+ # Constants for list query sort order
3
+ # @since 3.0.0
4
+ module SortOrder
5
+ # Order results ascending according to type sort
6
+ ASC = :string
7
+
8
+ # Order results descending according to type sort
9
+ DESC = :string
10
+ end
11
+ end
data/nexosisapi.gemspec CHANGED
@@ -16,6 +16,6 @@ Gem::Specification.new do |spec|
16
16
  spec.require_paths = ['lib']
17
17
  spec.required_ruby_version = '>= 2.3.0'
18
18
  spec.summary = "Ruby client for working with the Nexosis API"
19
- spec.version = '2.4.1'
19
+ spec.version = '3.0.0'
20
20
  spec.metadata["yard.run"] = "yri"
21
21
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexosis_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nexosis,Inc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-06 00:00:00.000000000 Z
11
+ date: 2018-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -76,6 +76,7 @@ files:
76
76
  - lib/nexosis_api/imports_response.rb
77
77
  - lib/nexosis_api/join.rb
78
78
  - lib/nexosis_api/link.rb
79
+ - lib/nexosis_api/list_queries.rb
79
80
  - lib/nexosis_api/message.rb
80
81
  - lib/nexosis_api/metric.rb
81
82
  - lib/nexosis_api/model_summary.rb
@@ -87,6 +88,7 @@ files:
87
88
  - lib/nexosis_api/session_response.rb
88
89
  - lib/nexosis_api/session_result.rb
89
90
  - lib/nexosis_api/session_selection_metrics.rb
91
+ - lib/nexosis_api/sort_order.rb
90
92
  - lib/nexosis_api/time_interval.rb
91
93
  - lib/nexosis_api/timeseries_outliers.rb
92
94
  - lib/nexosis_api/view_data.rb