thecore_print_commons 2.1.2 → 2.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9d1b92c4037ed26563a1e1d0e5f25f227031ff4c0a8e53dc10f17eedb99b10f5
4
- data.tar.gz: deacf2f9bbcd581b3b333aac24ed4e70dd257f86f5dad91adad804be6a9e245b
3
+ metadata.gz: b3d14d2d7122107560e3483a45aaab2f69efb513fae2f2c4368f996e79b61067
4
+ data.tar.gz: 69c327df788227be6659c6a6dd7ddcfda0af077bc18b82fb177b20ae3046a8f2
5
5
  SHA512:
6
- metadata.gz: b0b8a1316816c8f56fc18b7e16044c97ae191c98f5f269c5839bf273e7ac6e031caf04e18b212184269f7511ff907759903d4b28f595b0bc10d86fe812e84497
7
- data.tar.gz: 07e92ae60c6d391b40220e21e349bf14635b45e1fb2344c8008ac0c1dae72a5ddc4abd8407c5f2107ab3bf0d15b2c45389d5d24db2eea3382686f66c4e1ca4c5
6
+ metadata.gz: 9841914519bfb9b77f1dd53c2f4ffcc344e411f083830a5104101be69b5ee4821636203d0c9a77cd09a7d39209b43a43098b4965236fa1f823ee6a365501c6f1
7
+ data.tar.gz: 826d5bd6e22ef43312e244b63ce864b6223b836f0f3ae4612516d555943b6760385b6839735f8445f96f90694bd5390c5980dbf8a42b0be87847b787aa7fc809
@@ -41,5 +41,37 @@ module Api::Printer
41
41
  ::PrintWorker.perform_async(printer.ip, printer.port, text)
42
42
  { info: "Print job sent in background to #{printer.ip} on port #{printer.port}" }
43
43
  end
44
+
45
+ def self.custom_action_printer_status params
46
+ printer = Printer.find(params[:id])
47
+ ip = printer.ip
48
+ port = printer.port
49
+ begin
50
+ s = Socket.tcp ip, port, connect_timeout: 0.5
51
+ # Must create intepolation between item and template
52
+ # Printer.template può essere anche
53
+ # una parola di comando epr chiedere lo stato della stampante, solo nel caso sia ok,
54
+ # Allora mando la stampa
55
+ s.puts("~hs")
56
+ # Attende per la risposta (si mette in wait)
57
+ response = []
58
+ while (response_text = s.gets)
59
+ response << response_text
60
+ break if response.count == 3
61
+ end
62
+ s.close
63
+ # Rails.logger.info "PrintIt: RESPONSE: #{response.inspect}"
64
+ first = response[0].split(",")
65
+ second = response[1].split(",")
66
+ return "HEAD UP" if second[2].to_i == 1
67
+ return "RIBBON OUT" if second[3].to_i == 1
68
+ return "PAPER OUT" if first[1].to_i == 1
69
+ return "PAUSE" if first[2].to_i == 1
70
+ return "OK"
71
+ rescue
72
+ Rails.logger.info "PrintIt: STATUS: UNREACHABLE"
73
+ return "UNREACHABLE"
74
+ end
75
+ end
44
76
  end
45
77
  end
@@ -55,18 +55,11 @@ class Printer < ApplicationRecord
55
55
 
56
56
  def online?
57
57
  begin
58
- Socket.tcp(self.ip, 9100, connect_timeout: 0.5).close
58
+ Socket.tcp(self.ip, self.port, connect_timeout: 0.5).close
59
59
  rescue
60
60
  return false
61
61
  end
62
62
  true
63
63
  end
64
-
65
-
66
- # private
67
- # def check_if_unique_default
68
- # if self.default?
69
- # Printer.where.not(id: self.id)
70
- # end
71
- # end
64
+
72
65
  end
@@ -7,73 +7,13 @@ class PrintWorker
7
7
  # ZPL print
8
8
  def perform ip, port, text
