sapos-print 1.0.9 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1cf330a4cbd6cebe38d5f2c8226e11527f7f498670988f8803ad2ca36338cb7f
4
- data.tar.gz: 7339239ef96714e6f0b7599072eb5b2aa55b9f69f8fa8614a6d9cf78fbf508f9
3
+ metadata.gz: cc0f0e2c23bfce7306d2f9ad61b8c22133ea9a899bfbe7715ad412742e3dc0d1
4
+ data.tar.gz: 50c06d2cc61e089350ac62b05317d1ad894cf25debe67aba26baa6ddf0b14e35
5
5
  SHA512:
6
- metadata.gz: 8e740b34123da68ec66c0ba165e9f9e06818e46620aed83796ebfc73bea3aef09dbb970d6ce6b9a7914846d9c3316f0cc17b04e1db93a757746235cd2a208585
7
- data.tar.gz: 3cfeb286303fbd876f7e45986d857c022315efeace92f2140bb2d90daa05293025df96601359f765c213d4311aa5d3794e001baa14265ba939828be5dfe9c0b3
6
+ metadata.gz: bfe1ac23eb6b6696a3f97ee41d5574014e7979fc73735b3befec56c39c5e189d5175111da32e488cda1d9e7525d45a6950cbde53865fcfdfdfd7912714711ab5
7
+ data.tar.gz: 0fd6bd0aa7a28908221f6ed4a8f08666138542be8d6ae5d728840ede8a06da3f8c9d1e1a9a06a0696862a083a70b8503721ee0caf30c19940deff0e2f9eace03
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sapos-print (1.0.7)
4
+ sapos-print (1.0.10)
5
5
  activesupport
6
6
  awesome_print
7
7
  json
@@ -12,7 +12,7 @@ PATH
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
- activesupport (7.0.2.3)
15
+ activesupport (7.0.3)
16
16
  concurrent-ruby (~> 1.0, >= 1.0.2)
17
17
  i18n (>= 1.6, < 2)
18
18
  minitest (>= 5.1)
@@ -34,7 +34,7 @@ GEM
34
34
  concurrent-ruby (~> 1.0)
35
35
  zeitwerk (~> 2.6)
36
36
  dry-inflector (0.2.1)
37
- dry-initializer (3.0.4)
37
+ dry-initializer (3.1.1)
38
38
  dry-logic (1.2.0)
39
39
  concurrent-ruby (~> 1.0)
40
40
  dry-core (~> 0.5, >= 0.5)
@@ -63,7 +63,7 @@ GEM
63
63
  httpclient (2.8.3)
64
64
  i18n (1.12.0)
65
65
  concurrent-ruby (~> 1.0)
66
- json (2.6.2)
66
+ json (2.6.3)
67
67
  mime-types (3.4.1)
68
68
  mime-types-data (~> 3.2015)
69
69
  mime-types-data (3.2022.0105)
@@ -3,17 +3,17 @@ module Sapos
3
3
  module Print
4
4
  include Thor::Actions
5
5
  class CLI < Thor
6
-
6
+
7
7
  desc "setup", "Setup Wizard"
8
8
  def setup
9
9
  info
10
10
  config = {}
11
11
 
12
- url = ask("Configuration URL")
12
+ url = ask("URL de Configuración: ")
13
13
  if url.eql?('manual')
14
14
  data = {}
15
- data["channel"] = ask("Channel:")
16
- data["key"] = ask("Queue Key")
15
+ data["channel"] = ask("Canal:")
16
+ data["key"] = ask("Llave de la Cola:")
17
17
  else
18
18
  response = RestClient.get(url)
19
19
  data = JSON.parse(response)
@@ -31,15 +31,21 @@ module Sapos
31
31
 
32
32
  config[:q] = data["channel"]
33
33
  config[:key] = data["key"]
34
- config[:printer] = ask("Printer Name: ")
35
- config[:adapter] = ask("Printer Adapter: ", limited_to: ["console", "cups", "windows"])
34
+ config[:printer] = ask("Nombre de la impresora default: ")
35
+ config[:adapter] = ask("Adaptador: ", limited_to: ["console", "cups", "windows"])
36
36
  config[:interface] = ask("Interface", limited_to: ["text", "escp"])
