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.
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{liaison_labor}
3
- s.version = "0.1.9"
3
+ s.version = "0.1.10"
4
4
 
5
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
6
  s.authors = ["Levin Alexander"]
data/lib/liaison_labor.rb CHANGED
@@ -4,5 +4,5 @@ require File.join(File.dirname(__FILE__),'liaison_labor','interface.rb')
4
4
  require File.join(File.dirname(__FILE__),'liaison_labor','packets.rb')
5
5
 
6
6
  class LiaisonLabor
7
- VERSION = '0.1.9'
7
+ VERSION = '0.1.10'
8
8
  end
@@ -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
- data = YAML.load(::Net::HTTP.get(uri))
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: levinalex-liaison_labor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Levin Alexander