9
9
  @pjob = PrintJob.create(printer_id: Printer.find_by(ip: ip), finished: false, iserror: false, total: 0, printed: 0)
10
- status = check_status(ip)
11
- print_job_status = false
12
- if status == "OK"
13
- begin
14
- streamSock = TCPSocket.new ip, port
15
- streamSock.send text, 0
16
- streamSock.close
17
- print_job_status = true
18
- rescue
19
- @pjob.update(iserror: true, description: "PRINTER ERROR: TIMEOUT")
20
- print_job_status = false
21
- end
22
- else
23
- @pjob.update(iserror: true, description: "PRINTER ERROR: #{status}")
24
- print_job_status = false
25
- end
10
+ streamSock = Socket.tcp ip, port, connect_timeout: 0.5
11
+ streamSock.send text, 0
12
+ streamSock.close
26
13
  # '~hs alla posizione 56 per 8 caratteri la quantità di etichette rimaste'
27
14
  total = text.scan(/~PQ(\d+)/).last.first.to_i rescue 0
28
- @pjob.update(printed: (print_job_status ? total : 0)) # Se risultato true, allora ha stampato tutto, altrimenti non ha stampato nulla
15
+ @pjob.update(printed: total) # Se risultato true, allora ha stampato tutto, altrimenti non ha stampato nulla
29
16
  @pjob.update(total: total) # In realtà è inutile, ora manda tutto quello che può alla stampante, solo lei può andare storta
30
- @pjob.update(finished: print_job_status)
17
+ @pjob.update(finished: true)
31
18
  end
32
-
33
- def check_status printer
34
- begin
35
- s = TCPSocket.new(printer, 9100)
36
- # Must create intepolation between item and template
37
- # Printer.template può essere anche
38
- # una parola di comando epr chiedere lo stato della stampante, solo nel caso sia ok,
39
- # Allora mando la stampa
40
- s.puts("~hs")
41
- # Attende per la risposta (si mette in wait)
42
- response = []
43
- while (response_text = s.gets)
44
- response << response_text
45
- break if response.count == 3
46
- end
47
- s.close
48
- Rails.logger.info "PrintIt: RESPONSE: #{response.inspect}"
49
- first = response[0].split(",")
50
- second = response[1].split(",")
51
- return "HEAD UP" if second[2].to_i == 1
52
- return "RIBBON OUT" if second[3].to_i == 1
53
- return "PAPER OUT" if first[1].to_i == 1
54
- return "PAUSE" if first[2].to_i == 1
55
- return "OK"
56
- rescue
57
- Rails.logger.info "PrintIt: STATUS: UNREACHABLE"
58
- return "UNREACHABLE"
59
- end
60
- end
61
-
62
- # This is for cups only
63
- # def perform printer_cups_name, text
64
- # # if Settings.ns(:printer_commons).cups_server.blank? || ['127.0.0.1', 'localhost'].contains(Settings.ns(:printer_commons).cups_server)
65
- # # printer = CupsPrinter.new printer_cups_name
66
- # # printer.print_data text, 'text/plain'
67
- # # printer.close
68
- # # else
69
- # print_file = "/tmp/print-#{printer_cups_name}-#{Time.now.strftime '%Y%m%d%H%M%S%L'}"
70
- # puts "Creating temp file: #{print_file}"
71
- # IO.write(print_file, text)
72
- # # CupsPrinter.new printer_cups_name, hostname: Settings.ns(:printer_commons).cups_server
73
- # # printer.print_data text, 'text/plain', hostname: Settings.ns(:printer_commons).cups_server
74
- # puts "Printing with lp command on #{printer_cups_name} of #{Settings.ns(:printer_commons).cups_server} "
75
- # `cupsenable "#{printer_cups_name}";lp -d "#{printer_cups_name}" -h "#{Settings.ns(:printer_commons).cups_server}" -o raw "#{print_file}"`
76
- # File.delete print_file
77
- # # end
78
- # end
79
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thecore_print_commons
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriele Tassoni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-16 00:00:00.000000000 Z
11
+ date: 2021-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thecore_background_jobs