Class: Veritable::API
- Inherits:
-
Object
- Object
- Veritable::API
- Includes:
- VeritableResource
- Defined in:
- lib/veritable/api.rb
Overview
Represents the resources available to a user of the Veritable API.
Users should not initialize directly; use Veritable.connect as the entry point.
Methods
root-- gets the root of the APIlimits-- gets the user-specific API limitstables-- gets a Veritable::Cursor over the collection of available tablestable-- gets an individual data table by its unique idcreate_table-- creates a new data tabledelete_table-- deletes a new data table by its unique idhas_table?-- checks whether a table with the given id is available
Instance Method Summary collapse
-
#create_table(table_id = nil, description = '', force = false) ⇒ Object
Creates a new table.
-
#delete_table(table_id) ⇒ Object
Deletes an existing table.
-
#has_table?(table_id) ⇒ Boolean
Checks if a table with the given unique id exists.
-
#initialize(opts = nil, doc = nil) ⇒ API
constructor
A new instance of API.
-
#inspect ⇒ Object
Returns a string representation of the API resource.
-
#limits ⇒ Object
Gets the user-specific API limits.
-
#root ⇒ Object
Gets the root of the api.
-
#table(table_id) ⇒ Object
Gets an individual table by its unique id.
-
#tables(opts = {'start' => nil, 'limit' => nil}) ⇒ Object
Gets a cursor for the table collection.
-
#to_s ⇒ Object
Returns a string representation of the API resource.
Methods included from Connection
#delete, #get, #post, #put, #request
Constructor Details
#initialize(opts = nil, doc = nil) ⇒ API
Returns a new instance of API.
27 28 29 30 |
# File 'lib/veritable/api.rb', line 27 def initialize(opts=nil, doc=nil) super @opts['api_limits'] = get("user/limits") end |
Instance Method Details
#create_table(table_id = nil, description = '', force = false) ⇒ Object
Creates a new table
Arguments
table_id-- the unique String id of the new table. Must contain only alphanumeric characters, underscores, and dashes. Note that underscores and dashes are not permitted as the first character of atable_id. Default isnil, in which case a new id will be automatically generated.description-- a String describing the table. Default is ''.force-- if true, will overwrite any existing table with the same id. Default isfalse.
Raises
A Veritable::VeritableError if force is not true and there is an existing table with the same id.
Returns
A Veritable::Table
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/veritable/api.rb', line 92 def create_table(table_id=nil, description='', force=false) if table_id.nil? autogen = true table_id = Util.make_table_id else autogen = false Util.check_id table_id end if has_table? table_id if autogen return create_table(nil, description, false) end if ! force raise VeritableError.new("Couldn't create table -- table with id #{table_id} already exists.") else delete_table table_id end end doc = post("tables", {:_id => table_id, :description => description}) Table.new(@opts, doc) end |
#delete_table(table_id) ⇒ Object
Deletes an existing table
Arguments
table_id --- the unique id of the table to delete
Returns
nil on success. Succeeds silently if no table with the specified id is found.
124 |
# File 'lib/veritable/api.rb', line 124 def delete_table(table_id); delete("tables/#{table_id}"); nil; end |
#has_table?(table_id) ⇒ Boolean
Checks if a table with the given unique id exists
Arguments
table_id --- the unique id of the table to check
Returns
true or false, as appropriate.
135 136 137 138 139 140 141 142 143 |
# File 'lib/veritable/api.rb', line 135 def has_table?(table_id) begin table table_id rescue false else true end end |
#inspect ⇒ Object
Returns a string representation of the API resource
146 |
# File 'lib/veritable/api.rb', line 146 def inspect; to_s; end |
#limits ⇒ Object
Gets the user-specific API limits
Returns
A Hash representing the user's current API limits.
46 47 48 |
# File 'lib/veritable/api.rb', line 46 def limits return @opts['api_limits'] end |
#root ⇒ Object
Gets the root of the api
Returns
A Hash with the keys "status" (should be equal to "SUCCESS") and "entropy" (a random Float).
38 |
# File 'lib/veritable/api.rb', line 38 def root; get(""); end |
#table(table_id) ⇒ Object
Gets an individual table by its unique id
Arguments
table_id-- the unique id of the table
Returns
A Veritable::Table
76 |
# File 'lib/veritable/api.rb', line 76 def table(table_id); Table.new(@opts, get("tables/#{table_id}")); end |
#tables(opts = {'start' => nil, 'limit' => nil}) ⇒ Object
Gets a cursor for the table collection
Arguments
-
optsA Hash optionally containing the keys- "start" -- the table id from which the cursor should begin returning results. Defaults to
nil, in which case the cursor will return result starting with the lexicographically first table id. - "limit" -- the total number of results to return (must be a Fixnum). Defaults to
nil, in which case the number of results returned will not be limited.
- "start" -- the table id from which the cursor should begin returning results. Defaults to
Returns
A Veritable::Cursor. The cursor will return Veritable::Table objects representing the available data tables, in lexicographic order of their unique ids.
61 62 63 64 65 |
# File 'lib/veritable/api.rb', line 61 def tables(opts={'start' => nil, 'limit' => nil}) Cursor.new({'collection' => "tables", 'start' => opts['start'], 'limit' => opts['limit']}.update(@opts)) {|x| Table.new(@opts, x)} end |
#to_s ⇒ Object
Returns a string representation of the API resource
149 |
# File 'lib/veritable/api.rb', line 149 def to_s; "#<Veritable::API url='#{api_base_url}'>"; end |