orchestrate 0.11.1 → 0.11.2
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 +4 -4
- data/README.md +23 -3
- data/lib/orchestrate/event.rb +2 -2
- data/lib/orchestrate/search/query_builder.rb +28 -5
- data/lib/orchestrate/search/results.rb +9 -1
- data/lib/orchestrate/version.rb +1 -1
- data/orchestrate.gemspec +3 -3
- data/test/orchestrate/collection_aggregates_test.rb +2 -2
- data/test/orchestrate/collection_geo_queries_test.rb +7 -7
- data/test/orchestrate/collection_searching_test.rb +55 -3
- data/test/orchestrate/collection_sorting_test.rb +4 -3
- data/test/orchestrate/event_test.rb +4 -4
- data/test/orchestrate/search/query_builder_test.rb +23 -0
- metadata +24 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce3fe8f2f327ee80634c2a1cf9ee17a468db30eb
|
4
|
+
data.tar.gz: 671ec20412081c443941b6f4ab07e26ba2086d12
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f1b8460ad20f8b779e738374b5276c4ee0af7e415826d8a57a37769313430f565c436c2f48a0a00ead3794a20aa5a1b8307dd566de772efd0d48afa62e0ebc7
|
7
|
+
data.tar.gz: 39d65b0dba9b87decc41f1e9107b6bc352935ce81fb38873c8ed8aced33aa8170754fca34a2421eb3be7caabca0cb4d87c72eb3a96e7363bf4875b076ce6bf43
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@ Orchestrate API for Ruby
|
|
4
4
|
|
5
5
|
Ruby client interface for the [Orchestrate.io](http://orchestrate.io) REST API.
|
6
6
|
|
7
|
-
[rDoc Documentation](http://rdoc.info/gems/orchestrate
|
7
|
+
[rDoc Documentation](http://rdoc.info/gems/orchestrate)
|
8
8
|
|
9
9
|
## Getting Started
|
10
10
|
|
@@ -140,6 +140,21 @@ products.search("*").aggregate # Start the search query and aggregate param bui
|
|
140
140
|
.each_aggregate # return enumerator for iterating over each aggregate result
|
141
141
|
```
|
142
142
|
|
143
|
+
### Events
|
144
|
+
```ruby
|
145
|
+
steve = users['Steve']
|
146
|
+
|
147
|
+
# create new events
|
148
|
+
steve.events['wall_post'] << { text: "Hello!" }
|
149
|
+
steve.events['activities'] << { text: "first post" }
|
150
|
+
|
151
|
+
# search for events
|
152
|
+
users.search('first post').kinds('event').find
|
153
|
+
|
154
|
+
# search for 'wall_post' events
|
155
|
+
users.search('Hello').kinds('event').types('wall_post').find
|
156
|
+
```
|
157
|
+
|
143
158
|
### Method Client use
|
144
159
|
|
145
160
|
#### Create a Client
|
@@ -310,9 +325,10 @@ response.aggregates # return aggregate results
|
|
310
325
|
|
311
326
|
### Examples and Documentation
|
312
327
|
|
313
|
-
There are more examples
|
328
|
+
There are more examples and documentation in [Orchestrate's API Documentation][apidoc] and the [rdoc][rdoc].
|
314
329
|
|
315
330
|
[apidoc]: http://orchestrate.io/api/version
|
331
|
+
[rdoc]: http://rdoc.info/gems/orchestrate
|
316
332
|
|
317
333
|
## Swapping out the HTTP back end
|
318
334
|
|
@@ -412,6 +428,10 @@ end
|
|
412
428
|
|
413
429
|
## Release Notes
|
414
430
|
|
431
|
+
### March 27, 2015: release 0.11.2
|
432
|
+
- Implement `Orchestrate::Search::QueryBuilder#kinds` to search events as well as KV items.
|
433
|
+
- Implement `Orchestrate::Search::QueryBuilder#types` to search specific types of events.
|
434
|
+
|
415
435
|
### February 17, 2015: release 0.11.1
|
416
436
|
- Implement `Search::TimeSeriesBuilder#time_zone` to designate time zone when calculating time series bucket boundaries.
|
417
437
|
|
@@ -419,7 +439,7 @@ end
|
|
419
439
|
- **BACKWARDS-INCOMPATIBLE** `Orchestrate::Collection` searches require `#find` method at the end of the method call/chain. Example: `users.search('foo').find`.
|
420
440
|
- Implement `Orchestrate::Search` module, refactor functionality of prior `Orchestrate::Collection::SearchResults`.
|
421
441
|
- Implement results enumeration & request firing functionality in prior `Orchestrate::Collection::SearchResults` to `Orchestrate::Search::Results`
|
422
|
-
- Implement `Search::QueryBuilder` to construct `Collection` search queries.
|
442
|
+
- Implement `Search::QueryBuilder` to construct `Collection` search queries.
|
423
443
|
- Implement `Search::AggregateBuilder` to construct aggregate params on `Collection` search queries.
|
424
444
|
- Implement `Search::StatsBuilder`, `Search::RangeBuilder`, `Search::DistanceBuilder`, & `Search::TimeSeriesBuilder` to construct aggregate function clauses for aggregate params.
|
425
445
|
- Implement `Search::AggregateResult` objects to repesent aggregate results returned from `Collection` search.
|
data/lib/orchestrate/event.rb
CHANGED
@@ -23,8 +23,8 @@ module Orchestrate
|
|
23
23
|
def self.from_listing(stem, listing, response=nil)
|
24
24
|
event = new(stem)
|
25
25
|
event.value = listing['value']
|
26
|
-
event.instance_variable_set(:@timestamp, listing['timestamp'])
|
27
|
-
event.instance_variable_set(:@ordinal, listing['ordinal'])
|
26
|
+
event.instance_variable_set(:@timestamp, listing['path']['timestamp'])
|
27
|
+
event.instance_variable_set(:@ordinal, listing['path']['ordinal'])
|
28
28
|
event.instance_variable_set(:@ref, listing['path']['ref'])
|
29
29
|
event.instance_variable_set(:@last_request_time, response.request_time) if response
|
30
30
|
event
|
@@ -4,15 +4,22 @@ module Orchestrate::Search
|
|
4
4
|
# @return [Collection] The collection this object will search.
|
5
5
|
attr_reader :collection
|
6
6
|
|
7
|
-
# @return [#to_s] The Lucene Query String given as the search query.
|
8
|
-
attr_reader :query
|
9
|
-
|
10
7
|
# Initialize a new SearchBuilder object
|
11
8
|
# @param collection [Orchestrate::Collection] The collection to search.
|
12
9
|
# @param query [#to_s] The Lucene Query to perform.
|
13
10
|
def initialize(collection, query)
|
14
11
|
@collection = collection
|
15
12
|
@query = query
|
13
|
+
@kinds = []
|
14
|
+
@types = []
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return [#to_s] The Lucene Query String.
|
18
|
+
def query
|
19
|
+
query = "(#{@query})"
|
20
|
+
query << " AND @path.kind:(#{@kinds.join(' ')})" if @kinds.any?
|
21
|
+
query << " AND @path.type:(#{@types.join(' ')})" if @types.any?
|
22
|
+
query
|
16
23
|
end
|
17
24
|
|
18
25
|
# @return Pretty-Printed string representation of the Search object
|
@@ -37,7 +44,7 @@ module Orchestrate::Search
|
|
37
44
|
self
|
38
45
|
end
|
39
46
|
|
40
|
-
# Sets the limit for the query to Orchestrate, so we don't ask for more than is needed.
|
47
|
+
# Sets the limit for the query to Orchestrate, so we don't ask for more than is needed.
|
41
48
|
# Does not fire a request.
|
42
49
|
# @overload limit
|
43
50
|
# @return [Integer, nil] The number of items to retrieve. Nil is equivalent to zero.
|
@@ -69,6 +76,22 @@ module Orchestrate::Search
|
|
69
76
|
end
|
70
77
|
end
|
71
78
|
|
79
|
+
# Sets the 'kind' to search.
|
80
|
+
# @param kinds [Array<String>] The orchestrate kinds to be included ('item' or 'event').
|
81
|
+
# @return [QueryBuilder] self.
|
82
|
+
def kinds(*kinds)
|
83
|
+
@kinds = kinds
|
84
|
+
self
|
85
|
+
end
|
86
|
+
|
87
|
+
# Sets the event types to search.
|
88
|
+
# @param types [Array<String>] The orchestrate event types to search (e.g. 'activities', 'wall_posts')
|
89
|
+
# @return [QueryBuilder] self.
|
90
|
+
def types(*types)
|
91
|
+
@types = types
|
92
|
+
self
|
93
|
+
end
|
94
|
+
|
72
95
|
# @return [AggregateBuilder] An AggregateBuilder object to construct aggregate search params
|
73
96
|
def aggregate
|
74
97
|
options[:aggregate] ||= AggregateBuilder.new(self)
|
@@ -80,4 +103,4 @@ module Orchestrate::Search
|
|
80
103
|
Results.new(collection, query, options)
|
81
104
|
end
|
82
105
|
end
|
83
|
-
end
|
106
|
+
end
|
@@ -47,7 +47,15 @@ module Orchestrate::Search
|
|
47
47
|
raise Orchestrate::ResultsNotReady.new if collection.app.inside_parallel?
|
48
48
|
loop do
|
49
49
|
@response.results.each do |listing|
|
50
|
-
|
50
|
+
case listing['path']['kind']
|
51
|
+
when 'event'
|
52
|
+
kv = collection.stub(listing['key'])
|
53
|
+
event_type = Orchestrate::EventType.new(kv, listing['type'])
|
54
|
+
event = Orchestrate::Event.from_listing(event_type, listing, @response)
|
55
|
+
yield [listing['score'], event]
|
56
|
+
else
|
57
|
+
yield [listing['score'], Orchestrate::KeyValue.from_listing(collection, listing, @response)]
|
58
|
+
end
|
51
59
|
end
|
52
60
|
break unless @response.next_link
|
53
61
|
@response = @response.next_results
|
data/lib/orchestrate/version.rb
CHANGED
data/orchestrate.gemspec
CHANGED
@@ -5,8 +5,8 @@ require 'orchestrate/version'
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'orchestrate'
|
7
7
|
s.version = Orchestrate::VERSION
|
8
|
-
s.authors = ['Matthew Lyon', 'Justin Mecham', 'James Carrasquer', 'Eric Johnson']
|
9
|
-
s.email = ['matthew@lyonheart.us', 'justin@mecham.me', 'jimcar@aracnet.com', 'erjohnson.pdx@gmail.com']
|
8
|
+
s.authors = ['Matthew Lyon', 'Justin Mecham', 'James Carrasquer', 'Eric Johnson', 'Daniel Reverri']
|
9
|
+
s.email = ['matthew@lyonheart.us', 'justin@mecham.me', 'jimcar@aracnet.com', 'erjohnson.pdx@gmail.com', 'reverri@gmail.com']
|
10
10
|
s.summary = 'Ruby client for Orchestrate.io'
|
11
11
|
s.description = 'Client for the Orchestrate REST API'
|
12
12
|
s.homepage = 'https://github.com/orchestrate-io/orchestrate-ruby'
|
@@ -24,4 +24,4 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_development_dependency "typhoeus"
|
25
25
|
s.add_development_dependency "em-http-request"
|
26
26
|
s.add_development_dependency "em-synchrony"
|
27
|
-
end
|
27
|
+
end
|
@@ -5,7 +5,7 @@ class CollectionAggregates < MiniTest::Unit::TestCase
|
|
5
5
|
@app, @stubs = make_application({parallel:true})
|
6
6
|
@items = @app[:items]
|
7
7
|
|
8
|
-
@query =
|
8
|
+
@query = '(foo)'
|
9
9
|
@stats = [{
|
10
10
|
"aggregate_kind" => "stats",
|
11
11
|
"field_name" => "value.bar",
|
@@ -109,7 +109,7 @@ class CollectionAggregates < MiniTest::Unit::TestCase
|
|
109
109
|
end
|
110
110
|
|
111
111
|
def test_basic_distance_aggregate
|
112
|
-
@query = "foo:NEAR:{lat:12.3 lon:56.7 dist:100km}"
|
112
|
+
@query = "(foo:NEAR:{lat:12.3 lon:56.7 dist:100km})"
|
113
113
|
results = @items.near("foo", 12.3, 56.7, 100).aggregate.distance("bar").between(0,1).find
|
114
114
|
results.each_aggregate
|
115
115
|
assert_equal @distance, results.aggregates
|
@@ -5,21 +5,21 @@ class CollectionGeoQueriesTest < MiniTest::Unit::TestCase
|
|
5
5
|
@app, @stubs = make_application({parallel:true})
|
6
6
|
@items = @app[:items]
|
7
7
|
|
8
|
-
@near_query = "location:NEAR:{lat:12 lon:56 dist:1km}"
|
9
|
-
@in_query = "location:IN:{north:12 east:57 south:12 west:56}"
|
8
|
+
@near_query = "(location:NEAR:{lat:12 lon:56 dist:1km})"
|
9
|
+
@in_query = "(location:IN:{north:12 east:57 south:12 west:56})"
|
10
10
|
@total = 110
|
11
11
|
|
12
12
|
@make_listing = lambda{|i| make_kv_listing(:items, key: "item-#{i}", reftime: nil, score: @total-i/@total*5.0) }
|
13
13
|
@handle_geo = lambda do |query|
|
14
14
|
case query
|
15
|
-
when "location:NEAR:{lat:12 lon:56 dist:1km}"
|
15
|
+
when "(location:NEAR:{lat:12 lon:56 dist:1km})"
|
16
16
|
{ "results" => 10.times.map{|i| @make_listing.call(i)}, "count" => 10, "total_count" => 10 }
|
17
|
-
when "location:IN:{north:12 east:57 south:12 west:56}"
|
17
|
+
when "(location:IN:{north:12 east:57 south:12 west:56})"
|
18
18
|
{ "results" => 12.times.map{|i| @make_listing.call(i)}, "count" => 12, "total_count" => 12 }
|
19
|
-
when "location:NEAR:{lat:12 lon:56 dist:1km}&sort=location:distance:asc"
|
19
|
+
when "(location:NEAR:{lat:12 lon:56 dist:1km}&sort=location:distance:asc)"
|
20
20
|
{ "results" => 10.times.map{|i| @make_listing.call(i)}, "count" => 10, "total_count" => 10 }
|
21
21
|
else
|
22
|
-
raise ArgumentError.new("unexpected query: #{
|
22
|
+
raise ArgumentError.new("unexpected query: #{query}")
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -86,4 +86,4 @@ class CollectionGeoQueriesTest < MiniTest::Unit::TestCase
|
|
86
86
|
assert_nil item[1].reftime
|
87
87
|
end
|
88
88
|
end
|
89
|
-
end
|
89
|
+
end
|
@@ -1,11 +1,12 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
|
+
require 'cgi'
|
2
3
|
|
3
4
|
class CollectionSearchingTest < MiniTest::Unit::TestCase
|
4
5
|
def setup
|
5
6
|
@app, @stubs = make_application({parallel:true})
|
6
7
|
@items = @app[:items]
|
7
8
|
|
8
|
-
@query =
|
9
|
+
@query = '(foo)'
|
9
10
|
@limit = 100
|
10
11
|
@total = 110
|
11
12
|
|
@@ -14,7 +15,7 @@ class CollectionSearchingTest < MiniTest::Unit::TestCase
|
|
14
15
|
case offset
|
15
16
|
when nil
|
16
17
|
{ "results" => 100.times.map{|i| @make_listing.call(i)}, "count" => 100, "total_count" => @total,
|
17
|
-
"next" => "/v0/items?query
|
18
|
+
"next" => "/v0/items?query=#{CGI.escape(@query)}&offset=100&limit=100"}
|
18
19
|
when "100"
|
19
20
|
{ "results" => 10.times.map{|i| @make_listing.call(i+100)}, "count" => 10, "total_count" => @total }
|
20
21
|
else
|
@@ -97,4 +98,55 @@ class CollectionSearchingTest < MiniTest::Unit::TestCase
|
|
97
98
|
assert_equal @total, items.force.size
|
98
99
|
end
|
99
100
|
|
101
|
+
def test_search_with_events
|
102
|
+
body = '{
|
103
|
+
"count": 2,
|
104
|
+
"total_count": 2,
|
105
|
+
"results": [
|
106
|
+
{
|
107
|
+
"path": {
|
108
|
+
"collection": "users",
|
109
|
+
"kind": "item",
|
110
|
+
"key": "sjkaliski@gmail.com",
|
111
|
+
"ref": "74c22b1736b9d50e",
|
112
|
+
"reftime": 1424473968410
|
113
|
+
},
|
114
|
+
"value": {
|
115
|
+
"name": "Steve Kaliski",
|
116
|
+
"hometown": "New York, NY",
|
117
|
+
"twitter": "@stevekaliski"
|
118
|
+
},
|
119
|
+
"score": 3.7323708534240723,
|
120
|
+
"reftime": 1424473968410
|
121
|
+
},
|
122
|
+
{
|
123
|
+
"path": {
|
124
|
+
"collection": "users",
|
125
|
+
"kind": "event",
|
126
|
+
"key": "byrd@bowery.io",
|
127
|
+
"type": "activities",
|
128
|
+
"timestamp": 1412787145997,
|
129
|
+
"ordinal": 406893558185357300,
|
130
|
+
"ref": "82eafab14dc84ed3",
|
131
|
+
"reftime": 1412787145997,
|
132
|
+
"ordinal_str": "05a593890d087000"
|
133
|
+
},
|
134
|
+
"value": {
|
135
|
+
"activity": "followed",
|
136
|
+
"user": "sjkaliski@gmail.com",
|
137
|
+
"userName": "Steve Kaliski"
|
138
|
+
},
|
139
|
+
"score": 2.331388473510742,
|
140
|
+
"reftime": 1412787145997
|
141
|
+
}
|
142
|
+
]
|
143
|
+
}'
|
144
|
+
@stubs.get('/v0/users') do
|
145
|
+
[200, { 'Content-Type' => 'application/json' }, body]
|
146
|
+
end
|
147
|
+
results = @app[:users].search('*').find.each.map { |d| d[1] }
|
148
|
+
assert_equal 2, results.count
|
149
|
+
assert results[0].is_a? Orchestrate::KeyValue
|
150
|
+
assert results[1].is_a? Orchestrate::Event
|
151
|
+
end
|
100
152
|
end
|
@@ -1,11 +1,12 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
|
+
require 'cgi'
|
2
3
|
|
3
4
|
class CollectionSortingTest < MiniTest::Unit::TestCase
|
4
5
|
def setup
|
5
6
|
@app, @stubs = make_application({parallel:true})
|
6
7
|
@items = @app[:items]
|
7
8
|
|
8
|
-
@query =
|
9
|
+
@query = '(foo)'
|
9
10
|
@limit = 100
|
10
11
|
@total = 110
|
11
12
|
|
@@ -14,7 +15,7 @@ class CollectionSortingTest < MiniTest::Unit::TestCase
|
|
14
15
|
case offset
|
15
16
|
when nil
|
16
17
|
{ "results" => 100.times.map{|i| @make_listing.call(i)}, "count" => 100, "total_count" => @total,
|
17
|
-
"next" => "/v0/items?query
|
18
|
+
"next" => "/v0/items?query=#{CGI.escape(@query)}&offset=100&limit=100"}
|
18
19
|
when "100"
|
19
20
|
{ "results" => 10.times.map{|i| @make_listing.call(i+100)}, "count" => 10, "total_count" => @total }
|
20
21
|
else
|
@@ -240,25 +240,25 @@ class EventTest < MiniTest::Unit::TestCase
|
|
240
240
|
assert_nil tweets <=> bar.events['tweets']
|
241
241
|
|
242
242
|
ts = (Time.now.to_f * 1000).floor
|
243
|
-
make_tweet_1 = lambda { Orchestrate::Event.from_listing(tweets, {"path" => {"ref" => make_ref
|
243
|
+
make_tweet_1 = lambda { Orchestrate::Event.from_listing(tweets, {"path" => {"ref" => make_ref, "timestamp" => ts, "ordinal" => 10}}) }
|
244
244
|
tweet1 = make_tweet_1.call
|
245
245
|
assert_equal tweet1, make_tweet_1.call
|
246
246
|
assert tweet1.eql?(make_tweet_1.call)
|
247
247
|
assert_equal 0, tweet1 <=> make_tweet_1.call
|
248
248
|
|
249
|
-
tweet2 = Orchestrate::Event.from_listing(tweets, {"path" => {"ref" => make_ref
|
249
|
+
tweet2 = Orchestrate::Event.from_listing(tweets, {"path" => {"ref" => make_ref, "timestamp" => ts, "ordinal" => 11}})
|
250
250
|
refute_equal tweet1, tweet2
|
251
251
|
refute tweet1.eql?(tweet2)
|
252
252
|
assert_equal 1, tweet1 <=> tweet2
|
253
253
|
assert_equal(-1, tweet2 <=> tweet1)
|
254
254
|
|
255
|
-
tweet3 = Orchestrate::Event.from_listing(tweets, {"path" => {"ref" => make_ref
|
255
|
+
tweet3 = Orchestrate::Event.from_listing(tweets, {"path" => {"ref" => make_ref, "timestamp" => ts - 1, "ordinal" => 2}})
|
256
256
|
assert_equal(1, tweet1 <=> tweet3)
|
257
257
|
assert_equal(-1, tweet3 <=> tweet1)
|
258
258
|
assert_equal(1, tweet2 <=> tweet3)
|
259
259
|
assert_equal(-1, tweet3 <=> tweet2)
|
260
260
|
|
261
|
-
checkin = Orchestrate::Event.from_listing(foo.events[:checkins], {"path" => {"ref" => make_ref
|
261
|
+
checkin = Orchestrate::Event.from_listing(foo.events[:checkins], {"path" => {"ref" => make_ref, "timestamp" => ts, "ordinal" => 40}})
|
262
262
|
refute_equal tweet1, checkin
|
263
263
|
refute tweet1.eql?(checkin)
|
264
264
|
assert_nil tweet1 <=> checkin
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class QueryBuilderTest < MiniTest::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@builder = Orchestrate::Search::QueryBuilder.new(nil, '*')
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_event_query
|
9
|
+
@builder.kinds('event')
|
10
|
+
assert_equal '(*) AND @path.kind:(event)', @builder.query
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_event_or_item_query
|
14
|
+
@builder.kinds('event', 'item')
|
15
|
+
assert_equal '(*) AND @path.kind:(event item)', @builder.query
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_event_types_query
|
19
|
+
@builder.kinds('event').types('activities')
|
20
|
+
assert_equal '(*) AND @path.kind:(event) AND @path.type:(activities)',
|
21
|
+
@builder.query
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: orchestrate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Lyon
|
8
8
|
- Justin Mecham
|
9
9
|
- James Carrasquer
|
10
10
|
- Eric Johnson
|
11
|
+
- Daniel Reverri
|
11
12
|
autorequire:
|
12
13
|
bindir: bin
|
13
14
|
cert_chain: []
|
14
|
-
date: 2015-
|
15
|
+
date: 2015-03-27 00:00:00.000000000 Z
|
15
16
|
dependencies:
|
16
17
|
- !ruby/object:Gem::Dependency
|
17
18
|
name: faraday
|
@@ -31,84 +32,84 @@ dependencies:
|
|
31
32
|
name: net-http-persistent
|
32
33
|
requirement: !ruby/object:Gem::Requirement
|
33
34
|
requirements:
|
34
|
-
- -
|
35
|
+
- - ~>
|
35
36
|
- !ruby/object:Gem::Version
|
36
37
|
version: '2.9'
|
37
38
|
type: :runtime
|
38
39
|
prerelease: false
|
39
40
|
version_requirements: !ruby/object:Gem::Requirement
|
40
41
|
requirements:
|
41
|
-
- -
|
42
|
+
- - ~>
|
42
43
|
- !ruby/object:Gem::Version
|
43
44
|
version: '2.9'
|
44
45
|
- !ruby/object:Gem::Dependency
|
45
46
|
name: bundler
|
46
47
|
requirement: !ruby/object:Gem::Requirement
|
47
48
|
requirements:
|
48
|
-
- -
|
49
|
+
- - ~>
|
49
50
|
- !ruby/object:Gem::Version
|
50
51
|
version: '1.6'
|
51
52
|
type: :development
|
52
53
|
prerelease: false
|
53
54
|
version_requirements: !ruby/object:Gem::Requirement
|
54
55
|
requirements:
|
55
|
-
- -
|
56
|
+
- - ~>
|
56
57
|
- !ruby/object:Gem::Version
|
57
58
|
version: '1.6'
|
58
59
|
- !ruby/object:Gem::Dependency
|
59
60
|
name: rake
|
60
61
|
requirement: !ruby/object:Gem::Requirement
|
61
62
|
requirements:
|
62
|
-
- -
|
63
|
+
- - '>='
|
63
64
|
- !ruby/object:Gem::Version
|
64
65
|
version: '0'
|
65
66
|
type: :development
|
66
67
|
prerelease: false
|
67
68
|
version_requirements: !ruby/object:Gem::Requirement
|
68
69
|
requirements:
|
69
|
-
- -
|
70
|
+
- - '>='
|
70
71
|
- !ruby/object:Gem::Version
|
71
72
|
version: '0'
|
72
73
|
- !ruby/object:Gem::Dependency
|
73
74
|
name: typhoeus
|
74
75
|
requirement: !ruby/object:Gem::Requirement
|
75
76
|
requirements:
|
76
|
-
- -
|
77
|
+
- - '>='
|
77
78
|
- !ruby/object:Gem::Version
|
78
79
|
version: '0'
|
79
80
|
type: :development
|
80
81
|
prerelease: false
|
81
82
|
version_requirements: !ruby/object:Gem::Requirement
|
82
83
|
requirements:
|
83
|
-
- -
|
84
|
+
- - '>='
|
84
85
|
- !ruby/object:Gem::Version
|
85
86
|
version: '0'
|
86
87
|
- !ruby/object:Gem::Dependency
|
87
88
|
name: em-http-request
|
88
89
|
requirement: !ruby/object:Gem::Requirement
|
89
90
|
requirements:
|
90
|
-
- -
|
91
|
+
- - '>='
|
91
92
|
- !ruby/object:Gem::Version
|
92
93
|
version: '0'
|
93
94
|
type: :development
|
94
95
|
prerelease: false
|
95
96
|
version_requirements: !ruby/object:Gem::Requirement
|
96
97
|
requirements:
|
97
|
-
- -
|
98
|
+
- - '>='
|
98
99
|
- !ruby/object:Gem::Version
|
99
100
|
version: '0'
|
100
101
|
- !ruby/object:Gem::Dependency
|
101
102
|
name: em-synchrony
|
102
103
|
requirement: !ruby/object:Gem::Requirement
|
103
104
|
requirements:
|
104
|
-
- -
|
105
|
+
- - '>='
|
105
106
|
- !ruby/object:Gem::Version
|
106
107
|
version: '0'
|
107
108
|
type: :development
|
108
109
|
prerelease: false
|
109
110
|
version_requirements: !ruby/object:Gem::Requirement
|
110
111
|
requirements:
|
111
|
-
- -
|
112
|
+
- - '>='
|
112
113
|
- !ruby/object:Gem::Version
|
113
114
|
version: '0'
|
114
115
|
description: Client for the Orchestrate REST API
|
@@ -117,13 +118,14 @@ email:
|
|
117
118
|
- justin@mecham.me
|
118
119
|
- jimcar@aracnet.com
|
119
120
|
- erjohnson.pdx@gmail.com
|
121
|
+
- reverri@gmail.com
|
120
122
|
executables: []
|
121
123
|
extensions: []
|
122
124
|
extra_rdoc_files: []
|
123
125
|
files:
|
124
|
-
-
|
125
|
-
-
|
126
|
-
-
|
126
|
+
- .gitignore
|
127
|
+
- .travis.yml
|
128
|
+
- .yardopts
|
127
129
|
- Gemfile
|
128
130
|
- LICENSE
|
129
131
|
- README.md
|
@@ -168,6 +170,7 @@ files:
|
|
168
170
|
- test/orchestrate/key_value_test.rb
|
169
171
|
- test/orchestrate/ref_test.rb
|
170
172
|
- test/orchestrate/relations_test.rb
|
173
|
+
- test/orchestrate/search/query_builder_test.rb
|
171
174
|
- test/test_helper.rb
|
172
175
|
homepage: https://github.com/orchestrate-io/orchestrate-ruby
|
173
176
|
licenses:
|
@@ -179,17 +182,17 @@ require_paths:
|
|
179
182
|
- lib
|
180
183
|
required_ruby_version: !ruby/object:Gem::Requirement
|
181
184
|
requirements:
|
182
|
-
- -
|
185
|
+
- - '>='
|
183
186
|
- !ruby/object:Gem::Version
|
184
187
|
version: '0'
|
185
188
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
186
189
|
requirements:
|
187
|
-
- -
|
190
|
+
- - '>='
|
188
191
|
- !ruby/object:Gem::Version
|
189
192
|
version: '0'
|
190
193
|
requirements: []
|
191
194
|
rubyforge_project:
|
192
|
-
rubygems_version: 2.
|
195
|
+
rubygems_version: 2.0.14
|
193
196
|
signing_key:
|
194
197
|
specification_version: 4
|
195
198
|
summary: Ruby client for Orchestrate.io
|
@@ -215,4 +218,5 @@ test_files:
|
|
215
218
|
- test/orchestrate/key_value_test.rb
|
216
219
|
- test/orchestrate/ref_test.rb
|
217
220
|
- test/orchestrate/relations_test.rb
|
221
|
+
- test/orchestrate/search/query_builder_test.rb
|
218
222
|
- test/test_helper.rb
|