qr-bills 1.0.7 → 1.0.8

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: d4e0c50076c6306674c5b1c294d5da24aad2338309f43804cc0ece61eaf7d455
4
- data.tar.gz: 4e6b79aab92d32c4dce909d5e7da99f1c6ad130940169abde7d4fba81e7b0854
3
+ metadata.gz: 5ebe1c2b95ed95343f6c469423a8f1771a242f363363b3e15f3057976e1a14c0
4
+ data.tar.gz: 05c5cad9f08d3a835b73b650fba6226822030287be05880319f9f0d94c3994b0
5
5
  SHA512:
6
- metadata.gz: f4e718704b85a1aa0dc9ab40b82418a076671df9c6cabc0256c53373c3b65bbf261157706446dce0015860c6631b3b84c8e57bfc55e762b3d628862ebbb14cea
7
- data.tar.gz: fd9afcd5a8c5e84653ecfce7ca6c0c9201680bb0092d8eae9218a454b1018a34e2f5712a68892504efbe6e988ef5ea8120935043eff67c62d621e2bcc56f63a3
6
+ metadata.gz: aa143fa2bd2f6acca9796f15e99464d704292ceae9381805e34c2d07a1378c212fb5453c5efc15293bcb47de32f9e7391755024cfda3e9fbcb65fe3534136bed
7
+ data.tar.gz: f1297545bb6d81b73c96722a968c5ff78bfacee70b3b507b27432491808e224f3d63e5beb2d57b465f0fa59595fb18c7bab4499cf13c48f0a33afb3dc5fb360f
@@ -1,6 +1,91 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rqrcode'
2
4
 
3
5
  module QRGenerator
6
+ def self.create(params, qrcode_path = nil)
7
+ format = params[:qrcode_format] || 'qrcode_png'
8
+
9
+ case format
10
+ when 'qrcode_png'
11
+ build_qrcode_png(params[:bill_params], qrcode_path)
12
+ when 'png'
13
+ build_png(params[:bill_params])
14
+ when 'svg'
15
+ build_svg(params[:bill_params])
16
+ else
17
+ raise ArgumentError, "#{QRExceptions::NOT_SUPPORTED}: #{format} is not yet supported"
18
+ end
19
+ end
20
+
21
+ def self.build_qrcode_png(bill_params, qrcode_path)
22
+ warn('DEPRECATION WARNING: The qrcode_png format and qrcode_filepath parameter are deprecated and will be removed from qr-bills 1.1 (use png or svg instead)')
23
+
24
+ final_qr = build_png(bill_params)
25
+ final_qr.save(qrcode_path)
26
+ final_qr
27
+ end
28
+
29
+ def self.build_png(bill_params)
30
+ payload = build_payload(bill_params)
31
+ qrcode = RQRCode::QRCode.new(payload, level: 'm')
32
+
33
+ png = qrcode.as_png(
34
+ bit_depth: 1,
35
+ border_modules: 0,
36
+ color_mode: ChunkyPNG::COLOR_GRAYSCALE,
37
+ color: 'black',
38
+ file: nil,
39
+ fill: 'white',
40
+ module_px_size: 10,
41
+ resize_exactly_to: false,
42
+ resize_gte_to: false,
43
+ size: 1024
44
+ )
45
+
46
+ swiss_cross = ChunkyPNG::Image.from_file(File.expand_path("#{File.dirname(__FILE__)}/../../web/assets/images/swiss_cross.png"))
47
+ png.compose!(swiss_cross, (png.width - swiss_cross.width) / 2, (png.height - swiss_cross.height) / 2)
48
+ end
49
+
50
+ def self.build_svg(bill_params)
51
+ payload = build_payload(bill_params)
52
+ qrcode = RQRCode::QRCode.new(payload, level: 'm')
53
+
54
+ # Generate qr code
55
+ svg_code = qrcode.as_svg(
56
+ standalone: true, # return a svg wrapper
57
+ viewbox: true, # return a viewBox so we can extract it
58
+ module_size: 10,
59
+ use_path: true
60
+ )
61
+
62
+ # Parse viewBox and calculate relative swiss cross size / center
63
+ viewbox = svg_code.match(/viewBox="([\s\d]*)"/)[1]
64
+ viewbox_size = viewbox.split(' ')[2].to_f
65
+ swiss_cross_size = viewbox_size / (46.0 / 7.0)
66
+ swiss_cross_center = (viewbox_size / 2.0) - (swiss_cross_size / 2.0)
67
+
68
+ # Parse swiss cross and update size and coordinates
69
+ svg_swiss_cross = File.open(File.expand_path("#{File.dirname(__FILE__)}/../../web/assets/images/swiss_cross.svg")).read
70
+ svg_swiss_cross.gsub!('SWISS_CROSS_SIZE', swiss_cross_size.to_s)
71
+ svg_swiss_cross.gsub!('SWISS_CROSS_CENTER', swiss_cross_center.to_s)
72
+
73
+ # Assemble svg
74
+ svg_code.gsub!(/<path/, '<g>\0')
75
+ svg_code.gsub!(/<\/svg>/, "#{svg_swiss_cross}</g></svg>")
76
+
77
+ # Optimize SVG for being URI-escaped
78
+ # Stolen from Sprockets: https://github.com/rails/sprockets/blob/master/lib/sprockets/context.rb#L277-L293
79
+ #
80
+ # This only performs these basic but crucial optimizations:
81
+ # * Removes comments, meta, doctype, and newlines.
82
+ # * Replaces " with ', because ' does not need escaping.
83
+ svg_code.gsub!(/<!--.*?-->|<\?.*?\?>|<!.*?>/m, '')
84
+ svg_code.gsub!(/([\w:])="(.*?)"/, "\\1='\\2'")
85
+
86
+ svg_code
87
+ end
88
+
4
89
  # payload:
