veritable 0.1.0.79 → 0.1.0.80

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,14 +2,21 @@ require 'veritable/object'
2
2
  require 'multi_json'
3
3
 
4
4
  module Veritable
5
+
6
+ # Encapsulates the HTTP logic for connecting to the Veritable API
7
+ #
8
+ # Users should not include this module.
5
9
  module Connection
6
10
  include VeritableObject
11
+
12
+ # Initalizes a new connection
7
13
  def initialize(opts=nil, doc=nil)
8
14
  super(opts, doc)
9
15
  require_opts :api_key, :api_base_url
10
16
  default_opts(:ssl_verify => true, :enable_gzip => true)
11
17
  end
12
18
 
19
+ # Wraps the HTTP GET logic
13
20
  def get(url, params=nil, headers={})
14
21
  if params and params.count > 0
15
22
  query_string = Util.query_params(params)
@@ -18,18 +25,23 @@ module Veritable
18
25
  request(:get, url, nil, headers)
19
26
  end
20
27
 
28
+ # Wraps the HTTP POST logic
21
29
  def post(url, payload, headers={})
22
30
  payload = MultiJson.encode(payload)
23
31
  headers = headers.merge({:content_type => 'application/json'})
24
32
  request(:post, url, payload, headers)
25
33
  end
26
34
 
35
+ # Wraps the HTTP PUT logic
27
36
  def put(url, payload, headers={})
28
37
  payload = MultiJson.encode(payload)
29
38
  headers = headers.merge({:content_type => 'application/json'})
30
39
  request(:put, url, payload, headers)
31
40
  end
32
41
 
42
+ # Wraps the HTTP DELETE logic
43
+ #
44
+ # Silently allows DELETE of nonexistent resources
33
45
  def delete(url, headers={})
34
46
  begin
35
47
  request(:delete, url, nil, headers)
@@ -40,6 +52,7 @@ module Veritable
40
52
  end
41
53
  end
42
54
 
55
+ # Wraps the core HTTP request logic
43
56
  def request(verb, url, payload=nil, headers={})
44
57
  url = api_base_url + "/" + url
45
58
 
@@ -75,9 +88,16 @@ module Veritable
75
88
 
76
89
  private
77
90
 
91
+ # Private accessor for API key
78
92
  def api_key; @opts[:api_key]; end
93
+
94
+ # Private accessor for API base URL
79
95
  def api_base_url; @opts[:api_base_url]; end
96
+
97
+ # Private accessor for API :ssl_verify option
80
98
  def ssl_verify; @opts[:ssl_verify]; end
99
+
100
+ # Private accessor for API :enable_gzip option
81
101
  def enable_gzip; @opts[:enable_gzip]; end
82
102
 
83
103
  end
@@ -2,9 +2,19 @@ require 'veritable/object'
2
2
  require 'veritable/resource'
3
3
 
4
4
  module Veritable
5
+
6
+ # Generic Cursor class for collections of API resources
7
+ #
8
+ # Cursors may be initialized with 'limit', 'start', and 'per_page' options.
9
+ #
10
+ # Users should call the #each and #next methods for access to the underlying resources.
5
11
  class Cursor
6
12
  include VeritableResource
7
13
  include Enumerable
14
+
15
+ # Initializes a new Veritable::Cursor from an API collection
16
+ #
17
+ # Optionally pass a block in for postprocessing of resources.
8
18
  def initialize(opts=nil, doc=nil, &lazymap)
9
19
  super(opts, doc)
10
20
 
@@ -17,6 +27,7 @@ module Veritable
17
27
  @opts['lazymap'] = lazymap if lazymap
18
28
  end
19
29
 
30
+ # Implements the Enumerable interface
20
31
  def each
21
32
  i = limit if limit
22
33
  loop do
@@ -35,11 +46,16 @@ module Veritable
35
46
  end
36
47
  end
37
48
  end
