precog 1.0.0.pre2 → 1.0.0.pre3
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 +5 -5
- data/lib/precog.rb +28 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 0f07093cd36069946ad7110456b91cc58ba009a8
|
4
|
-
data.tar.gz: e756fc697131e4a30341836595b3bb1a5a2c21fa
|
5
2
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db0c18eabde299256e7b91e025d4c3f2610b363252811faa036093b4bfd22dc8daff31c2c564d39f61001a94a06ebfd8af2f25c320f73e6dff3c9cd480443a88
|
4
|
+
data.tar.gz: f6e0ea056eef9891ca98a0dee71fc0459b4cfda5a1c4b03afd41b5f23a5f8d7c1bac3acb8a4256d784cfa2ab0654caf2ad1c17565e20020d08e31301d83e0d75
|
5
|
+
SHA1:
|
6
|
+
metadata.gz: 5cdd69c13a65be70bd4a2e702063490eba0e72da
|
7
|
+
data.tar.gz: 2642a661bc90722028ae2d94816e886c2da80dce
|
data/lib/precog.rb
CHANGED
@@ -25,6 +25,14 @@ module Precog
|
|
25
25
|
# Struct used to return account information from the Client class.
|
26
26
|
AccountInfo = Struct.new :api_key, :account_id, :email
|
27
27
|
|
28
|
+
# Represents an error or warning returned from the Precog API. The position
|
29
|
+
# information is optional, and is reprensented by an instance of +Position+
|
30
|
+
# when present.
|
31
|
+
Info = Struct.new :message, :position
|
32
|
+
|
33
|
+
# Represents a location within a Quirrel source fragment.
|
34
|
+
Position = Struct.new :line_num, :column_num, :line_text
|
35
|
+
|
28
36
|
# A simple REST client for storing data in Precog and querying it with Quirrel.
|
29
37
|
#
|
30
38
|
# This provides methods to upload files to
|
@@ -253,13 +261,19 @@ module Precog
|
|
253
261
|
# interrupted, there will be no way to retrieve the results of the query.
|
254
262
|
#
|
255
263
|
# Returns a triple of errors, warnings and an +Array+ of data representing
|
256
|
-
# the query results.
|
264
|
+
# the query results. The errors and warnings are represented as +Array+(s)
|
265
|
+
# of +Info+ objects.
|
257
266
|
def query(path, query)
|
258
267
|
path = relativize_path path
|
259
268
|
params = { :apiKey => api_key, :q => query, :format => 'detailed' }
|
260
269
|
resp = Precog.get(self, "/analytics/v#{VERSION}/fs/#{path}", { 'Content-Type' => 'application/json' }, params)
|
261
270
|
output = JSON.parse resp.body
|
262
|
-
|
271
|
+
|
272
|
+
[
|
273
|
+
output["errors"].select { |i| !i.nil? }.map { |i| Precog.parse_info i },
|
274
|
+
output["warnings"].select { |i| !i.nil? }.map { |i| Precog.parse_info i },
|
275
|
+
output["data"]
|
276
|
+
]
|
263
277
|
end
|
264
278
|
|
265
279
|
# Runs an asynchronous query against Precog. An async query is a query
|
@@ -331,12 +345,23 @@ module Precog
|
|
331
345
|
|
332
346
|
if data
|
333
347
|
output = JSON.parse data
|
334
|
-
|
348
|
+
|
349
|
+
[
|
350
|
+
output["errors"].select { |i| !i.nil? }.map { |i| Precog.parse_info i },
|
351
|
+
output["warnings"].select { |i| !i.nil? }.map { |i| Precog.parse_info i },
|
352
|
+
output["data"]
|
353
|
+
]
|
335
354
|
end
|
336
355
|
end
|
337
356
|
end
|
338
357
|
|
339
358
|
class << self
|
359
|
+
def parse_info(info) # :nodoc:
|
360
|
+
pos_hash = info['position']
|
361
|
+
pos = Position.new pos_hash['line'].to_i, pos_hash['column'].to_i, pos_hash['text'] unless pos_hash.nil?
|
362
|
+
Info.new info['message'], pos
|
363
|
+
end
|
364
|
+
|
340
365
|
def post(client, path, body, header, params = {}) # :nodoc:
|
341
366
|
connect client do |http|
|
342
367
|
uri = Addressable::URI.new
|