5
90
  # "SPC\r\n" + # indicator for swiss qr code: SPC (swiss payments code)
6
91
  # "0200\r\n" + # version of the specifications, 0200 = v2.0
@@ -35,19 +120,18 @@ module QRGenerator
35
120
  # "EPD\r\n" + # fixed indicator for EPD (end payment data)
36
121
  # "//S1/10/10201409/11/181105/40/0:30\r\n" + # bill information coded for automated booking of payment, data is not forwarded with the payment
37
122
  # "eBill/B/41010560425610173"; # alternative scheme paramaters, max 100 chars
38
-
39
- def self.create(params, qrcode_path)
123
+ def self.build_payload(bill_params)
40
124
  payload = "SPC\r\n"
41
125
  payload += "0200\r\n"
42
126
  payload += "1\r\n"
43
- payload += "#{params[:bill_params][:creditor][:iban].delete(' ')}\r\n"
44
- payload += "#{params[:bill_params][:creditor][:address][:type]}\r\n"
45
- payload += "#{params[:bill_params][:creditor][:address][:name]}\r\n"
46
- payload += "#{params[:bill_params][:creditor][:address][:line1]}\r\n"
47
- payload += "#{params[:bill_params][:creditor][:address][:line2]}\r\n"
48
- payload += "#{params[:bill_params][:creditor][:address][:postal_code]}\r\n"
49
- payload += "#{params[:bill_params][:creditor][:address][:town]}\r\n"
50
- payload += "#{params[:bill_params][:creditor][:address][:country]}\r\n"
127
+ payload += "#{bill_params[:creditor][:iban].delete(' ')}\r\n"
128
+ payload += "#{bill_params[:creditor][:address][:type]}\r\n"
129
+ payload += "#{bill_params[:creditor][:address][:name]}\r\n"
130
+ payload += "#{bill_params[:creditor][:address][:line1]}\r\n"
131
+ payload += "#{bill_params[:creditor][:address][:line2]}\r\n"
132
+ payload += "#{bill_params[:creditor][:address][:postal_code]}\r\n"
133
+ payload += "#{bill_params[:creditor][:address][:town]}\r\n"
134
+ payload += "#{bill_params[:creditor][:address][:country]}\r\n"
51
135
  payload += "\r\n"
52
136
  payload += "\r\n"
53
137
  payload += "\r\n"
