Class: Rack::MswalletRack
- Inherits:
-
Object
- Object
- Rack::MswalletRack
- Defined in:
- lib/rack/mswallet_rack.rb
Instance Method Summary collapse
- #append_parameter_separator(url) ⇒ Object
- #call(env) ⇒ Object
- #each(&block) ⇒ Object
- #find_id(path) ⇒ Object
-
#initialize(app) ⇒ MswalletRack
constructor
A new instance of MswalletRack.
Constructor Details
#initialize(app) ⇒ MswalletRack
Returns a new instance of MswalletRack.
4 5 6 7 |
# File 'lib/rack/mswallet_rack.rb', line 4 def initialize(app) @app = app @parameters = {} end |
Instance Method Details
#append_parameter_separator(url) ⇒ Object
39 40 |
# File 'lib/rack/mswallet_rack.rb', line 39 def append_parameter_separator url end |
#call(env) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rack/mswallet_rack.rb', line 9 def call(env) @parameters['authToken'] = env['HTTP_AUTHENTICATIONTOKEN'] if env['HTTP_AUTHENTICATIONTOKEN'] @parameters.merge!(Rack::Utils.parse_nested_query(env['QUERY_STRING'])) @parameters['path'] = env['PATH_INFO'] serial_number = find_id @parameters['path'] @parameters['serialNumber'] = serial_number if serial_number handler = Mswallet.custom_rack_handler || Mswallet::Handler response = handler.update(@parameters) header = {'Content-Type' => 'application/vnd.ms.wallet', 'Content-Disposition' => 'attachment', 'filename' => "#{serial_number}.mswallet"} case response when Mswallet::Pass [200, header, [response.stream.string]] when String [200, header, [response]] when File, StringIO, Zip::OutputStream, Tempfile [200, header, [response.read]] when false [304, {}, {}] else [401, {}, {}] end else @app.call env end end |
#each(&block) ⇒ Object
42 43 |
# File 'lib/rack/mswallet_rack.rb', line 42 def each(&block) end |
#find_id(path) ⇒ Object
45 46 47 48 |
# File 'lib/rack/mswallet_rack.rb', line 45 def find_id(path) return nil unless path =~ /\/#{Mswallet::RACK_API_VERSION}\/walletitems\/([\d\w]+)/ $1 end |