nsi-lapesi 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.1.0
@@ -2,14 +2,27 @@ require "xmlrpc/server"
2
2
 
3
3
  module NSILapesi
4
4
  class FakeServer
5
- def addImage(contract, image)
6
- 100
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
@@ -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
@@ -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
- if results['code'] == '100'
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.1"
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-19"
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.24"
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.1
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-19 00:00:00.000000000 Z
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: -1326426549261268832
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.24
165
+ rubygems_version: 1.8.15
210
166
  signing_key:
211
167
  specification_version: 3
212
168
  summary: Gem de acesso ao servico Lapesi