@@ -55,39 +139,20 @@ module QRGenerator
55
139
  payload += "\r\n"
56
140
  payload += "\r\n"
57
141
  payload += "\r\n"
58
- payload += "#{format('%.2f', params[:bill_params][:amount])}\r\n"
59
- payload += "#{params[:bill_params][:currency]}\r\n"
60
- payload += "#{params[:bill_params][:debtor][:address][:type]}\r\n"
61
- payload += "#{params[:bill_params][:debtor][:address][:name]}\r\n"
62
- payload += "#{params[:bill_params][:debtor][:address][:line1]}\r\n"
63
- payload += "#{params[:bill_params][:debtor][:address][:line2]}\r\n"
64
- payload += "#{params[:bill_params][:debtor][:address][:postal_code]}\r\n"
65
- payload += "#{params[:bill_params][:debtor][:address][:town]}\r\n"
66
- payload += "#{params[:bill_params][:debtor][:address][:country]}\r\n"
67
- payload += "#{params[:bill_params][:reference_type]}\r\n"
68
- payload += "#{params[:bill_params][:reference].delete(' ')}\r\n"
69
- payload += "#{params[:bill_params][:additionally_information]}\r\n"
142
+ payload += "#{format('%.2f', bill_params[:amount])}\r\n"
143
+ payload += "#{bill_params[:currency]}\r\n"
144
+ payload += "#{bill_params[:debtor][:address][:type]}\r\n"
145
+ payload += "#{bill_params[:debtor][:address][:name]}\r\n"
146
+ payload += "#{bill_params[:debtor][:address][:line1]}\r\n"
147
+ payload += "#{bill_params[:debtor][:address][:line2]}\r\n"
148
+ payload += "#{bill_params[:debtor][:address][:postal_code]}\r\n"
149
+ payload += "#{bill_params[:debtor][:address][:town]}\r\n"
150
+ payload += "#{bill_params[:debtor][:address][:country]}\r\n"
151
+ payload += "#{bill_params[:reference_type]}\r\n"
152
+ payload += "#{bill_params[:reference].delete(' ')}\r\n"
153
+ payload += "#{bill_params[:additionally_information]}\r\n"
70
154
  payload += "EPD\r\n"
71
- payload += "#{params[:bill_params][:bill_information_coded]}\r\n"
72
- payload += "#{params[:bill_params][:alternative_scheme_parameters]}\r\n"
73
-
74
- qrcode = RQRCode::QRCode.new(payload, level: 'm')
75
-
76
- png = qrcode.as_png(
77
- bit_depth: 1,
78
- border_modules: 0,
79
- color_mode: ChunkyPNG::COLOR_GRAYSCALE,
80
- color: 'black',
81
- file: nil,
82
- fill: 'white',
83
- module_px_size: 10,
84
- resize_exactly_to: false,
85
- resize_gte_to: false,
86
- size: 1024,
87
- )
88
-
89
- swiss_cross = ChunkyPNG::Image.from_file(File.expand_path("#{File.dirname(__FILE__)}/../../web/assets/images/swiss_cross.png"))
90
- final_qr = png.compose!(swiss_cross, (png.width - swiss_cross.width) / 2, (png.height - swiss_cross.height) / 2)
91
- final_qr.save(qrcode_path)
155
+ payload += "#{bill_params[:bill_information_coded]}\r\n"
156
+ payload += "#{bill_params[:alternative_scheme_parameters]}\r\n"
92
157
  end
93
- end
158
+ end
@@ -1,10 +1,28 @@
1
1
  require 'qr-bills/qr-generator'
2
2
 
3
3
  module QRHTMLLayout
4
-
5
4
  def self.create(params)