49
+
50
+ # String representation of the Cursor
38
51
  def inspect; to_s; end
52
+
53
+ # String representation of the Cursor
39
54
  def to_s; "#<Veritable::Cursor collection='" + collection + "'>"; end
40
55
 
41
56
  private
42
57
 
58
+ # Private method to refresh the cursor from the server
43
59
  def refresh
44
60
  return data.length if data.length > 0
45
61
  if next_page
@@ -52,15 +68,34 @@ module Veritable
52
68
  return data.length
53
69
  end
54
70
 
71
+ # Private accessor for the limit option
55
72
  def limit; @opts['limit']; end
73
+
74
+ # Private setter for the limit option
56
75
  def limit=(x); @opts['limit'] = x; end
76
+
77
+ # Private accessor for the start option
57
78
  def start; @opts['start']; end
79
+
80
+ # Private accessor for the per_page option
58
81
  def per_page; @opts['per_page']; end
82
+
83
+ # Privatre accessor for the collection
59
84
  def collection; @opts['collection'] end
85
+
86
+ # Postprocessing block, if any
60
87
  def lazymap; @opts['lazymap']; end
88
+
89
+ # Key for the underlying data
61
90
  def key; @opts['key'] end
91
+
92
+ # Link to the next page of the collection
62
93
  def next_page; link 'next' end
94
+
95
+ # True if the Cursor is on the last page of the collection
63
96
  def last_page?; ! @doc.has_key? 'next' end
97
+
98
+ # Fetches the underlying data
64
99
  def data; @doc[key] end
65
100
  end
66
101
  end
@@ -1,3 +1,4 @@
1
1
  module Veritable
2
+ # Acceptable datatypes
2
3
  DATATYPES = ['boolean', 'categorical', 'real', 'count']
3
4
  end
