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 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