6
- QRGenerator.create(params, params[:qrcode_filepath])
7
- return html_layout(params)
5
+ qrcode = QRGenerator.create(params, params[:qrcode_filepath])
6
+ params[:qrcode_filepath] = convert_qrcode_to_data_url(qrcode)
7
+ html_layout(params)
8
+ end
9
+
10
+ def self.convert_qrcode_to_data_url(qrcode)
11
+ case qrcode
12
+ when ChunkyPNG::Image
13
+ qrcode.to_data_url
14
+ else
15
+ # Stolen from sprockets
16
+ # https://github.com/rails/sprockets/blob/0f3e0e93dabafa8f3027e8036e40fd08902688c8/lib/sprockets/context.rb#L295-L303
17
+ data = CGI.escape(qrcode)
18
+ data.gsub!('%3D', '=')
19
+ data.gsub!('%3A', ':')
20
+ data.gsub!('%2F', '/')
21
+ data.gsub!('%27', "'")
22
+ data.tr!('+', ' ')
23
+
24
+ "data:image/svg+xml;charset=utf-8,#{data}"
25
+ end
8
26
  end
9
27
 
10
28
  def self.html_layout(params)
@@ -22,11 +40,11 @@ module QRHTMLLayout
22
40
  layout += " <div><br/></div>\n"
23
41
 
24
42
  if !params[:bill_params][:reference].nil? && !params[:bill_params][:reference].empty?
25
- layout += " <div class=\"subtitle reference\">#{I18n.t("qrbills.reference").capitalize}</div>\n"
26
- layout += " <div class=\"reference\">\n"
27
- layout += " #{params[:bill_params][:reference]}<br/>\n"
28
- layout += " </div>\n"
29
- layout += " <div><br/></div>\n"
43
+ layout += " <div class=\"subtitle reference\">#{I18n.t("qrbills.reference").capitalize}</div>\n"
44
+ layout += " <div class=\"reference\">\n"
45
+ layout += " #{params[:bill_params][:reference]}<br/>\n"
46
+ layout += " </div>\n"
47
+ layout += " <div><br/></div>\n"
30
48
  end
31
49
 
32
50
  layout += " <div class=\"subtitle payable_by\">#{I18n.t("qrbills.payable_by").capitalize}</div>\n"
@@ -47,11 +65,11 @@ module QRHTMLLayout
47
65
  layout += " #{format('%.2f', params[:bill_params][:amount])}<br/>\n"
48
66
  layout += " </div>\n"
49
67
  layout += " </div>\n"
50
-
68
+
51
69
  layout += " <div class=\"acceptance_point\">\n"
52
70
  layout += " #{I18n.t("qrbills.acceptance_point").capitalize}<br/>\n"
53
71
  layout += " </div>\n"
54
-
72
+
55
73
  layout += " </div>\n"
56
74
  layout += " <div class=\"payment_section\">\n"
57
75
  layout += " <div class=\"left_column\">\n"
@@ -62,21 +80,21 @@ module QRHTMLLayout
62
80
  layout += " <span class=\"amount_header subtitle\">#{I18n.t("qrbills.currency").capitalize}</span><br/>\n"
63
81
  layout += " #{params[:bill_params][:currency]}<br/>\n"
64
82
  layout += " </div>\n"
65
-
83
+
66
84
  layout += " <div class=\"amount_value\">\n"
67
85
  layout += " <span class=\"amount_header subtitle\">#{I18n.t("qrbills.amount").capitalize}</span><br/>\n"
68
86
  layout += " #{format('%.2f',params[:bill_params][:amount])}<br/>\n"
69
87
  layout += " </div>\n"
70
88
  layout += " </div>\n"
71
-
89
+
72
90
  layout += " <div class=\"further_information\">\n"
73
91
 
74
92
  if !params[:bill_params][:bill_information_coded].nil? && !params[:bill_params][:bill_information_coded].empty?
75
- layout += " <span class=\"finfo_header\">#{I18n.t("qrbills.name").capitalize} AV1:</span> #{params[:bill_params][:bill_information_coded]}\n"
93
+ layout += " <span class=\"finfo_header\">#{I18n.t("qrbills.name").capitalize} AV1:</span> #{params[:bill_params][:bill_information_coded]}\n"
76
94
  end
77
-
95
+
78
96
  if !params[:bill_params][:alternative_scheme_parameters].nil? && !params[:bill_params][:alternative_scheme_parameters].empty?