37
37
  config[:user_id] = user_id
38
+ config[:duplicate_control] = ask("¿Control Duplicados por MSGID?", limited_to: ["si", "no"])
39
+ config[:printers] = [config[:printer]]
38
40
 
39
- if yes?("Are you sure that you want to write the configuration file?")
41
+ while yes?("¿Tiene impresoras adicionales?")
42
+ name = ask("Nombre de la impresora adicional: ")
43
+ config[:printers] << name
44
+ end
45
+ if yes?("¿Esta seguro que desea guardar la configuración?")
40
46
  Sapos::Print::Configuration.write(config)
41
47
  ap config
42
- say "Configuration Saved! Cheers"
48
+ say "La configuración ha sido guardada!"
43
49
  end
44
50
  end
45
51
 
@@ -48,7 +54,7 @@ module Sapos
48
54
  def start
49
55
  info
50
56
  config = Sapos::Print.config
51
- puts ["Q=#{config.q.to_s}", "Printer=#{config.printer.to_s}", "Adapter=#{config.adapter.to_s}", "Interface=#{config.interface}"].join(";")
57
+ puts ["Q=#{config.q.to_s}", "Printer=#{config.printer.to_s}", "Adapter=#{config.adapter.to_s}", "Interface=#{config.interface}", "DC=#{config.duplicate_control?}"].join(";")
52
58
 
53
59
  print_dir = File.join(Sapos::Print.app_directory, 'print')
54
60
  if File.exists?(print_dir)
@@ -63,9 +69,17 @@ module Sapos
63
69
  end
64
70
 
65
71
  desc "print", "demo print"
72
+ option :printer_name, type: :string
66
73
  def print
67
74
  info
68
75
  config = Sapos::Print.config
76
+ printer_name = options[:printer_name]
77
+ if printer_name.present?
78
+ if config.printers.any? && config.printers.include?(printer_name)
79
+ config.printer = printer_name
80
+ end
81
+ end
82
+ puts "Printing to: #{config.printer}"
69
83
  printer = Printer.new(config)
70
84
  printer.print(document: "This is a test\nprint page\nwithno special commands", document_number: "test", print_control: true)
71
85
  end
@@ -6,7 +6,7 @@ module Sapos
6
6
  module Print
7
7
  class Configuration
8
8
 
9
- attr_accessor :printer, :adapter, :interface, :q, :key, :emv_path, :emv_terminal, :user_id, :verbose
9
+ attr_accessor :printer, :adapter, :interface, :q, :key, :emv_path, :emv_terminal, :user_id, :verbose, :duplicate_control, :cache, :printers
10
10
 
11
11
  def self.write(args = {})
12
12
  config_file = "#{Sapos::Print.app_directory}/config.yml"
@@ -19,6 +19,7 @@ module Sapos
19
19
  template = ERB.new(File.read(config_file))
20
20
  result = YAML.load(template.result(binding))
21
21
  @printer = result[:printer]
22
+ @printers = result[:printers] || []
22
23
  @adapter = result[:adapter]
23
24
  @interface = result[:interface]
24
25
  @q = result[:q]
@@ -26,6 +27,8 @@ module Sapos
26
27
  @emv_path = result[:emv_path]
27
28
  @emv_terminal = result[:emv_terminal]
28
29
  @user_id = result[:user_id]
30
+ @duplicate_control = result[:duplicate_control]
31
+ @cache = []
29
32
  else
30
33
  raise Sapos::Print::Error, "Configuration is missing. Make sure to create this file: #{config_file}"
31
34
  end
@@ -42,9 +45,13 @@ module Sapos
42
45
  def verify?
43
46
  @verify == true
44
47
  end
48
+
49
+ def duplicate_control?
50
+ @duplicate_control.to_s.downcase.eql?("si")
51
+ end
45
52
 
46
53
  def to_h
