nsi-lapesi 0.0.1 → 0.1.0
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.
- data/VERSION +1 -1
- data/lib/nsi-lapesi/fake_server.rb +16 -3
- data/lib/nsi-lapesi/indexer.rb +6 -3
- data/lib/nsi-lapesi/searcher.rb +3 -6
- data/nsi-lapesi.gemspec +4 -3
- data/spec/indexer_spec.rb +7 -0
- data/spec/searcher_spec.rb +32 -0
- metadata +23 -67
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
@@ -2,14 +2,27 @@ require "xmlrpc/server"
|
|
2
2
|
|
3
3
|
module NSILapesi
|
4
4
|
class FakeServer
|
5
|
-
|
6
|
-
|
5
|
+
class FakeIndexer
|
6
|
+
def addImage(contract, image)
|
7
|
+
100 #success
|
8
|
+
end
|
9
|
+
|
10
|
+
def delImage(id)
|
11
|
+
100 #success
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class FakeSearcher
|
16
|
+
def searchImage(image, limit)
|
17
|
+
'<results items="1" code="100"> <item id="1223" score="1.0" duplicated="false" /> </results>'
|
18
|
+
end
|
7
19
|
end
|
8
20
|
|
9
21
|
def self.start
|
10
22
|
@thread = Thread.new do
|
11
23
|
server = XMLRPC::Server.new(8080)
|
12
|
-
server.add_handler("ImageIndexer", NSILapesi::FakeServer.new)
|
24
|
+
server.add_handler("ImageIndexer", NSILapesi::FakeServer::FakeIndexer.new)
|
25
|
+
server.add_handler("ImageSearcher", NSILapesi::FakeServer::FakeSearcher.new)
|
13
26
|
server.serve
|
14
27
|
end
|
15
28
|
end
|
data/lib/nsi-lapesi/indexer.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'builder'
|
2
2
|
require 'xmlrpc/client'
|
3
|
+
require 'base64'
|
3
4
|
|
4
5
|
require File.dirname(__FILE__) + '/configuration'
|
5
6
|
require File.dirname(__FILE__) + '/errors'
|
@@ -24,10 +25,11 @@ module NSILapesi
|
|
24
25
|
raise Errors::ImageFormatNotSupported if not MIMETYPES.include? params[:format]
|
25
26
|
|
26
27
|
begin
|
27
|
-
image_content = (image.class == String)? image : image.read
|
28
|
+
image_content = (image.class == String)? Base64.decode64(image) : image.read
|
28
29
|
status_code = @server.call("ImageIndexer.addImage", XMLRPC::Base64.new(contract),
|
29
30
|
XMLRPC::Base64.new(image_content))
|
30
|
-
rescue Exception
|
31
|
+
rescue Exception => e
|
32
|
+
puts e.message
|
31
33
|
status_code = 111
|
32
34
|
end
|
33
35
|
end
|
@@ -35,7 +37,8 @@ module NSILapesi
|
|
35
37
|
def del_image(id)
|
36
38
|
begin
|
37
39
|
status_code = @server.call("ImageIndexer.delImage", id)
|
38
|
-
rescue Exception
|
40
|
+
rescue Exception => e
|
41
|
+
puts e.message
|
39
42
|
status_code = 111
|
40
43
|
end
|
41
44
|
end
|
data/lib/nsi-lapesi/searcher.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'xmlsimple'
|
2
|
+
require 'base64'
|
2
3
|
|
3
4
|
require File.dirname(__FILE__) + '/configuration'
|
4
5
|
require File.dirname(__FILE__) + '/errors'
|
@@ -11,16 +12,12 @@ module NSILapesi
|
|
11
12
|
end
|
12
13
|
|
13
14
|
def search_image(image, limit = 5)
|
14
|
-
image_content = image.read
|
15
|
+
image_content = (image.class == String)? Base64.decode64(image) : image.read
|
15
16
|
|
16
17
|
results_xml = @server.call("ImageSearcher.searchImage", XMLRPC::Base64.new(image_content), limit)
|
17
18
|
results = XmlSimple.xml_in results_xml
|
18
19
|
|
19
|
-
|
20
|
-
results['item']
|
21
|
-
else
|
22
|
-
[]
|
23
|
-
end
|
20
|
+
(results['code'] == '100')? results['item'] : []
|
24
21
|
end
|
25
22
|
end
|
26
23
|
end
|
data/nsi-lapesi.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "nsi-lapesi"
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Pedro Henrique Linhares"]
|
12
|
-
s.date = "2012-10-
|
12
|
+
s.date = "2012-10-29"
|
13
13
|
s.description = "Gem de acesso ao servico Lapesi"
|
14
14
|
s.email = "pedrolmota@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -35,12 +35,13 @@ Gem::Specification.new do |s|
|
|
35
35
|
"spec/configuration_spec.rb",
|
36
36
|
"spec/indexer_spec.rb",
|
37
37
|
"spec/resources/debian.jpg",
|
38
|
+
"spec/searcher_spec.rb",
|
38
39
|
"spec/spec_helper.rb"
|
39
40
|
]
|
40
41
|
s.homepage = "http://github.com/pedrolinhares/nsi-lapesi"
|
41
42
|
s.licenses = ["MIT"]
|
42
43
|
s.require_paths = ["lib"]
|
43
|
-
s.rubygems_version = "1.8.
|
44
|
+
s.rubygems_version = "1.8.15"
|
44
45
|
s.summary = "Gem de acesso ao servico Lapesi"
|
45
46
|
|
46
47
|
if s.respond_to? :specification_version then
|
data/spec/indexer_spec.rb
CHANGED
@@ -26,6 +26,13 @@ describe "NsiLapesi::Indexer" do
|
|
26
26
|
code.should == 100
|
27
27
|
end
|
28
28
|
|
29
|
+
it 'can remove an image from lapesi' do
|
30
|
+
img = File.open('spec/resources/debian.jpg').read
|
31
|
+
@indexer.add_image image: img, id: '2'
|
32
|
+
code = @indexer.del_image '2'
|
33
|
+
code.should == 100
|
34
|
+
end
|
35
|
+
|
29
36
|
it 'should create xml contract' do
|
30
37
|
hoje = Time.now.strftime("%d/%m/%Y")
|
31
38
|
expected_contract = %[<?xml version="1.0" encoding="iso-8859-1"?>\n<document>\n <id>1</id>\n <author>Foo</author>\n <title>BarFoo</title>\n <publication-date>#{hoje}</publication-date>\n <format>jpg</format>\n <type>Artigo</type>\n <keywords>teste</keywords>\n</document>\n]
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "NSILapesi::Searcher" do
|
4
|
+
before(:each) do
|
5
|
+
NSILapesi::Configuration.configure do |conf|
|
6
|
+
conf.host 'localhost'
|
7
|
+
conf.port 8080
|
8
|
+
conf.path '/'
|
9
|
+
end
|
10
|
+
|
11
|
+
@searcher = NSILapesi::Searcher.new
|
12
|
+
NSILapesi::FakeServer.start
|
13
|
+
sleep(1)
|
14
|
+
end
|
15
|
+
|
16
|
+
after(:all) do
|
17
|
+
NSILapesi::FakeServer.stop
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'searchs for a image' do
|
21
|
+
img = File.open('spec/resources/debian.jpg')
|
22
|
+
results = @searcher.search_image img, 5
|
23
|
+
results.should == [{"id" => "1223", "score" => "1.0", "duplicated" => "false" }]
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'also searches for a base64 image' do
|
27
|
+
img = File.open('spec/resources/debian.jpg')
|
28
|
+
img_base64 = Base64.encode64(img.read)
|
29
|
+
results = @searcher.search_image img_base64, 5
|
30
|
+
results.should == [{"id" => "1223", "score" => "1.0", "duplicated" => "false" }]
|
31
|
+
end
|
32
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nsi-lapesi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: builder
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &78763800 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,15 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
24
|
+
version_requirements: *78763800
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: libxml-xmlrpc
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &78763280 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ! '>='
|
@@ -37,15 +32,10 @@ dependencies:
|
|
37
32
|
version: '0'
|
38
33
|
type: :runtime
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
35
|
+
version_requirements: *78763280
|
46
36
|
- !ruby/object:Gem::Dependency
|
47
37
|
name: xml-simple
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &78762810 !ruby/object:Gem::Requirement
|
49
39
|
none: false
|
50
40
|
requirements:
|
51
41
|
- - ! '>='
|
@@ -53,15 +43,10 @@ dependencies:
|
|
53
43
|
version: '0'
|
54
44
|
type: :runtime
|
55
45
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
46
|
+
version_requirements: *78762810
|
62
47
|
- !ruby/object:Gem::Dependency
|
63
48
|
name: rspec
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirement: &78762250 !ruby/object:Gem::Requirement
|
65
50
|
none: false
|
66
51
|
requirements:
|
67
52
|
- - ~>
|
@@ -69,15 +54,10 @@ dependencies:
|
|
69
54
|
version: 2.8.0
|
70
55
|
type: :development
|
71
56
|
prerelease: false
|
72
|
-
version_requirements:
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: 2.8.0
|
57
|
+
version_requirements: *78762250
|
78
58
|
- !ruby/object:Gem::Dependency
|
79
59
|
name: rdoc
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirement: &78761890 !ruby/object:Gem::Requirement
|
81
61
|
none: false
|
82
62
|
requirements:
|
83
63
|
- - ~>
|
@@ -85,15 +65,10 @@ dependencies:
|
|
85
65
|
version: '3.12'
|
86
66
|
type: :development
|
87
67
|
prerelease: false
|
88
|
-
version_requirements:
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '3.12'
|
68
|
+
version_requirements: *78761890
|
94
69
|
- !ruby/object:Gem::Dependency
|
95
70
|
name: bundler
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirement: &78761610 !ruby/object:Gem::Requirement
|
97
72
|
none: false
|
98
73
|
requirements:
|
99
74
|
- - ~>
|
@@ -101,15 +76,10 @@ dependencies:
|
|
101
76
|
version: 1.2.1
|
102
77
|
type: :development
|
103
78
|
prerelease: false
|
104
|
-
version_requirements:
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ~>
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 1.2.1
|
79
|
+
version_requirements: *78761610
|
110
80
|
- !ruby/object:Gem::Dependency
|
111
81
|
name: jeweler
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
82
|
+
requirement: &78761100 !ruby/object:Gem::Requirement
|
113
83
|
none: false
|
114
84
|
requirements:
|
115
85
|
- - ~>
|
@@ -117,15 +87,10 @@ dependencies:
|
|
117
87
|
version: 1.8.3
|
118
88
|
type: :development
|
119
89
|
prerelease: false
|
120
|
-
version_requirements:
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ~>
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: 1.8.3
|
90
|
+
version_requirements: *78761100
|
126
91
|
- !ruby/object:Gem::Dependency
|
127
92
|
name: simplecov
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
93
|
+
requirement: &78760820 !ruby/object:Gem::Requirement
|
129
94
|
none: false
|
130
95
|
requirements:
|
131
96
|
- - ! '>='
|
@@ -133,15 +98,10 @@ dependencies:
|
|
133
98
|
version: '0'
|
134
99
|
type: :development
|
135
100
|
prerelease: false
|
136
|
-
version_requirements:
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ! '>='
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '0'
|
101
|
+
version_requirements: *78760820
|
142
102
|
- !ruby/object:Gem::Dependency
|
143
103
|
name: debugger
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirement: &78760390 !ruby/object:Gem::Requirement
|
145
105
|
none: false
|
146
106
|
requirements:
|
147
107
|
- - ! '>='
|
@@ -149,12 +109,7 @@ dependencies:
|
|
149
109
|
version: '0'
|
150
110
|
type: :development
|
151
111
|
prerelease: false
|
152
|
-
version_requirements:
|
153
|
-
none: false
|
154
|
-
requirements:
|
155
|
-
- - ! '>='
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: '0'
|
112
|
+
version_requirements: *78760390
|
158
113
|
description: Gem de acesso ao servico Lapesi
|
159
114
|
email: pedrolmota@gmail.com
|
160
115
|
executables: []
|
@@ -181,6 +136,7 @@ files:
|
|
181
136
|
- spec/configuration_spec.rb
|
182
137
|
- spec/indexer_spec.rb
|
183
138
|
- spec/resources/debian.jpg
|
139
|
+
- spec/searcher_spec.rb
|
184
140
|
- spec/spec_helper.rb
|
185
141
|
homepage: http://github.com/pedrolinhares/nsi-lapesi
|
186
142
|
licenses:
|
@@ -197,7 +153,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
197
153
|
version: '0'
|
198
154
|
segments:
|
199
155
|
- 0
|
200
|
-
hash:
|
156
|
+
hash: 1065858545
|
201
157
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
202
158
|
none: false
|
203
159
|
requirements:
|
@@ -206,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
162
|
version: '0'
|
207
163
|
requirements: []
|
208
164
|
rubyforge_project:
|
209
|
-
rubygems_version: 1.8.
|
165
|
+
rubygems_version: 1.8.15
|
210
166
|
signing_key:
|
211
167
|
specification_version: 3
|
212
168
|
summary: Gem de acesso ao servico Lapesi
|