79
- layout += " <span class=\"finfo_header\">#{I18n.t("qrbills.name").capitalize} AV2:</span> #{params[:bill_params][:alternative_scheme_parameters]}\n"
97
+ layout += " <span class=\"finfo_header\">#{I18n.t("qrbills.name").capitalize} AV2:</span> #{params[:bill_params][:alternative_scheme_parameters]}\n"
80
98
  end
81
99
 
82
100
  layout += " </div>\n"
@@ -92,19 +110,19 @@ module QRHTMLLayout
92
110
  layout += " <div><br/></div>\n"
93
111
 
94
112
  if !params[:bill_params][:reference].nil? && !params[:bill_params][:reference].empty?
95
- layout += " <div class=\"subtitle reference\">#{I18n.t("qrbills.reference").capitalize}</div>\n"
96
- layout += " <div class=\"reference\">\n"
97
- layout += " #{params[:bill_params][:reference]}<br/>\n"
98
- layout += " </div>\n"
99
- layout += " <div><br/></div>\n"
113
+ layout += " <div class=\"subtitle reference\">#{I18n.t("qrbills.reference").capitalize}</div>\n"
114
+ layout += " <div class=\"reference\">\n"
115
+ layout += " #{params[:bill_params][:reference]}<br/>\n"
116
+ layout += " </div>\n"
117
+ layout += " <div><br/></div>\n"
100
118
  end
101
119
 
102
120
  if !params[:bill_params][:additionally_information].nil? && !params[:bill_params][:additionally_information].empty?
103
- layout += " <div class=\"subtitle additional_information\">#{I18n.t("qrbills.additional_information").capitalize}</div>\n"
104
- layout += " <div class=\"additional_information\">\n"
105
- layout += " #{params[:bill_params][:additionally_information]}<br/>\n"
106
- layout += " </div>\n"
107
- layout += " <div><br/></div>\n"
121
+ layout += " <div class=\"subtitle additional_information\">#{I18n.t("qrbills.additional_information").capitalize}</div>\n"
122
+ layout += " <div class=\"additional_information\">\n"
123
+ layout += " #{params[:bill_params][:additionally_information]}<br/>\n"
124
+ layout += " </div>\n"
125
+ layout += " <div><br/></div>\n"
108
126
  end
109
127
 
110
128
  layout += " <div class=\"subtitle payable_by\">#{I18n.t("qrbills.payable_by").capitalize}</div>\n"
@@ -116,7 +134,7 @@ module QRHTMLLayout
116
134
  layout += " </div>\n"
117
135
  layout += " </div>\n"
118
136
  layout += "</div>\n"
119
-
137
+
120
138
  layout += "<style>\n"
121
139
  layout += " @font-face{ \n"
122
140
  layout += " font-family: \"liberation_sansregular\";\n"
@@ -135,13 +153,13 @@ module QRHTMLLayout
135
153
  layout += " font-family: \"liberation_sansregular\";\n"
136
154
  layout += " border: 1px solid #ccc;\n"
137
155
  layout += " }\n"
138
-
156
+
139
157
  layout += " .bill_container:after {\n"
140
158
  layout += " content: \"\";\n"
141
159
  layout += " display: table;\n"
142
160
  layout += " clear: both;\n"
143
161
  layout += " }\n"
144
-
162
+
145
163
  layout += " .receipt_section {\n"
146
164
  layout += " width: 52mm;\n"
147
165
  layout += " height: 95mm;\n"
@@ -150,7 +168,7 @@ module QRHTMLLayout
150
168
  layout += " font-size: 8pt;\n"
151
169
  layout += " border-right: 1px dotted #ccc;\n"
152
170
  layout += " }\n"
153
-
171
+
154
172
  layout += " .payment_section {\n"
155
173
  layout += " width: 137mm;\n"
156
174
  layout += " height: 95mm;\n"
@@ -158,51 +176,51 @@ module QRHTMLLayout
158
176
  layout += " padding: 5mm;\n"
159
177
  layout += " font-size: 10pt;\n"
160
178
  layout += " }\n"
161
-
179
+
162
180
  layout += " .payment_section .left_column {\n"
163
181
  layout += " height: 95mm;\n"
164
182
  layout += " width: 46mm;\n"
165
183
  layout += " float: left;\n"
166
184
  layout += " margin-right: 5mm;\n"
