diff --git a/lib/quickets.rb b/lib/quickets.rb index f166bb4..077f80d 100644 --- a/lib/quickets.rb +++ b/lib/quickets.rb @@ -3,6 +3,7 @@ # Web framework require "roda" +require "quickets/available_printers" # Interface to java lib require "java" @@ -28,8 +29,7 @@ class App < Roda fail ArgumentError, 'Invalid API key' if config.api_key != r['api_key'] r.on 'printers' do - installed_printers = PrintServiceLocator.new.all.map(&:name) - config.printers & installed_printers # retains ordering of config + AvailablePrinters.all(r['api_key']) end r.post "print-tickets" do diff --git a/lib/quickets/available_printers.rb b/lib/quickets/available_printers.rb new file mode 100644 index 0000000..e88b2df --- /dev/null +++ b/lib/quickets/available_printers.rb @@ -0,0 +1,17 @@ +# Interface to java lib +require "java" +require "jars/ticket_printer-1.2.0-jar-with-dependencies.jar" + +java_import com.quicktravel.ticket_printer.PrintServiceLocator + +module Quickets + class AvailablePrinters + def self.all(api_key) + installed_printers = PrintServiceLocator.new.all.map(&:name) + + # Return only printers configured AND installed + # ...and retain ordering as defined in config + Quickets.config.printers_for(api_key) & installed_printers + end + end +end