query-interface-client 0.0.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 +7 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +48 -0
- data/LICENSE +13 -0
- data/README.md +23 -0
- data/Rakefile +7 -0
- data/lib/query-interface-client/lazy_query.rb +109 -0
- data/lib/query-interface-client/resource.rb +23 -0
- data/lib/query-interface-client/version.rb +7 -0
- data/lib/query-interface-client.rb +4 -0
- data/query-interface-client.gemspec +30 -0
- data/spec/lib/lazy_query_spec.rb +172 -0
- data/spec/lib/resource_spec.rb +36 -0
- data/spec/spec_helper.rb +1 -0
- metadata +116 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fd8b45c8627082cfb7c536191a610f9e30f6d48b
|
4
|
+
data.tar.gz: 0d2b822eb090b86f7a12139e0202a7f247ddb1ec
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f5400488b3a33e95912dcd7ff3883de87434e56e7ad6205328ca894d80be24c22336531fd0ca6d111a0eabc45f3dec5a44268dc58e734b96a52ba22432752650
|
7
|
+
data.tar.gz: b7ab3388fad70f3313d662e1a975cc9f8fda4894a41c7e7e2feccdd1586aff00f2b8bf28a37b0c93df87ebcb9a65dc01557ea476de59da00ce2f1069128c63c3
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
activemodel (4.0.0)
|
5
|
+
activesupport (= 4.0.0)
|
6
|
+
builder (~> 3.1.0)
|
7
|
+
activesupport (4.0.0)
|
8
|
+
i18n (~> 0.6, >= 0.6.4)
|
9
|
+
minitest (~> 4.2)
|
10
|
+
multi_json (~> 1.3)
|
11
|
+
thread_safe (~> 0.1)
|
12
|
+
tzinfo (~> 0.3.37)
|
13
|
+
atomic (1.1.10)
|
14
|
+
builder (3.1.4)
|
15
|
+
diff-lcs (1.2.4)
|
16
|
+
faraday (0.8.7)
|
17
|
+
multipart-post (~> 1.1)
|
18
|
+
her (0.6.7)
|
19
|
+
activemodel (>= 3.0.0)
|
20
|
+
activesupport (>= 3.0.0)
|
21
|
+
faraday (~> 0.8)
|
22
|
+
multi_json (~> 1.7)
|
23
|
+
i18n (0.6.4)
|
24
|
+
minitest (4.7.5)
|
25
|
+
multi_json (1.7.7)
|
26
|
+
multipart-post (1.2.0)
|
27
|
+
rake (10.1.0)
|
28
|
+
rspec (2.14.0)
|
29
|
+
rspec-core (~> 2.14.0)
|
30
|
+
rspec-expectations (~> 2.14.0)
|
31
|
+
rspec-mocks (~> 2.14.0)
|
32
|
+
rspec-core (2.14.2)
|
33
|
+
rspec-expectations (2.14.0)
|
34
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
35
|
+
rspec-mocks (2.14.1)
|
36
|
+
thread_safe (0.1.0)
|
37
|
+
atomic
|
38
|
+
tzinfo (0.3.37)
|
39
|
+
will_paginate (3.0.4)
|
40
|
+
|
41
|
+
PLATFORMS
|
42
|
+
ruby
|
43
|
+
|
44
|
+
DEPENDENCIES
|
45
|
+
her
|
46
|
+
rake
|
47
|
+
rspec
|
48
|
+
will_paginate
|
data/LICENSE
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Copyright (c) 2013 RadarServices Smart IT-Security <gems@radarservices.com>
|
2
|
+
|
3
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
4
|
+
purpose with or without fee is hereby granted, provided that the above
|
5
|
+
copyright notice and this permission notice appear in all copies.
|
6
|
+
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
8
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
9
|
+
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
10
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
11
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
12
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
13
|
+
PERFORMANCE OF THIS SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# Query Interface Client
|
2
|
+
|
3
|
+
TODO
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
```
|
8
|
+
$ gem install query-interface-client
|
9
|
+
```
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
require 'query-interface-client'
|
13
|
+
```
|
14
|
+
|
15
|
+
or use ``gem 'query-interface-client'`` in your Gemfile when using bundler.
|
16
|
+
|
17
|
+
##Examples
|
18
|
+
|
19
|
+
TODO
|
20
|
+
|
21
|
+
### Usage
|
22
|
+
|
23
|
+
TODO
|
data/Rakefile
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
module QueryInterface
|
2
|
+
module Client
|
3
|
+
class LazyQuery
|
4
|
+
|
5
|
+
attr_accessor :model, :api_params, :result
|
6
|
+
|
7
|
+
def initialize(model, api_params = nil)
|
8
|
+
self.model = model
|
9
|
+
self.api_params = {
|
10
|
+
conditions: api_params ? api_params[:conditions].dup : {},
|
11
|
+
with: api_params ? api_params[:with].dup : [],
|
12
|
+
order: api_params ? api_params[:order].dup : [],
|
13
|
+
}
|
14
|
+
self.result = nil
|
15
|
+
end
|
16
|
+
|
17
|
+
def filter(conditions)
|
18
|
+
self.copy.tap do |dataset|
|
19
|
+
dataset.api_params[:conditions].merge!(conditions)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def with(*fields)
|
24
|
+
self.copy.tap do |dataset|
|
25
|
+
dataset.api_params[:with] += fields
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def order(*fields)
|
30
|
+
self.copy.tap do |dataset|
|
31
|
+
dataset.api_params[:order] = fields
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def copy(options = {})
|
36
|
+
self.class.new(self.model, self.api_params)
|
37
|
+
end
|
38
|
+
|
39
|
+
def do_collection_query(params={})
|
40
|
+
self.model.get_collection(:query, query_data: self.api_params.merge(params))
|
41
|
+
end
|
42
|
+
|
43
|
+
def do_resource_query(params = {})
|
44
|
+
self.model.get_resource(:query, query_data: self.api_params.merge(params))
|
45
|
+
end
|
46
|
+
|
47
|
+
def do_raw_query(params = {})
|
48
|
+
self.model.get_raw(:query, query_data: self.api_params.merge(params))
|
49
|
+
end
|
50
|
+
|
51
|
+
def first(*args)
|
52
|
+
one(:first, *args)
|
53
|
+
end
|
54
|
+
|
55
|
+
def last(*args)
|
56
|
+
one(:last, *args)
|
57
|
+
end
|
58
|
+
|
59
|
+
def evaluate
|
60
|
+
self.result ||= self.do_collection_query(mode: :evaluate)
|
61
|
+
end
|
62
|
+
|
63
|
+
def paginate(params = {})
|
64
|
+
params = {page: 1, per_page: 10, mode: :paginate}.merge(params)
|
65
|
+
raw = self.do_raw_query(params)[:parsed_data]
|
66
|
+
result = raw[:data]
|
67
|
+
objects = result[:objects].map { |h| self.model.new(h) }
|
68
|
+
WillPaginate::Collection.create(params[:page], params[:per_page], result[:total]) do |pager|
|
69
|
+
pager.replace objects
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def ids
|
74
|
+
response = self.do_raw_query(mode: :ids)
|
75
|
+
response.try(:[], :data)
|
76
|
+
end
|
77
|
+
|
78
|
+
def count
|
79
|
+
if self.result
|
80
|
+
self.result.count
|
81
|
+
else
|
82
|
+
r = self.do_raw_query(mode: :count)
|
83
|
+
r[:parsed_data][:data][:count]
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def to_json(*args)
|
88
|
+
evaluate.to_json(*args)
|
89
|
+
end
|
90
|
+
|
91
|
+
def method_missing(method_name, *args, &block)
|
92
|
+
evaluate.send(method_name, *args, &block)
|
93
|
+
end
|
94
|
+
|
95
|
+
protected
|
96
|
+
|
97
|
+
def one(which, params = {})
|
98
|
+
if self.result
|
99
|
+
self.result.send(which)
|
100
|
+
else
|
101
|
+
self.do_resource_query(params.merge(mode: which))
|
102
|
+
end
|
103
|
+
rescue Faraday::Error::ResourceNotFound
|
104
|
+
nil
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module QueryInterface::Client
|
2
|
+
module Resource
|
3
|
+
|
4
|
+
def self.included(base)
|
5
|
+
base.extend(ClassMethods)
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
def first(*args)
|
10
|
+
self.query.order('id').first
|
11
|
+
end
|
12
|
+
|
13
|
+
def last(*args)
|
14
|
+
self.query.order('id').last
|
15
|
+
end
|
16
|
+
|
17
|
+
def query
|
18
|
+
LazyQuery.new(self)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), 'lib', 'query-interface-client', 'version')
|
4
|
+
|
5
|
+
require 'date'
|
6
|
+
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = "query-interface-client"
|
9
|
+
s.version = QueryInterface::Client::VERSION
|
10
|
+
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.authors = ["Andreas Kopecky <andreas.kopecky@radarservices.com>", "Anton Bangratz <anton.bangratz@radarservices.com>", "Martin Natano <martin.natano@radarservices.com"]
|
13
|
+
s.date = Date.today.strftime
|
14
|
+
s.description = "Client for the radar query interface"
|
15
|
+
s.email = "gems [a] radarservices [d] com"
|
16
|
+
s.files = `git ls-files`.split("\n").reject { |file| file == '.gitignore' }
|
17
|
+
s.test_files = `git ls-files -- {spec}/*`.split("\n")
|
18
|
+
s.extra_rdoc_files = %w[LICENSE README.md]
|
19
|
+
|
20
|
+
s.homepage = "http://github.com/rs-dev/query-interface-client"
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
# s.rubygems_version = "1.8.24"
|
23
|
+
s.summary = "Client for the radar query interface"
|
24
|
+
s.license = "ISC"
|
25
|
+
|
26
|
+
s.add_runtime_dependency(%q<her>)
|
27
|
+
s.add_runtime_dependency(%q<will_paginate>)
|
28
|
+
s.add_development_dependency(%q<rake>)
|
29
|
+
s.add_development_dependency(%q<rspec>)
|
30
|
+
end
|
@@ -0,0 +1,172 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
def deep_copy_check(left, right)
|
5
|
+
left.should_not be(right)
|
6
|
+
[:conditions, :with, :order].each do |key|
|
7
|
+
left[key].should_not be(right[key])
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe QueryInterface::Client::LazyQuery do
|
12
|
+
subject {QueryInterface::Client::LazyQuery}
|
13
|
+
let(:model) {double("Dummy Model")}
|
14
|
+
let(:default_params) { {conditions: {}, with: [], order: []} }
|
15
|
+
|
16
|
+
context "construction" do
|
17
|
+
let(:api_params) do
|
18
|
+
{conditions: {field: 'value'}, with: [:inclusion], order: ["-something"]}
|
19
|
+
end
|
20
|
+
|
21
|
+
it "initializes itself with empty parameters and a supplied model" do
|
22
|
+
query = subject.new(model)
|
23
|
+
query.api_params.should == {conditions: {}, with: [], order: []}
|
24
|
+
query.model.should eq(model)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "honors passed api params" do
|
28
|
+
query = subject.new(model, api_params)
|
29
|
+
query.api_params.should == api_params
|
30
|
+
end
|
31
|
+
|
32
|
+
it "does not alter the originally passed api_params" do
|
33
|
+
query = subject.new(model, api_params)
|
34
|
+
deep_copy_check(api_params, query.api_params)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "copy" do
|
39
|
+
let(:api_params) do
|
40
|
+
{conditions: {field: 'value'}, with: [:inclusion], order: ["-something"]}
|
41
|
+
end
|
42
|
+
it "provides a copy method cloning api_params onto a new instance" do
|
43
|
+
query = subject.new(model, api_params)
|
44
|
+
query_copy = query.copy
|
45
|
+
query_copy.api_params.should eq(query.api_params)
|
46
|
+
deep_copy_check(query_copy.api_params, query.api_params)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context "filtering" do
|
51
|
+
it "should create a new instance with updated api_params" do
|
52
|
+
query = subject.new(model)
|
53
|
+
query_copy = subject.new(model)
|
54
|
+
query.should_receive(:copy).and_return(query_copy)
|
55
|
+
query.filter(a: :b)
|
56
|
+
query_copy.api_params[:conditions].should eq({a: :b})
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context "with" do
|
61
|
+
it "should create a new instance including additional fields" do
|
62
|
+
query = subject.new(model)
|
63
|
+
query_copy = subject.new(model)
|
64
|
+
query.should_receive(:copy).and_return(query_copy)
|
65
|
+
query.with(:c)
|
66
|
+
query_copy.api_params[:with].should eq([:c])
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context "order" do
|
71
|
+
it "should create a new instance includuing order fields" do
|
72
|
+
query = subject.new(model)
|
73
|
+
query_copy = subject.new(model)
|
74
|
+
query.should_receive(:copy).and_return(query_copy)
|
75
|
+
query.order("-something")
|
76
|
+
query_copy.api_params[:order].should eq(["-something"])
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context "chaining" do
|
81
|
+
it "allows chaining of filter and with" do
|
82
|
+
query = subject.new(model)
|
83
|
+
query_copy = query.filter(a: :b).filter(c: :d).with(:e).with(:f, :g)
|
84
|
+
query_copy.api_params[:conditions].should eq({a: :b, c: :d})
|
85
|
+
query_copy.api_params[:with].should eq([:e, :f, :g])
|
86
|
+
end
|
87
|
+
|
88
|
+
it "calling order multiple times overwrites" do
|
89
|
+
query = subject.new(model)
|
90
|
+
query_copy = query.order("-something").order("now really")
|
91
|
+
query_copy.api_params[:order].should eq(["now really"])
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
context "first" do
|
96
|
+
it "gets the first object via do_query" do
|
97
|
+
query = subject.new(model)
|
98
|
+
model.should_receive(:get_resource)
|
99
|
+
.with(:query, query_data: default_params.merge(mode: :first))
|
100
|
+
.and_return("result object")
|
101
|
+
query.first.should eq("result object")
|
102
|
+
end
|
103
|
+
|
104
|
+
it "uses the cached result" do
|
105
|
+
query = subject.new(model)
|
106
|
+
query.result = ["a", "b", "c"]
|
107
|
+
query.should_not_receive(:do_query)
|
108
|
+
query.first.should eq("a")
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
context "evaluate" do
|
113
|
+
it "gets results via do_query and caches the result" do
|
114
|
+
query = subject.new(model)
|
115
|
+
model.should_receive(:get_collection)
|
116
|
+
.with(:query, query_data: default_params.merge(mode: :evaluate))
|
117
|
+
.and_return(["result object"])
|
118
|
+
query.evaluate.should eq(["result object"])
|
119
|
+
query.result.should eq(["result object"])
|
120
|
+
end
|
121
|
+
|
122
|
+
it "doesn't query the api twice" do
|
123
|
+
query = subject.new(model)
|
124
|
+
model.should_receive(:get_collection)
|
125
|
+
.with(:query, query_data: default_params.merge(mode: :evaluate))
|
126
|
+
.and_return(["result object"])
|
127
|
+
result = query.evaluate
|
128
|
+
result_second = query.evaluate
|
129
|
+
result.should be(result_second)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
context "count" do
|
134
|
+
it "gets the count via do_query" do
|
135
|
+
query = subject.new(model)
|
136
|
+
model.should_receive(:get_raw).with(:query, query_data: default_params.merge(mode: :count))
|
137
|
+
.and_return({parsed_data: {data: {count: 42}}})
|
138
|
+
query.count.should eq(42)
|
139
|
+
end
|
140
|
+
|
141
|
+
it "uses cached result for counting" do
|
142
|
+
query = subject.new(model)
|
143
|
+
query.result = ["a", "b", "c"]
|
144
|
+
query.should_not_receive(:do_query)
|
145
|
+
query.count.should eq(3)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
context "paginate" do
|
150
|
+
it "paginates results" do
|
151
|
+
query = subject.new(model)
|
152
|
+
objects = (1..10).to_a
|
153
|
+
model.should_receive(:get_raw).with(:query, query_data: default_params.merge({mode: :paginate, page: 1, per_page: 10})).and_return({parsed_data: {data: {objects: objects, total: 15}, errors: []}})
|
154
|
+
objects.should_receive(:map).and_return(objects)
|
155
|
+
result = query.paginate(page: 1, per_page: 10)
|
156
|
+
result.should eq((1..10).to_a)
|
157
|
+
result.is_a?(WillPaginate::Collection)
|
158
|
+
result.total_entries.should eq(15)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
context "method_missing" do
|
163
|
+
it "delegates unknown methods to the result of evaluate" do
|
164
|
+
query = subject.new(model)
|
165
|
+
result = double("result")
|
166
|
+
query.should_receive(:evaluate).and_return(result)
|
167
|
+
result.should_receive(:frobnicate!).with("uargh!")
|
168
|
+
query.frobnicate!("uargh!")
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class RMDummyClass
|
4
|
+
include QueryInterface::Client::Resource
|
5
|
+
end
|
6
|
+
|
7
|
+
describe QueryInterface::Client::Resource do
|
8
|
+
|
9
|
+
let(:lazy_query) { double("LazyQuery") }
|
10
|
+
before(:each) do
|
11
|
+
QueryInterface::Client::LazyQuery.stub(new: lazy_query)
|
12
|
+
end
|
13
|
+
context "class methods" do
|
14
|
+
context ".query" do
|
15
|
+
it "returns a LazyQuery object" do
|
16
|
+
RMDummyClass.query.should eq(lazy_query)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
context ".first" do
|
20
|
+
it "queries the query object" do
|
21
|
+
args = double("Args")
|
22
|
+
lazy_query.should_receive(:order).with('id').and_return(lazy_query)
|
23
|
+
lazy_query.should_receive(:first)
|
24
|
+
RMDummyClass.first(args)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
context ".last" do
|
28
|
+
it "queries the query object" do
|
29
|
+
args = double("Args")
|
30
|
+
lazy_query.should_receive(:order).with('id').and_return(lazy_query)
|
31
|
+
lazy_query.should_receive(:last)
|
32
|
+
RMDummyClass.last(args)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'query-interface-client'
|
metadata
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: query-interface-client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Andreas Kopecky <andreas.kopecky@radarservices.com>
|
8
|
+
- Anton Bangratz <anton.bangratz@radarservices.com>
|
9
|
+
- Martin Natano <martin.natano@radarservices.com
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2013-07-10 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: her
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - '>='
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '0'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: will_paginate
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: rake
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
type: :development
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: rspec
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
description: Client for the radar query interface
|
72
|
+
email: gems [a] radarservices [d] com
|
73
|
+
executables: []
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files:
|
76
|
+
- LICENSE
|
77
|
+
- README.md
|
78
|
+
files:
|
79
|
+
- Gemfile
|
80
|
+
- Gemfile.lock
|
81
|
+
- LICENSE
|
82
|
+
- README.md
|
83
|
+
- Rakefile
|
84
|
+
- lib/query-interface-client.rb
|
85
|
+
- lib/query-interface-client/lazy_query.rb
|
86
|
+
- lib/query-interface-client/resource.rb
|
87
|
+
- lib/query-interface-client/version.rb
|
88
|
+
- query-interface-client.gemspec
|
89
|
+
- spec/lib/lazy_query_spec.rb
|
90
|
+
- spec/lib/resource_spec.rb
|
91
|
+
- spec/spec_helper.rb
|
92
|
+
homepage: http://github.com/rs-dev/query-interface-client
|
93
|
+
licenses:
|
94
|
+
- ISC
|
95
|
+
metadata: {}
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
requirements: []
|
111
|
+
rubyforge_project:
|
112
|
+
rubygems_version: 2.0.3
|
113
|
+
signing_key:
|
114
|
+
specification_version: 4
|
115
|
+
summary: Client for the radar query interface
|
116
|
+
test_files: []
|