levinalex-liaison_labor 0.1.9 → 0.1.10
Sign up to get free protection for your applications and to get access to all the features.
- data/liaison_labor.gemspec +1 -1
- data/lib/liaison_labor.rb +1 -1
- data/lib/liaison_server.rb +20 -3
- metadata +1 -1
data/liaison_labor.gemspec
CHANGED
data/lib/liaison_labor.rb
CHANGED
data/lib/liaison_server.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
require 'rubygems'
|
4
|
+
|
3
5
|
require 'optparse'
|
4
6
|
require 'net/http'
|
5
7
|
require 'yaml'
|
6
8
|
|
7
|
-
require 'rubygems'
|
8
|
-
|
9
9
|
require File.join(File.dirname(__FILE__),'liaison_labor.rb')
|
10
10
|
|
11
11
|
class Hash
|
@@ -24,6 +24,20 @@ class Hash
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
class WorklistManager
|
28
|
+
def fetch(uri_str, limit = 10)
|
29
|
+
# You should choose better exception.
|
30
|
+
raise ArgumentError, 'HTTP redirect too deep' if limit == 0
|
31
|
+
|
32
|
+
response = Net::HTTP.get_response(URI.parse(uri_str))
|
33
|
+
case response
|
34
|
+
when Net::HTTPSuccess then response
|
35
|
+
when Net::HTTPRedirection then fetch(response['location'], limit - 1)
|
36
|
+
else
|
37
|
+
response.error!
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
27
41
|
|
28
42
|
module Diasorin
|
29
43
|
ConfigFilename = ".liaison_server"
|
@@ -114,7 +128,10 @@ module Diasorin
|
|
114
128
|
liaison.on_order_request do |barcode|
|
115
129
|
begin
|
116
130
|
uri = URI.join(@options[:endpoint],"find_requests/",barcode)
|
117
|
-
|
131
|
+
result = WorklistManager.new.fetch(uri.to_s)
|
132
|
+
|
133
|
+
data = YAML.load(result.body)
|
134
|
+
data["id"] = barcode
|
118
135
|
rescue Exception => e
|
119
136
|
puts e
|
120
137
|
puts e.backtrace
|