ruby-montage 0.4.1
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/.gitignore +13 -0
- data/.ruby-version +1 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +132 -0
- data/Rakefile +12 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/circle.yml +13 -0
- data/lib/montage.rb +6 -0
- data/lib/montage/client.rb +109 -0
- data/lib/montage/client/documents.rb +79 -0
- data/lib/montage/client/files.rb +39 -0
- data/lib/montage/client/schemas.rb +19 -0
- data/lib/montage/collection.rb +43 -0
- data/lib/montage/collections.rb +21 -0
- data/lib/montage/collections/documents.rb +13 -0
- data/lib/montage/collections/errors.rb +13 -0
- data/lib/montage/collections/files.rb +13 -0
- data/lib/montage/collections/schemas.rb +13 -0
- data/lib/montage/errors.rb +5 -0
- data/lib/montage/operators.rb +34 -0
- data/lib/montage/operators/equal.rb +17 -0
- data/lib/montage/operators/gt.rb +17 -0
- data/lib/montage/operators/gte.rb +17 -0
- data/lib/montage/operators/ilike.rb +17 -0
- data/lib/montage/operators/in.rb +17 -0
- data/lib/montage/operators/like.rb +17 -0
- data/lib/montage/operators/lt.rb +17 -0
- data/lib/montage/operators/lte.rb +17 -0
- data/lib/montage/operators/nil.rb +17 -0
- data/lib/montage/operators/not.rb +17 -0
- data/lib/montage/operators/not_in.rb +17 -0
- data/lib/montage/query.rb +107 -0
- data/lib/montage/query_parser.rb +112 -0
- data/lib/montage/resource.rb +47 -0
- data/lib/montage/resources.rb +25 -0
- data/lib/montage/resources/document.rb +9 -0
- data/lib/montage/resources/error.rb +9 -0
- data/lib/montage/resources/file.rb +9 -0
- data/lib/montage/resources/schema.rb +9 -0
- data/lib/montage/resources/token.rb +13 -0
- data/lib/montage/response.rb +49 -0
- data/lib/montage/support.rb +25 -0
- data/lib/montage/version.rb +3 -0
- data/ruby-montage.gemspec +36 -0
- metadata +251 -0
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'montage/errors'
|
2
|
+
require 'montage/support'
|
3
|
+
require 'json'
|
4
|
+
require 'montage/operators'
|
5
|
+
|
6
|
+
module Montage
|
7
|
+
class QueryParser
|
8
|
+
include Montage::Support
|
9
|
+
|
10
|
+
attr_reader :query
|
11
|
+
|
12
|
+
TYPE_MAP = {
|
13
|
+
is_i?: :to_i,
|
14
|
+
is_f?: :to_f,
|
15
|
+
is_s?: :to_s
|
16
|
+
}
|
17
|
+
|
18
|
+
def initialize(query)
|
19
|
+
@query = query
|
20
|
+
end
|
21
|
+
|
22
|
+
# Parse the column name from the specific query part
|
23
|
+
#
|
24
|
+
def get_column_name(part, splitter = " ")
|
25
|
+
part.downcase.split(splitter)[0].strip
|
26
|
+
end
|
27
|
+
|
28
|
+
# Grabs the proper query operator from the string
|
29
|
+
#
|
30
|
+
def get_query_operator(part)
|
31
|
+
operator = Montage::Operators.find_operator(part)
|
32
|
+
[operator.operator, operator.montage_operator]
|
33
|
+
end
|
34
|
+
|
35
|
+
# Extract the condition set from the given clause
|
36
|
+
#
|
37
|
+
def parse_condition_set(clause, splitter = " ")
|
38
|
+
clause.split(/#{splitter}/i)[-1].strip
|
39
|
+
end
|
40
|
+
|
41
|
+
# Parse a single portion of the query string
|
42
|
+
#
|
43
|
+
def parse_part(part)
|
44
|
+
if is_i?(part)
|
45
|
+
part.to_i
|
46
|
+
elsif is_f?(part)
|
47
|
+
part.to_f
|
48
|
+
elsif part =~ /\(.*\)/
|
49
|
+
to_array(part)
|
50
|
+
else
|
51
|
+
part.gsub(/('|')/, "")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Get all the parts of the query string
|
56
|
+
#
|
57
|
+
def get_parts(str)
|
58
|
+
operator, montage_operator = get_query_operator(str)
|
59
|
+
|
60
|
+
raise QueryError, "The operator you have used is not a valid Montage query operator" unless montage_operator
|
61
|
+
|
62
|
+
column_name = get_column_name(str, operator)
|
63
|
+
|
64
|
+
raise QueryError, "Your query has an undetermined error" unless column_name
|
65
|
+
|
66
|
+
value = parse_part(parse_condition_set(str, operator))
|
67
|
+
|
68
|
+
[column_name, montage_operator, value]
|
69
|
+
end
|
70
|
+
|
71
|
+
# Parse a hash type query
|
72
|
+
#
|
73
|
+
def parse_hash
|
74
|
+
Hash[
|
75
|
+
query.map do |key, value|
|
76
|
+
new_key = value.is_a?(Array) ? "#{key}__in".to_sym : key
|
77
|
+
[new_key, value]
|
78
|
+
end
|
79
|
+
]
|
80
|
+
end
|
81
|
+
|
82
|
+
# Parse a string type query
|
83
|
+
#
|
84
|
+
def parse_string
|
85
|
+
Hash[
|
86
|
+
query.split(/and(?=([^']*'[^']*')*[^']*$)/i).map do |part|
|
87
|
+
column_name, operator, value = get_parts(part)
|
88
|
+
["#{column_name}#{operator}".to_sym, value]
|
89
|
+
end
|
90
|
+
]
|
91
|
+
end
|
92
|
+
|
93
|
+
# Parse the clause into a Montage query
|
94
|
+
#
|
95
|
+
def parse
|
96
|
+
if query.is_a?(Hash)
|
97
|
+
parse_hash
|
98
|
+
else
|
99
|
+
parse_string
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
# Takes a string value and splits it into an array
|
104
|
+
# Will coerce all values into the type of the first type
|
105
|
+
#
|
106
|
+
def to_array(value)
|
107
|
+
values = value.gsub(/('|\(|\))/, "").split(',')
|
108
|
+
type = [:is_i?, :is_f?].find(Proc.new { :is_s? }) { |t| send(t, values.first) }
|
109
|
+
values.map { |v| v.send(TYPE_MAP[type]) }
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Montage
|
2
|
+
class Resource
|
3
|
+
attr_reader :attributes, :items
|
4
|
+
|
5
|
+
def initialize(raw_data = {})
|
6
|
+
@attributes = raw_data.dup.freeze
|
7
|
+
@items = parse_items
|
8
|
+
end
|
9
|
+
|
10
|
+
def attribute_keys
|
11
|
+
return items.keys.map(&:to_sym) if items.is_a?(Hash)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.resource_name
|
15
|
+
"resource"
|
16
|
+
end
|
17
|
+
|
18
|
+
def singular?
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
def parse_items
|
23
|
+
if attributes.is_a?(Hash)
|
24
|
+
{}.tap do |hsh|
|
25
|
+
attributes.each do |key, value|
|
26
|
+
if key == "_meta"
|
27
|
+
hsh["created_at"] = value["created"]
|
28
|
+
hsh["updated_at"] = value["modified"]
|
29
|
+
else
|
30
|
+
hsh[key] = value
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
else
|
35
|
+
attributes
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def respond_to?(method_name, include_private = false)
|
40
|
+
attribute_keys.include?(method_name) || super
|
41
|
+
end
|
42
|
+
|
43
|
+
def method_missing(method_name, *args, &block)
|
44
|
+
attribute_keys.include?(method_name) ? items[method_name.to_s] : super
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'montage/resources/token'
|
2
|
+
require 'montage/resources/error'
|
3
|
+
require 'montage/resources/file'
|
4
|
+
require 'montage/resources/schema'
|
5
|
+
require 'montage/resources/document'
|
6
|
+
|
7
|
+
module Montage
|
8
|
+
module Resources
|
9
|
+
def self.classes
|
10
|
+
[
|
11
|
+
Montage::Token,
|
12
|
+
Montage::Error,
|
13
|
+
Montage::File,
|
14
|
+
Montage::Schema,
|
15
|
+
Montage::Document
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.find_class(name)
|
20
|
+
matches = self.classes.select { |c| c.resource_name == name }
|
21
|
+
|
22
|
+
matches.first || Montage::Resource
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'montage/collections'
|
2
|
+
require 'montage/resources'
|
3
|
+
|
4
|
+
module Montage
|
5
|
+
class Response
|
6
|
+
attr_reader :status, :body, :members, :resource_name, :raw_body
|
7
|
+
|
8
|
+
def initialize(status, body, resource_name = "resource")
|
9
|
+
@status = status
|
10
|
+
@resource_name = resource_name
|
11
|
+
@raw_body = body.clone.freeze
|
12
|
+
@body = get_body(body)
|
13
|
+
@members = parse_members
|
14
|
+
end
|
15
|
+
|
16
|
+
def get_body(body)
|
17
|
+
resource_name == "error" ? body["errors"] : body["data"]
|
18
|
+
end
|
19
|
+
|
20
|
+
def success?
|
21
|
+
if raw_body["errors"]
|
22
|
+
return false
|
23
|
+
else
|
24
|
+
(200..299).include?(status)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def respond_to?(method_name, include_private = false)
|
29
|
+
resource_name.to_sym == method_name || "#{resource_name}s".to_sym == method_name || method_name == "errors".to_sym || super
|
30
|
+
end
|
31
|
+
|
32
|
+
def method_missing(method_name, *args, &block)
|
33
|
+
return super unless resource_name.to_sym == method_name || "#{resource_name}s".to_sym == method_name || method_name == "errors".to_sym
|
34
|
+
members
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def parse_members
|
40
|
+
klass = if body.is_a?(Array)
|
41
|
+
Montage::Collections.find_class("#{resource_name}s")
|
42
|
+
else
|
43
|
+
Montage::Resources.find_class(resource_name)
|
44
|
+
end
|
45
|
+
|
46
|
+
klass.new(body)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Montage
|
2
|
+
module Support
|
3
|
+
# Will take either an empty string or zero and turn it into a nil object
|
4
|
+
# If the value passed in is neither zero or an empty string, will return the value
|
5
|
+
#
|
6
|
+
def nillify(value)
|
7
|
+
return value unless ["", 0].include?(value)
|
8
|
+
nil
|
9
|
+
end
|
10
|
+
|
11
|
+
# Determines if the string value passed in is an integer
|
12
|
+
# Returns true or false
|
13
|
+
#
|
14
|
+
def is_i?(value)
|
15
|
+
/\A\d+\z/ === value
|
16
|
+
end
|
17
|
+
|
18
|
+
# Determines if the string value passed in is a float
|
19
|
+
# Returns true or false
|
20
|
+
#
|
21
|
+
def is_f?(value)
|
22
|
+
/\A\d+\.\d+\z/ === value
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'montage/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "ruby-montage"
|
8
|
+
spec.version = Montage::VERSION
|
9
|
+
spec.authors = ["dphaener"]
|
10
|
+
spec.email = ["dphaener@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{A Ruby wrapper for the Montage REST API}
|
13
|
+
spec.description = %q{A Ruby wrapper for the Montage REST API}
|
14
|
+
spec.homepage = "https://github.com/EditLLC/ruby-montage"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.required_ruby_version = '>= 1.9.3'
|
23
|
+
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
spec.add_development_dependency "shoulda-context", "~> 1.0"
|
27
|
+
spec.add_development_dependency "mocha", "~> 1.1"
|
28
|
+
spec.add_development_dependency "simplecov", "~> 0.9.1"
|
29
|
+
spec.add_development_dependency "minitest", "~> 5.5.0", ">= 5.5.0"
|
30
|
+
spec.add_development_dependency "minitest-reporters","~> 1.0"
|
31
|
+
spec.add_development_dependency "codecov"
|
32
|
+
|
33
|
+
spec.add_dependency "faraday", "~> 0.9"
|
34
|
+
spec.add_dependency "faraday_middleware", "~> 0.9"
|
35
|
+
spec.add_dependency "json", "~> 1.8"
|
36
|
+
end
|
metadata
ADDED
@@ -0,0 +1,251 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby-montage
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- dphaener
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: shoulda-context
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: mocha
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.1'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.1'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.9.1
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.9.1
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: minitest
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 5.5.0
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 5.5.0
|
93
|
+
type: :development
|
94
|
+
prerelease: false
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 5.5.0
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 5.5.0
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: minitest-reporters
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '1.0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '1.0'
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: codecov
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: faraday
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0.9'
|
138
|
+
type: :runtime
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0.9'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: faraday_middleware
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - "~>"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0.9'
|
152
|
+
type: :runtime
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - "~>"
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0.9'
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: json
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - "~>"
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '1.8'
|
166
|
+
type: :runtime
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - "~>"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '1.8'
|
173
|
+
description: A Ruby wrapper for the Montage REST API
|
174
|
+
email:
|
175
|
+
- dphaener@gmail.com
|
176
|
+
executables: []
|
177
|
+
extensions: []
|
178
|
+
extra_rdoc_files: []
|
179
|
+
files:
|
180
|
+
- ".gitignore"
|
181
|
+
- ".ruby-version"
|
182
|
+
- CODE_OF_CONDUCT.md
|
183
|
+
- Gemfile
|
184
|
+
- LICENSE.txt
|
185
|
+
- README.md
|
186
|
+
- Rakefile
|
187
|
+
- bin/console
|
188
|
+
- bin/setup
|
189
|
+
- circle.yml
|
190
|
+
- lib/montage.rb
|
191
|
+
- lib/montage/client.rb
|
192
|
+
- lib/montage/client/documents.rb
|
193
|
+
- lib/montage/client/files.rb
|
194
|
+
- lib/montage/client/schemas.rb
|
195
|
+
- lib/montage/collection.rb
|
196
|
+
- lib/montage/collections.rb
|
197
|
+
- lib/montage/collections/documents.rb
|
198
|
+
- lib/montage/collections/errors.rb
|
199
|
+
- lib/montage/collections/files.rb
|
200
|
+
- lib/montage/collections/schemas.rb
|
201
|
+
- lib/montage/errors.rb
|
202
|
+
- lib/montage/operators.rb
|
203
|
+
- lib/montage/operators/equal.rb
|
204
|
+
- lib/montage/operators/gt.rb
|
205
|
+
- lib/montage/operators/gte.rb
|
206
|
+
- lib/montage/operators/ilike.rb
|
207
|
+
- lib/montage/operators/in.rb
|
208
|
+
- lib/montage/operators/like.rb
|
209
|
+
- lib/montage/operators/lt.rb
|
210
|
+
- lib/montage/operators/lte.rb
|
211
|
+
- lib/montage/operators/nil.rb
|
212
|
+
- lib/montage/operators/not.rb
|
213
|
+
- lib/montage/operators/not_in.rb
|
214
|
+
- lib/montage/query.rb
|
215
|
+
- lib/montage/query_parser.rb
|
216
|
+
- lib/montage/resource.rb
|
217
|
+
- lib/montage/resources.rb
|
218
|
+
- lib/montage/resources/document.rb
|
219
|
+
- lib/montage/resources/error.rb
|
220
|
+
- lib/montage/resources/file.rb
|
221
|
+
- lib/montage/resources/schema.rb
|
222
|
+
- lib/montage/resources/token.rb
|
223
|
+
- lib/montage/response.rb
|
224
|
+
- lib/montage/support.rb
|
225
|
+
- lib/montage/version.rb
|
226
|
+
- ruby-montage.gemspec
|
227
|
+
homepage: https://github.com/EditLLC/ruby-montage
|
228
|
+
licenses:
|
229
|
+
- MIT
|
230
|
+
metadata: {}
|
231
|
+
post_install_message:
|
232
|
+
rdoc_options: []
|
233
|
+
require_paths:
|
234
|
+
- lib
|
235
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
236
|
+
requirements:
|
237
|
+
- - ">="
|
238
|
+
- !ruby/object:Gem::Version
|
239
|
+
version: 1.9.3
|
240
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
241
|
+
requirements:
|
242
|
+
- - ">="
|
243
|
+
- !ruby/object:Gem::Version
|
244
|
+
version: '0'
|
245
|
+
requirements: []
|
246
|
+
rubyforge_project:
|
247
|
+
rubygems_version: 2.4.5
|
248
|
+
signing_key:
|
249
|
+
specification_version: 4
|
250
|
+
summary: A Ruby wrapper for the Montage REST API
|
251
|
+
test_files: []
|