167
185
  layout += " }\n"
168
-
186
+
169
187
  layout += " .payment_section .right_column {\n"
170
188
  layout += " height: 95mm;\n"
171
189
  layout += " width: 86mm;\n"
172
190
  layout += " float: left;\n"
173
191
  layout += " }\n"
174
-
192
+
175
193
  layout += " .qr_code {\n"
176
194
  layout += " padding: 5mm 0mm 5mm 0mm;\n"
177
195
  layout += " height: 46mm;\n"
178
196
  layout += " width: 46mm;\n"
179
197
  layout += " }\n"
180
-
198
+
181
199
  layout += " .qr_code img {\n"
182
200
  layout += " height: 46mm;\n"
183
201
  layout += " width: 46mm;\n"
184
202
  layout += " }\n"
185
-
203
+
186
204
  layout += " .amount {\n"
187
205
  layout += " margin-top: 15px;\n"
188
206
  layout += " }\n"
189
-
207
+
190
208
  layout += " .amount .currency {\n"
191
209
  layout += " float: left;\n"
192
210
  layout += " margin-right: 15px;\n"
193
211
  layout += " }\n"
194
-
212
+
195
213
  layout += " .title {\n"
196
214
  layout += " font-weight: bold;\n"
197
215
  layout += " font-size: 11pt;\n"
198
216
  layout += " }\n"
199
-
217
+
200
218
  layout += " .receipt_section .subtitle {\n"
201
219
  layout += " font-weight: bold;\n"
202
220
  layout += " font-size: 6pt;\n"
203
221
  layout += " line-height: 9pt;\n"
204
222
  layout += " }\n"
205
-
223
+
206
224
  layout += " .receipt_section .acceptance_point {\n"
207
225
  layout += " font-weight: bold;\n"
208
226
  layout += " text-align: right;\n"
@@ -210,13 +228,13 @@ module QRHTMLLayout
210
228
  layout += " line-height: 8pt;\n"
211
229
  layout += " padding-top: 5mm;\n"
212
230
  layout += " }\n"
213
-
231
+
214
232
  layout += " .payment_section .subtitle {\n"
215
233
  layout += " font-weight: bold;\n"
216
234
  layout += " font-size: 8pt;\n"
217
235
  layout += " line-height: 11pt;\n"
218
236
  layout += " }\n"
219
-
237
+
220
238
  layout += " .payment_section .amount {\n"
221
239
  layout += " height: 22mm;\n"
222
240
  layout += " margin-top: 40px;\n"
@@ -225,13 +243,13 @@ module QRHTMLLayout
225
243
  layout += " .payment_section .further_information {\n"
226
244
  layout += " font-size: 7pt;\n"
227
245
  layout += " }\n"
228
-
246
+
229
247
  layout += " .payment_section .finfo_header {\n"
230
248
  layout += " font-weight: bold;\n"
231
249
  layout += " } \n"
232
250
  layout += "</style>\n"
233
251
 
234
- return layout
252
+ layout
235
253
  end
236
254
  end
237
255
  end
@@ -6,7 +6,8 @@ module QRParams
6
6
  def self.get_qr_params
