cmis-ruby 0.5.3 → 0.5.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cmis/repository.rb +3 -21
- data/lib/cmis/utils.rb +37 -0
- data/lib/cmis/version.rb +1 -1
- data/spec/cmis-ruby/repository_spec.rb +12 -1
- data/spec/spec_helper.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f22bda5733d214e848507a528d82316c27c56081
|
4
|
+
data.tar.gz: d04542e5800a97e83eab03892d61c51a00e1f0b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 665936fb9b4a4f642783e9c9d80420516177c60f5eed2051a2ac6754d3d21d251e90803f317d482262eae1ad11fb4b09b10bc5bd0f8d42718cfc511c3e9d41d5
|
7
|
+
data.tar.gz: 13d49731f9411132253f1f2b117bed2e498f7f0662547766c5ae779807153f6a320fc99c2c76c8a95ecbe3d7370f44b8248b739a46be11c85a811310b2aa03eb
|
data/lib/cmis/repository.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'cmis/query'
|
2
|
+
require 'cmis/utils'
|
2
3
|
require 'json'
|
3
4
|
|
4
5
|
module CMIS
|
@@ -108,13 +109,13 @@ module CMIS
|
|
108
109
|
|
109
110
|
def find_object(type_id, properties = {}, opts = {})
|
110
111
|
opts.merge!(page_size: 1)
|
111
|
-
statement =
|
112
|
+
statement = Utils.build_query_statement(type_id, properties)
|
112
113
|
query(statement, opts).results.first
|
113
114
|
end
|
114
115
|
|
115
116
|
def count_objects(type_id, properties = {}, opts = {})
|
116
117
|
opts.merge!(page_size: 0)
|
117
|
-
statement =
|
118
|
+
statement = Utils.build_query_statement(type_id, properties)
|
118
119
|
query(statement, opts).total
|
119
120
|
end
|
120
121
|
|
@@ -124,25 +125,6 @@ module CMIS
|
|
124
125
|
|
125
126
|
private
|
126
127
|
|
127
|
-
def construct_statement(type_id, properties)
|
128
|
-
statement = "select * from #{type_id}"
|
129
|
-
clause = properties.map { |k, v| "#{k}=#{normalize(v)}" }.join(' and ')
|
130
|
-
statement << " where #{clause}" unless clause.empty?
|
131
|
-
statement
|
132
|
-
end
|
133
|
-
|
134
|
-
def normalize(value)
|
135
|
-
if value.respond_to?(:strftime)
|
136
|
-
value = value.strftime('%Y-%m-%dT%H:%M:%S.%L')
|
137
|
-
"TIMESTAMP '#{value}'"
|
138
|
-
else
|
139
|
-
value = value.to_s
|
140
|
-
value.gsub!(/\\/, Regexp.escape('\\\\'))
|
141
|
-
value.gsub!(/'/, Regexp.escape('\\\''))
|
142
|
-
"'#{value}'"
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
128
|
def construct_types(a)
|
147
129
|
types = []
|
148
130
|
a.each do |t|
|
data/lib/cmis/utils.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
module CMIS
|
2
|
+
module Utils
|
3
|
+
module_function
|
4
|
+
|
5
|
+
def build_query_statement(type_id, properties)
|
6
|
+
QueryStatementBuilder.new(type_id, properties).build
|
7
|
+
end
|
8
|
+
|
9
|
+
class QueryStatementBuilder
|
10
|
+
def initialize(type_id, properties)
|
11
|
+
@type_id = type_id
|
12
|
+
@properties = properties
|
13
|
+
end
|
14
|
+
|
15
|
+
def build
|
16
|
+
statement = "select * from #{@type_id}"
|
17
|
+
clause = @properties.map { |k, v| "#{k}=#{normalize(v)}" }.join(' and ')
|
18
|
+
statement << " where #{clause}" unless clause.empty?
|
19
|
+
statement
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def normalize(value)
|
25
|
+
if value.respond_to?(:strftime)
|
26
|
+
value = value.strftime('%Y-%m-%dT%H:%M:%S.%L')
|
27
|
+
"TIMESTAMP '#{value}'"
|
28
|
+
else
|
29
|
+
value = value.to_s
|
30
|
+
value.gsub!(/\\/, Regexp.escape('\\\\'))
|
31
|
+
value.gsub!(/'/, Regexp.escape('\\\''))
|
32
|
+
"'#{value}'"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/cmis/version.rb
CHANGED
@@ -16,7 +16,7 @@ module CMIS
|
|
16
16
|
expect(repository.id).to eq(repository_id)
|
17
17
|
end
|
18
18
|
|
19
|
-
it 'has non
|
19
|
+
it 'has non nil fields' do
|
20
20
|
expect(repository.id) .to_not be_nil
|
21
21
|
expect(repository.name) .to_not be_nil
|
22
22
|
expect(repository.product_version) .to_not be_nil
|
@@ -46,6 +46,17 @@ module CMIS
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
+
describe '#find_object' do
|
50
|
+
it 'returns the object when it is present' do
|
51
|
+
object = repository.find_object('cmis:folder', 'cmis:name' => 'root')
|
52
|
+
expect(object).to be_a(CMIS::Folder)
|
53
|
+
end
|
54
|
+
it 'returns nil when it is not present' do
|
55
|
+
object = repository.find_object('cmis:folder', 'cmis:name' => 'rat')
|
56
|
+
expect(object).to be_nil
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
49
60
|
describe '#count_objects' do
|
50
61
|
it 'returns 1 folder (which is the root folder)' do
|
51
62
|
count = repository.count_objects('cmis:folder')
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cmis-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenneth Geerts
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-05-
|
12
|
+
date: 2014-05-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -75,6 +75,7 @@ files:
|
|
75
75
|
- lib/cmis/repository.rb
|
76
76
|
- lib/cmis/server.rb
|
77
77
|
- lib/cmis/type.rb
|
78
|
+
- lib/cmis/utils.rb
|
78
79
|
- lib/cmis/version.rb
|
79
80
|
- lib/ext/all.rb
|
80
81
|
- lib/ext/hash/keys.rb
|