@@ -1,17 +1,41 @@
1
- class VeritableError < StandardError
2
- attr_reader :message
3
- def initialize(message, opts=nil)
4
- @message = message
5
- if opts.is_a? Hash
6
- @opts = opts
7
- eigenclass = class << self; self; end
8
- @opts.keys.each {|k|
9
- eigenclass.send(:define_method, k.to_sym) {
10
- @opts[k]
1
+ module Veritable
2
+
3
+ # Class for all errors returned by veritable-ruby
4
+ #
5
+ # ==== Attributes
6
+ # * +message+ -- the String message describing the error
7
+ # * dynamically defined -- errors may have other attributes, such as +http_code+ or +row+, dynamically defined at initialization.
8
+ class VeritableError < StandardError
9
+ # Accessor for the error message
10
+ attr_reader :message
11
+
12
+ # Initializes a Veritable::VeritableError
13
+ #
14
+ # Users should not invoke directly.
15
+ #
16
+ # ==== Arguments
17
+ # +message+ -- a String message describing the error
18
+ # +opts+ -- a Hash optionally specifying other instance attributes to be dynamically defined
19
+ #
20
+ #
21
+ # See also: https://dev.priorknowledge.com/docs/client/ruby
22
+ def initialize(message, opts=nil)
23
+ @message = message
24
+ if opts.is_a? Hash
25
+ @opts = opts
26
+ eigenclass = class << self; self; end
27
+ @opts.keys.each {|k|
28
+ eigenclass.send(:define_method, k.to_sym) {
29
+ @opts[k]
30
+ }
11
31
  }
12
- }
32
+ end
13
33
  end
34
+
35
+ # Prints the error message
36
+ def to_s; message; end
37
+
38
+ # Prints the error message
39
+ def inspect; message; end
14
40
  end
15
- def to_s; message; end
16
- def inspect; message; end
17
- end
41
+ end
@@ -1,7 +1,13 @@
1
1
  require 'veritable/errors'
2
2
 
3
3
  module Veritable
4
+ # Abstracts the structure of veritable-ruby objects
5
+ #
6
+ # Users should not include this module.
4
7
  module VeritableObject
8
+ # Initializes a new object from a hash of options and an API doc
9
+ #
10
+ # Users should not invoke directly.
5
11
  def initialize(opts=nil, doc=nil)
6
12
  @opts = opts
7
13
  @doc = doc
@@ -9,10 +15,12 @@ module Veritable
9
15
 
10
16
  private
11
17
 
18
+ # Private method -- requires that certain options be present at initialization
12
19
  def require_opts(*keys)
13
20
  keys.each {|k| raise VeritableError.new("Error initializing object -- must provide #{k}") unless @opts.has_key?(k)}
14
21
  end
15
22
 
23
+ # Private method -- specifies default options
16
24
  def default_opts(hash={})
17
25
  hash.each {|k, v| @opts[k] = v unless @opts.has_key?(k)}
18
26
  end
@@ -2,11 +2,15 @@ require 'veritable/connection'
2
2
  require 'veritable/errors'
3
3
 
4
4
  module Veritable
5
+ # Abstracts the structure of Veritable API resources
6
+ #
7
+ # Users should not include this module.
5
8
  module VeritableResource
6
9
  include Connection
7
10
 
8
11
  private
9
12
 
13
+ # Private method: retrieves the appropriate link field from the resource doc
10
14
  def link(name)
11
15
  @doc['links'][name]
12
16
  end
@@ -6,17 +6,51 @@ require 'csv'
6
6
  require 'set'
7
7
 
8
8
  module Veritable
9
+
10
+ # Encapsulates utilities for working with data
11
+ #
12
+ # ==== Methods
13
+ # * +read_csv+ -- reads a .csv from disk into an Array of row Hashes
14
+ # * +write_csv+ -- writes an Array of row Hashes to disk as .csv
15
+ # * +split_rows+ -- splits an Array of row Hashes into two sets
16
+ # * +make_schema+ -- makes a new analysis schema from a schema rule
17
+ # * +validate_data+ -- validates an Array of row Hashes against a schema
18
+ # * +clean_data+ -- cleans an Array of row Hashes to conform to a schema
19
+ # * +validate_predictions+ -- validates a single predictions request Hash against a schema
20
+ # * +clean_predictions+ -- cleans a predictions request Hash to conform to a schema
21
+ # * +validate_schema+ -- validates a schema
22
+ # * +check_id+ -- checks that a unique ID is valid
23
+ # * +check_row+ -- checks that a row Hash is well-formed
24
+ # * +check_datatype+ -- checks that a datatype is valid
25
+ # * +query_params+ -- helper function for HTTP form encoding
26
+ # * +make_table_id+ -- autogenerates a new valid ID for a table
27
+ # * +make_analysis_id+ -- autogenerates a new valid ID for an analysis
28
+ #
29
+ # See also: https://dev.priorknowledge.com/docs/client/ruby
9
30
  module Util
10
31
  class << self
32
+ # Autogenerate a new table ID
33
+ #
34
+ # Users should not call directly
11
35
  def make_table_id; UUID.new.generate :compact ; end
36
+
37
+ # Autogenerate a new analysis ID
38
+ #
39
+ # Users should not call directly
12
40
  def make_analysis_id; UUID.new.generate :compact ; end
13
41
 
42
+ # Helper function for HTTP form encoding
43
+ #
44
+ # Users should not call directly
14
45
  def query_params(params, parent=nil)
15
46
  flatten_params(params).collect {|x|
16
47
  "#{x[0]}=#{x[1]}"
17
48
  }.join("&")
18
49
  end
19
50
 
51
+ # Checks that a unique ID is valid
52
+ #
53
+ # Raises a VeritableError if the ID is invalid.
20
54
  def check_id(id)
21
55
  if not id.is_a? String
22
56
  begin
@@ -33,6 +67,9 @@ module Veritable
33
67
  end
34
68
  end
35
69
 
70
+ # Checks that a given row is well-formed
71
+ #
72
+ # Raises a VeritableError if the row Hash is not well-formed
36
73
  def check_row(row)
37
74
  if not row.is_a? Hash
38
75
  begin
@@ -53,6 +90,9 @@ module Veritable
53
90
  end
54
91
  end
55
92
 
93
+ # Checks tht a given datatype is valid
94
+ #
95
+ # Raises a VeritableError if the datatype is invalid.
56
96
  def check_datatype(datatype, msg=nil)
57
97
  if not DATATYPES.include? datatype
58
98
  begin
@@ -65,6 +105,16 @@ module Veritable
65
105
  end
66
106
  end
67
107
 
108
+ # Splits an array of row Hashes into two sets
109
+ #
110
+ # ==== Arguments
111
+ # * +rows+ -- an Array of valid row Hashes
112
+ # * +frac+ -- the fraction of the rows to include in the first set
113
+ #
114
+ # ==== Returns
115
+ # An array <tt>[train_dataset, test_dataset]</tt>, each of whose members is an Array of row Hashes.
116
+ #
117
+ # See also: https://dev.priorknowledge.com/docs/client/ruby
68
118
  def split_rows(rows, frac)
69
119
  rows = rows.to_a
70
120
  n = rows.size
@@ -75,32 +125,56 @@ module Veritable
75
125
  return [train_dataset, test_dataset]
76
126
  end
77
127
 
78
- def validate_schema(schema)
79
- schema.is_a? Veritable::Schema ? schema.validate : Veritable::Schema.new(schema).validate
80
- end
128
+ # Validates a schema
129
+ #
130
+ # Checks that a Veritable::Schema or Hash of the appropriate form is well-formed.
131
+ def validate_schema(schema); schema.is_a? Veritable::Schema ? schema.validate : Veritable::Schema.new(schema).validate; end
81
132
 
133
+ # Makes a new analysis schema from a schema rule
134
+ #
135
+ # ==== Arguments
136
+ # * +schema_rule+ -- a Hash or Array of two-valued Arrays, whose keys or first values should be regexes to match against column names, and whose values should be the appropriate datatype to assign to matching columns, for instance:
137
+ # [['a_regex_to_match', {'type' => 'continuous'}], ['another_regex', {'type' => 'count'}], ...]
138
+ # * +opts+ -- a Hash which must contain either:
139
+ # - the key <tt>'headers'</tt>, whose value should be an Array of column names from which to construct the schema
140
+ # - or the key <tt>'rows'</tt>, whose value should be an Array of row Hashes from whose columns the schema is to be constructed
141
+ #
142
+ # ==== Returns
143
+ # A new Veritable::Schema
144
+ #
145
+ # See also: https://dev.priorknowledge.com/docs/client/ruby
82
146
  def make_schema(schema_rule, opts={})
83
- if ((not opts.has_key?('headers')) and (not opts.has_key?('rows')))
84
- raise VeritableError.new("Either :headers or :rows must be provided!")
85
- end
86
- headers = opts.has_key?('headers') ? opts['headers'] : nil
87
- if headers.nil?
88
- headers = Set.new
89
- opts['rows'].each {|row| headers.merge(row.keys)}
90
- headers = headers.to_a.sort
91
- end
92
- schema = {}
93
- headers.each do |c|
94
- schema_rule.each do |r, t|
95
- if r === c
96
- schema[c] = t
97
- break
98
- end
99
- end
100
- end
101
- return Veritable::Schema.new(schema)
147
+ if ((not opts.has_key?('headers')) and (not opts.has_key?('rows')))
148
+ raise VeritableError.new("Either 'headers' or 'rows' must be provided!")
149
+ end
150
+ headers = opts.has_key?('headers') ? opts['headers'] : nil
151
+ if headers.nil?
152
+ headers = Set.new
153
+ opts['rows'].each {|row| headers.merge(row.keys)}
154
+ headers = headers.to_a.sort
155
+ end
156
+ schema = {}
157
+ headers.each do |c|
158
+ schema_rule.each do |r, t|
159
+ if r === c
160
+ schema[c] = t
161
+ break
162
+ end
163
+ end
164
+ end
165
+ return Veritable::Schema.new(schema)
102
166
  end
103
167
 
168
+ # Writes an Array of row Hashes out to .csv
169
+ #
170
+ # ==== Arguments
171
+ # * +rows+ -- an Array of valid row Hashes
172
+ # * +filename+ -- a path to the .csv file to write out
173
+ #
174
+ # ==== Returns
175
+ # +nil+ on success.
176
+ #
177
+ # See also: https://dev.priorknowledge.com/docs/client/ruby
104
178
  def write_csv(rows, filename)
105
179
  headers = Set.new
106
180
  rows.each {|row| headers.merge(row.keys)}
@@ -112,8 +186,22 @@ module Veritable
112
186
  csv << out_row
113
187
  end
114
188
  end
189
+ nil
115
190
  end
116
191
 
192
+ # Reads a .csv with headers in as an Array of row Hashes
193
+ #
194
+ # All values are kept as strings, except empty strings, which are omitted. To clean data and convert types in accordance with a given schema, use the clean_data and validate_data functions.
195
+ #
196
+ # ==== Arguments
197
+ # * +filename+ -- a path to the .csv file to read in from
198
+ # * +id_col+ -- optionally specify the column to rename to +'_id'+. If +nil+ (default) and a column named +'_id'+ is present, that column is used. If +nil+ and no +'_id'+ column is present, then +'_id'+ will be automatically generated.
199
+ # * +na_cols+ -- a list of string values to omit; defaults to +['']+.
200
+ #
201
+ # ==== Returns
202
+ # An Array of row Hashes
203
+ #
204
+ # See also: https://dev.priorknowledge.com/docs/client/ruby
117
205
  def read_csv(filename, id_col=nil, na_vals=[''])
118
206
  rows = CSV.read(filename)
119
207
  header = rows.shift
@@ -135,7 +223,29 @@ module Veritable
135
223
  end
136
224
  return rows
137
225
  end
138
-
226
+
227
+ # Cleans up an Array of row Hashes in accordance with an analysis schema
228
+ #
229
+ # This method mutates its +rows+ argument. If clean_data raises an exception, values in some rows may be converted while others are left in their original state.
230
+ #
231
+ # ==== Arguments
232
+ # * +rows+ -- the Array of Hashes to clean up
233
+ # * +schema+ -- a Schema specifying the types of the columns appearing in the rows being cleaned
234
+ # * +opts+ -- a Hash optionally containing the keys:
235
+ # - +convert_types+ -- controls whether clean_data will attempt to convert cells in a column to be of the correct type (default: +true+)
236
+ # - +remove_nones+ -- controls whether clean_data will automatically remove cells containing the value +nil+ (default: +true+)
237
+ # - +remove_invalids+ -- controls whether clean_data will automatically remove cells that are invalid for a given column (default: +true+)
238
+ # - +reduce_categories+ -- controls whether clean_data will automatically reduce the number of categories in categorical columns with too many categories (default: +true+) If +true+, the largest categories in a column will be preserved, up to the allowable limit, and the other categories will be binned as <tt>"Other"</tt>.
239
+ # - +assign_ids+ -- controls whether clean_data will automatically assign new ids to the rows (default: +false=) If +true+, rows will be numbered sequentially. If the rows have an existing <tt>'_id'</tt> column, +remove_extra_fields+ must also be set to +true+ to avoid raising a Veritable::VeritableError.
240
+ # - +remove_extra_fields+ -- controls whether clean_data will automatically remove columns that are not contained in the schema (default: +false+) If +assign_ids+ is +true+ (default), will also remove the <tt>'_id'</tt> column.
241
+ #
242
+ # ==== Raises
243
+ # A Veritable::VeritableError containing further details if the data does not validate against the schema.
244
+ #
245
+ # ==== Returns
246
+ # +nil+ on success (mutates +rows+ argument)
247
+ #
248
+ # See also: https://dev.priorknowledge.com/docs/client/ruby
139
249
  def clean_data(rows, schema, opts={})
140
250
  validate(rows, schema, {
141
251
  'convert_types' => opts.has_key?('convert_types') ? opts['convert_types'] : true,
@@ -150,6 +260,19 @@ module Veritable
150
260
  'allow_empty_columns' => false})
151
261
  end
152
262
 
263
+ # Validates an Array of row Hashes against an analysis schema
264
+ #
265
+ # ==== Arguments
266
+ # * +rows+ -- the Array of Hashes to clean up
267
+ # * +schema+ -- a Schema specifying the types of the columns appearing in the rows being cleaned
268
+ #
269
+ # ==== Raises
270
+ # A Veritable::VeritableError containing further details if the data does not validate against the schema.
271
+ #
272
+ # ==== Returns
273
+ # +nil+ on success
274
+ #
275
+ # See also: https://dev.priorknowledge.com/docs/client/ruby
153
276
  def validate_data(rows, schema)
154
277
  validate(rows, schema, {
155
278
  'convert_types' => false,
@@ -164,6 +287,25 @@ module Veritable
164
287
  'allow_empty_columns' => false})
165
288
  end
166
289
 
290
+ # Cleans up a predictions request in accordance with an analysis schema
291
+ #
292
+ # This method mutates its +predictions+ argument. If clean_predictions raises an exception, values in some columns may be converted while others are left in their original state.
293
+ #
294
+ # ==== Arguments
295
+ # * +predictions+ -- the predictions request to clean up
296
+ # * +schema+ -- a Schema specifying the types of the columns appearing in the predictions request
297
+ # * +opts+ -- a Hash optionally containing the keys:
298
+ # - +convert_types+ -- controls whether clean_data will attempt to convert cells in a column to be of the correct type (default: +true+)
299
+ # - +remove_invalids+ -- controls whether clean_data will automatically remove cells that are invalid for a given column (default: +true+)
300
+ # - +remove_extra_fields+ -- controls whether clean_data will automatically remove columns that are not contained in the schema (default: +true+)
301
+ #
302
+ # ==== Raises
303
+ # A Veritable::VeritableError containing further details if the predictions request does not validate against the schema
304
+ #
305
+ # ==== Returns
306
+ # +nil+ on success (mutates +predictions+ argument)
307
+ #
308
+ # See also: https://dev.priorknowledge.com/docs/client/ruby
167
309
  def clean_predictions(predictions, schema, opts={})
168
310
  validate(predictions, schema, {
169
311
  'convert_types' => opts.has_key?('convert_types') ? opts['convert_types'] : true,
@@ -178,6 +320,19 @@ module Veritable
178
320
  'allow_empty_columns' => true})
179
321
  end
180
322
 
323
+ # Validates a predictions request against an analysis schema
324
+ #
325
+ # ==== Arguments
326
+ # * +predictions+ -- the predictions request to clean up
327
+ # * +schema+ -- a Schema specifying the types of the columns appearing in the predictions request
328
+ #
329
+ # ==== Raises
330
+ # A Veritable::VeritableError containing further details if the predictions request does not validate against the schema.
331
+ #
332
+ # ==== Returns
333
+ # +nil+ on success
334
+ #
335
+ # See also: https://dev.priorknowledge.com/docs/client/ruby
181
336
  def validate_predictions(predictions, schema)
182
337
  validate(predictions, schema, {
183
338
  'convert_types' => false,
@@ -194,6 +349,7 @@ module Veritable
194
349
 
195
350
  private
196
351
 
352
+ # Private helper function for form encoding
197
353
  def flatten_params(params, parent=nil)
198
354
  result = []
199
355
  if params.is_a? Hash
@@ -217,16 +373,19 @@ module Veritable
217
373
  result
218
374
  end
219
375
 
220
- def urlencode(k)
221
- URI.escape(k.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
222
- end
376
+ # Wraps URL encoding
377
+ def urlencode(k); URI.escape(k.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]")); end
223
378
 
379
+ # Private helper function to convert to Integer
224
380
  def to_integer(v)
225
381
  return v if v.is_a? Fixnum
226
382
  v.gsub!(/\A([+-]?\d+?)\.0*?\Z/, '\1')
227
383
  Integer(v)
228
384
  end
229
-
385
+
386
+ # Row validation logic
387
+ #
388
+ # Users should call clean_data, validate_data, clean_predictions, or validate_predictions
230
389
  def validate(rows, schema, opts)
231
390
  schema = Veritable::Schema.new(schema) unless schema.is_a? Veritable::Schema
232
391
 
@@ -1,3 +1,5 @@
1
1
  module Veritable
2
- VERSION = "0.1.0.79"
2
+
3
+ # The current version of veritable-ruby
4
+ VERSION = "0.1.0.80"
3
5
  end
data/lib/veritable.rb CHANGED
@@ -10,10 +10,54 @@ require 'rest_client'
10
10
  require 'uuid'
11
11
  require 'multi_json'
12
12
 
13
+ # The main module for the Veritable client
14
+ #
15
+ # ==== Module methods
16
+ # Veritable.connect is the main entry point.
17
+ #
18
+ # ==== Classes
19
+ # Veritable::API represents a single user's tables and settings.
20
+ #
21
+ # Veritable::Table, Veritable::Analysis, and Veritable::Prediction represent API resources.
22
+ #
23
+ # Veritable::Schema represents schemas for Veritable analyses.
24
+ #
25
+ # Collections of API resources are returned as instances of Veritable::Cursor, an Enumerable.
26
+ #
27
+ # All errors are instances of Veritable::VeritableError.
28
+ #
29
+ # ==== Modules
30
+ # The Veritable::Connection module encapsulates the HTTP logic.
31
+ #
32
+ # The Veritable::Util module includes some helper methods for working with datasets.
33
+ #
34
+ # The Veritable::VeritableResource and Veritable::VeritableObject modules are internal abstractions.
35
+ #
36
+ # See also: https://dev.priorknowledge.com/docs/client/ruby
13
37
  module Veritable
38
+
39
+ # The HTTP User-Agent header used by the client library.
14
40
  USER_AGENT = 'veritable-ruby ' + VERSION
41
+
42
+ # The default base URL for the Veritable API server.
15
43
  BASE_URL = "https://api.priorknowledge.com"
16
44
 
45
+ # The main entry point to the Veritable API
46
+ #
47
+ # ==== Arguments
48
+ # * +opts+ -- a Hash containing options for the connection. Possible keys include:
49
+ # - +:api_key+ -- the Veritable API key to use. If not set, defaults to <tt>ENV['VERITABLE_KEY']</tt>
50
+ # - +:api_base_url+ -- the base URL of the Veritable API. If not set, defaults to <tt>ENV['VERITABLE_URL']</tt> or BASE_URL
51
+ # - +:ssl_verify+ -- if +true+, the SSL certificate of the API server will be verified.
52
+ # - +:enable_gzip+ -- if +true+, requests to the API server will be gzipped.
53
+ #
54
+ # ==== Raises
55
+ # A Veritable::VeritableError if no Veritable API server is found at the indicated URL.
56
+ #
57
+ # ==== Returns
58
+ # An instance of Veritable::API.
59
+ #
60
+ # See also: https://dev.priorknowledge.com/docs/client/ruby
17
61
  def self.connect(opts={})
18
62
  opts[:api_key] = opts[:api_key] || ENV['VERITABLE_KEY']
19
63
  opts[:api_base_url] = opts[:api_base_url] || ENV['VERITABLE_URL'] || BASE_URL