7
7
  {
8
8
  bill_type: "", # see global variables / README
9
- qrcode_filepath: "", # where to store the qrcode, i.e. : /tmp/qrcode_1234.png
9
+ qrcode_format: nil, # png or svg, overwrites qrcode_filepath
10
+ qrcode_filepath: "", # deprecated, where to store the qrcode, i.e. : /tmp/qrcode_1234.png
10
11
  fonts: {
11
12
  eot: File.expand_path("#{File.dirname(__FILE__)}/../../web/assets/fonts/LiberationSans-Regular.eot"),
12
13
  woff: File.expand_path("#{File.dirname(__FILE__)}/../../web/assets/fonts/LiberationSans-Regular.woff"),
@@ -67,7 +68,7 @@ module QRParams
67
68
  when QRParams::QR_BILL_WITHOUT_REFERENCE
68
69
  QRParams.qr_bill_without_reference_valid?(params)
69
70
  else
70
- false
71
+ raise ArgumentError, "#{QRExceptions::INVALID_PARAMETERS}: bill type is not supported"
71
72
  end
72
73
  end
73
74
 
@@ -76,11 +77,7 @@ module QRParams
76
77
  raise ArgumentError, "#{QRExceptions::INVALID_PARAMETERS}: bill type cannot be blank"
77
78
  end
78
79
 
79
- if params[:qrcode_filepath] == "" || params[:qrcode_filepath] == nil
80
- raise ArgumentError, "#{QRExceptions::INVALID_PARAMETERS}: qrcode_filepath cannot be blank"
81
- end
82
-
83
- if params[:bill_params][:currency] == "" || params[:bill_params][:currency] == nil
80
+ if params.dig(:bill_params, :currency) == "" || params.dig(:bill_params, :currency) == nil
84
81
  raise ArgumentError, "#{QRExceptions::INVALID_PARAMETERS}: currency cannot be blank"
85
82
  end
86
83
 
data/lib/qr-bills.rb CHANGED
@@ -17,13 +17,11 @@ module QRBills
17
17
  end
18
18
 
19
19
  output = case qr_params[:output_params][:format]
20
- when 'html'
21
- QRHTMLLayout.create(qr_params)
22
- when 'qrcode_png'
23
- QRGenerator.create(qr_params, qr_params[:qrcode_filepath])
24
- else
25
- raise ArgumentError, "#{QRExceptions::NOT_SUPPORTED}: #{qr_params[:output_params][:format]} is not yet supported"
26
- end
20
+ when 'html'
21
+ QRHTMLLayout.create(qr_params)
22
+ else
23
+ QRGenerator.create(qr_params, qr_params[:qrcode_filepath])
24
+ end
27
25
 
28
26
  { params: qr_params, output: output }
29
27
  end
@@ -0,0 +1 @@
1
+ <svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='SWISS_CROSS_CENTER' y='SWISS_CROSS_CENTER' width='SWISS_CROSS_SIZE' height='SWISS_CROSS_SIZE' viewBox='0 0 19.8 19.8' style='enable-background:new 0 0 19.8 19.8;' xml:space='preserve'><style type='text/css'>.st0{fill:#FFFFFF;}.st1{fill:none;stroke:#FFFFFF;stroke-width:1.4357;stroke-miterlimit:10;}</style><polygon points='18.3,0.7 1.6,0.7 0.7,0.7 0.7,1.6 0.7,18.3 0.7,19.1 1.6,19.1 18.3,19.1 19.1,19.1 19.1,18.3 19.1,1.6 19.1,0.7'/><rect x='8.3' y='4' class='st0' width='3.3' height='11'/><rect x='4.4' y='7.9' class='st0' width='11' height='3.3'/><polygon class='st1' points='0.7,1.6 0.7,18.3 0.7,19.1 1.6,19.1 18.3,19.1 19.1,19.1 19.1,18.3 19.1,1.6 19.1,0.7 18.3,0.7 1.6,0.7 0.7,0.7'/></svg>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qr-bills
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damiano Radice
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-14 00:00:00.000000000 Z
11
+ date: 2022-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -36,20 +36,20 @@ dependencies:
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 1.1.2
39
+ version: '2.1'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '2'
42
+ version: '3'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 1.1.2
49
+ version: '2.1'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '2'
52
+ version: '3'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: rspec
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -78,6 +78,34 @@ dependencies:
78
78
  - - "~>"
79
79
  - !ruby/object:Gem::Version
80
80
  version: '13.0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: pry
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: byebug
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
81
109
  description: 'QR-bills support for swiss payments, for full documentation please refer
82
110
  to github repo: https://github.com/damoiser/qr-bills'
83
111
  email: dam.radice@gmail.com
@@ -103,6 +131,7 @@ files:
103
131
  - web/assets/images/payable_by_65x25mm.png
104
132
  - web/assets/images/scissors_symbol.png
105
133
  - web/assets/images/swiss_cross.png
134
+ - web/assets/images/swiss_cross.svg
106
135
  homepage: https://github.com/damoiser/qr-bills
107
136
  licenses:
108
137
  - MIT