nbio-cloudquery 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +1 -1
- data/lib/cloudquery.rb +57 -43
- metadata +2 -2
data/VERSION.yml
CHANGED
data/lib/cloudquery.rb
CHANGED
@@ -127,17 +127,21 @@ module Cloudquery
|
|
127
127
|
attr_writer :secret
|
128
128
|
|
129
129
|
# Create a new instance of the client
|
130
|
-
# +options = {}+ Acceptable options:
|
131
|
-
# +:account+ => <account name> (default => nil)
|
132
|
-
# +:secret+ => <API secret> (default => nil)
|
133
130
|
#
|
134
|
-
#
|
135
|
-
#
|
136
|
-
# and
|
137
|
-
# key-value pair as a simple way to tie app PKs to doc ids.
|
131
|
+
# It's highly recommended to set options <tt>:account</tt>
|
132
|
+
# and <tt>:secret</tt>. Creating a client without an account
|
133
|
+
# and secret isn't very useful.
|
138
134
|
#
|
139
|
-
#
|
140
|
-
#
|
135
|
+
# ==== Acceptable options:
|
136
|
+
# :account => <account name> (default => nil)
|
137
|
+
# :secret => <API secret> (default => nil)
|
138
|
+
# :document_id_method => <method name> (default => nil)
|
139
|
+
# :secure => Boolean (use HTTPS, default => true)
|
140
|
+
#
|
141
|
+
# If +document_id_method+ is set, it will be called on each
|
142
|
+
# document as a part of +add_documents+ and +update_documents+
|
143
|
+
# which should inject an <tt>'#.id'</tt> key-value pair as a
|
144
|
+
# simple way to tie app PKs to doc ids.
|
141
145
|
def initialize(options={})
|
142
146
|
# unless options[:account] && options[:secret]
|
143
147
|
# raise "Client requires :account => <account name> and :secret => <secret>"
|
@@ -154,7 +158,7 @@ module Cloudquery
|
|
154
158
|
|
155
159
|
## Account management
|
156
160
|
|
157
|
-
# Retrieve the API secret for an account
|
161
|
+
# Retrieve the API secret for an +account+, using the +password+ (uses HTTPS)
|
158
162
|
def self.get_secret(account, password)
|
159
163
|
auth = Request.new(:path => "#{PATH}/auth")
|
160
164
|
curl = Curl::Easy.new(auth.url) do |c|
|
@@ -180,23 +184,26 @@ module Cloudquery
|
|
180
184
|
end
|
181
185
|
|
182
186
|
# Update the account document.
|
183
|
-
#
|
184
|
-
#
|
187
|
+
#
|
188
|
+
# Use this method to change the API secret:
|
189
|
+
# update_account({'secret' => 'your-new-secret'})
|
185
190
|
def update_account(account_doc={})
|
186
191
|
body = JSON.generate(account_doc)
|
187
192
|
send_request put(account_path, body)
|
188
193
|
end
|
189
194
|
|
190
|
-
# Delete the account.
|
191
|
-
|
195
|
+
# Delete the account.
|
196
|
+
#
|
197
|
+
# ==== BEWARE: THIS WILL ACTUALLY DELETE YOUR ACCOUNT.
|
198
|
+
def delete_account!
|
192
199
|
send_request delete(account_path)
|
193
200
|
end
|
194
201
|
|
195
202
|
|
196
203
|
## Schema management
|
197
204
|
|
198
|
-
# Add a schema to the account. xml can be a String
|
199
|
-
# or File
|
205
|
+
# Add a schema to the account. +xml+ can be a +String+
|
206
|
+
# or +File+-like (responds to <tt>:read</tt>)
|
200
207
|
def add_schema(xml)
|
201
208
|
body = xml.respond_to?(:read) ? xml.read : xml
|
202
209
|
request = post(build_path(API_PATHS[:schema]), body)
|
@@ -212,6 +219,7 @@ module Cloudquery
|
|
212
219
|
end
|
213
220
|
|
214
221
|
# Get the schemas for the account.
|
222
|
+
#
|
215
223
|
# NOTE: returned format is not the same as accepted for input
|
216
224
|
def get_schemas
|
217
225
|
send_request get(build_path(API_PATHS[:schema]))
|
@@ -227,7 +235,7 @@ module Cloudquery
|
|
227
235
|
end
|
228
236
|
|
229
237
|
# Delete one or more indexes from the account, by name or id
|
230
|
-
#
|
238
|
+
# <tt>indexes = '*'</tt> will delete all indexes
|
231
239
|
def delete_indexes(*indexes)
|
232
240
|
indexes = url_pipe_join(indexes)
|
233
241
|
send_request delete(build_path(API_PATHS[:indexes], indexes))
|
@@ -242,11 +250,12 @@ module Cloudquery
|
|
242
250
|
## Document management
|
243
251
|
|
244
252
|
# Add documents to the specified +index+
|
245
|
-
# +index = name or id+, +docs = {}+ or Array of {}.
|
246
253
|
#
|
247
|
-
#
|
254
|
+
# <tt>index = name</tt> or +id+, <tt>docs = {}</tt> or +Array+ of <tt>{}</tt>.
|
255
|
+
#
|
256
|
+
# Documents with key <tt>'#.id'</tt> and an existing value will be updated.
|
248
257
|
#
|
249
|
-
# If +schemas+ is not nil
|
258
|
+
# If +schemas+ is not +nil+, ensures existence of the
|
250
259
|
# specified schemas on each document.
|
251
260
|
def add_documents(index, docs, *schemas)
|
252
261
|
request = post(
|
@@ -257,11 +266,12 @@ module Cloudquery
|
|
257
266
|
end
|
258
267
|
|
259
268
|
# Update documents in the specified +index+
|
260
|
-
|
269
|
+
|
270
|
+
# <tt>index = name</tt> or +id+, <tt>docs = {}</tt> or +Array+ of <tt>{}</tt>.
|
261
271
|
#
|
262
|
-
# Documents lacking the key
|
272
|
+
# Documents lacking the key <tt>'#.id'</tt> will be created.
|
263
273
|
#
|
264
|
-
# If +schemas+ is not nil
|
274
|
+
# If +schemas+ is not +nil+, ensures existence of the
|
265
275
|
# specified schemas on each document.
|
266
276
|
def update_documents(index, docs, *schemas)
|
267
277
|
request = put(
|
@@ -272,10 +282,11 @@ module Cloudquery
|
|
272
282
|
end
|
273
283
|
|
274
284
|
# Modify documents in the +index+ matching +query+
|
275
|
-
#
|
285
|
+
#
|
286
|
+
# <tt>modifications = {...data...}</tt> to update all matching
|
276
287
|
# documents.
|
277
288
|
#
|
278
|
-
# If +schemas+ is not nil
|
289
|
+
# If +schemas+ is not +nil+, ensures existence of the
|
279
290
|
# specified schemas on each document.
|
280
291
|
def modify_documents(index, query, modifications, *schemas)
|
281
292
|
request = put(
|
@@ -287,13 +298,14 @@ module Cloudquery
|
|
287
298
|
|
288
299
|
# Delete documents in the +index+ matching +query+
|
289
300
|
#
|
290
|
-
#
|
291
|
-
#
|
301
|
+
# query => defaults to '*'
|
302
|
+
# index => may be an id, index name, or Array of ids or names.
|
303
|
+
#
|
304
|
+
# Operates on all indexes if +index+ = +nil+ or <tt>'*'</tt>
|
292
305
|
#
|
293
|
-
#
|
294
|
-
# Operates on all indexes if +index = nil+ or +'*'+
|
306
|
+
# ==== BEWARE: If +query+ = +nil+ this will delete ALL documents in +index+.
|
295
307
|
#
|
296
|
-
# If +schemas+ is not nil
|
308
|
+
# If +schemas+ is not +nil+, ensures existence of the
|
297
309
|
# specified schemas on each document.
|
298
310
|
def delete_documents(index, query, *schemas)
|
299
311
|
request = delete(
|
@@ -308,17 +320,18 @@ module Cloudquery
|
|
308
320
|
|
309
321
|
# Get documents matching +query+
|
310
322
|
#
|
311
|
-
#
|
312
|
-
#
|
313
|
-
# Operates on all indexes if +index = nil+ or +'*'+
|
323
|
+
# query => defaults to '*'
|
324
|
+
# index => may be an id, index name, or Array of ids or names.
|
314
325
|
#
|
315
|
-
# +
|
316
|
-
# +:fields+ => a field name, a prefix match (e.g. +'trans*'+), or a list thereof (default => +'*'+)
|
317
|
-
# +:sort+ => a string ("[+|-]schema.field"), or a list thereof (default => +'+#.number'+)
|
318
|
-
# +:offset+ => integer offset into the result set (default => +0+)
|
319
|
-
# +:limit+ => integer limit on number of documents returned per index (default => <no limit>)
|
326
|
+
# Operates on all indexes if +index+ = +nil+ or <tt>'*'</tt>
|
320
327
|
#
|
321
|
-
#
|
328
|
+
# ==== Acceptable options:
|
329
|
+
# :fields => a field name, a prefix match (e.g. 'trans*'), or Array of fields (default => '*')
|
330
|
+
# :sort => a string ("[+|-]schema.field"), or a list thereof (default => '+#.number')
|
331
|
+
# :offset => integer offset into the result set (default => 0)
|
332
|
+
# :limit => integer limit on number of documents returned per index (default => <no limit>)
|
333
|
+
#
|
334
|
+
# If +schemas+ is not +nil+, ensures existence of the
|
322
335
|
# specified schemas on each document.
|
323
336
|
def get_documents(index, query, options={}, *schemas)
|
324
337
|
if fields = options.delete(:fields)
|
@@ -343,11 +356,12 @@ module Cloudquery
|
|
343
356
|
|
344
357
|
# Count documents matching +query+
|
345
358
|
#
|
346
|
-
#
|
347
|
-
#
|
348
|
-
#
|
359
|
+
# query => defaults to '*'
|
360
|
+
# index => may be an id, index name, or Array of ids or names.
|
361
|
+
#
|
362
|
+
# Operates on all indexes if +index+ = +nil+ or <tt>'*'</tt>
|
349
363
|
#
|
350
|
-
# If +schemas+ is not nil
|
364
|
+
# If +schemas+ is not +nil+, ensures existence of the
|
351
365
|
# specified schemas on each document.
|
352
366
|
def count_documents(index, query, *schemas)
|
353
367
|
get_documents(index, query, {:fields => '@count'}, *schemas)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nbio-cloudquery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cameron Walters
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-05-
|
13
|
+
date: 2009-05-04 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|