47
- {printer: @printer, adapter: @adapter, interface: @interface, q: @q, key: @key, emv_path: @emv_path, emv_terminal: @emv_terminal, user_id: @user_id }
54
+ {printer: @printer, adapter: @adapter, interface: @interface, q: @q, key: @key, emv_path: @emv_path, emv_terminal: @emv_terminal, user_id: @user_id, duplicate_control: @duplicate_control, printers: @printers }
48
55
  end
49
56
  end
50
57
  end
@@ -10,11 +10,18 @@ module Sapos
10
10
  def print(args = {})
11
11
  raw_message = args[:document]
12
12
 
13
- log_text = "id=#{args[:id]},doc=#{args[:document_number]},control=#{args[:print_control] ? "SI" : "NO"}\t"
13
+ log_text = "id=#{args[:id]},doc=#{args[:document_number]},control=#{args[:print_control] ? "SI" : "NO"},cache=0\t"
14
14
  filename = "#{args[:document_number]}.print" if args[:document_number]
15
15
  filename = SecureRandom.hex if filename.nil?
16
16
  result = false
17
17
  raw = raw_message.force_encoding("UTF-8")
18
+ msgid = args[:id]
19
+ if @config.duplicate_control? && @config.cache.include?(msgid)
20
+ log_text += " => DUPLICADO (DC)"
21
+ log_text.gsub!("cache=0", "cache=#{@config.cache.size}")
22
+ puts log_text
23
+ return true
24
+ end
18
25
  begin
19
26
  if args[:print_control] && args[:document_number]
20
27
  print_dir = File.join(Sapos::Print.app_directory, 'print')
@@ -39,6 +46,11 @@ module Sapos
39
46
  #puts "Result: #{result}"
40
47
  log_text += " => OK"
41
48
  end
49
+ if @config.duplicate_control?
50
+ @config.cache << msgid
51
+ @config.cache.shift if @config.cache.size > 30
52
+ log_text.gsub!("cache=0", "cache=#{@config.cache.size}")
53
+ end
42
54
  puts log_text
43
55
  rescue => e
44
56
  puts "#{e.message}"
@@ -47,8 +59,7 @@ module Sapos
47
59
  ensure
48
60
  #File.delete(filename) if File.exists?(filename)
49
61
  return result
50
- end
51
-
62
+ end
52
63
  end
53
64
 
54
65
  def data(raw_message)
@@ -7,7 +7,7 @@ module Sapos
7
7
  attr_accessor :printer_config, :verbose
8
8
  end
9
9
 
10
- attr_accessor :pubnub, :printer, :config
10
+ attr_accessor :pubnub, :printer, :config, :printers
11
11
 
12
12
  def self.run!
13
13
  reader = QReader.new
@@ -29,8 +29,14 @@ module Sapos
29
29
  end
30
30
 
31
31
  document = Base64.decode64(msg)
32
-
33
- if !reader.printer.print(document: document, print_control: print_control, document_number: document_number, id: msgid)
32
+
33
+ current_printer = reader.printer
34
+
35
+ if msg['printer'] && reader.printers[msg['printer']]
36
+ current_printer = reader.printers[msg['printer']]
37
+ end
38
+
39
+ if !current_printer.print(document: document, print_control: print_control, document_number: document_number, id: msgid)
34
40
  puts "Printer Error"
35
41
  end
36
42
  rescue => e
@@ -51,6 +57,12 @@ module Sapos
51
57
  def initialize
52
58
  @config = QReader.printer_config
53
59
  @printer = Printer.new(@config)
60
+ @printers = {}
61
+ @config.printers.each do |printer|
62
+ config = @config.dup
63
+ config.printer = printer
64
+ @printers[printer] = Printer.new(config)
65
+ end
54
66
  @pubnub = Pubnub.new(subscribe_key: @config.key, user_id: @config.user_id, ssl: true)
55
67
  end
56
68
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sapos
4
4
  module Print
5
- VERSION = "1.0.9"
5
+ VERSION = "1.1.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sapos-print
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josef Sauter
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-21 00:00:00.000000000 Z
11
+ date: 2023-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor