qrcode_pix_ruby 0.3.3 → 0.3.4

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: 52492ab7a9acf126608e98b81527ed1dace5f8acd90519b5caee3c555e43a9f0
4
- data.tar.gz: 295667fb9a0927cb28d8969629b72d2ded040ed6d99d26009de22fa51c5b6508
3
+ metadata.gz: 52e5a20fafc6b73338560780df06dd35cd0a458e29fe8e3a2a401b723a59a301
4
+ data.tar.gz: 8a3307288998e027a9aec36113a7b8dd4d543e97663c60ffd9fda0b6ba99e880
5
5
  SHA512:
6
- metadata.gz: 4fc1af95bea11a989799aa457fe2c54e8c782e4428dc1efc0f9911dd9e9e0ed0433bebcef29ee2cf76bd17f7a6cf9a54ac58e5e8a862ab3b0df30f31a88444eb
7
- data.tar.gz: ce85d33b412995d7a8ef16b08a704c184cb7c73d57a35520d12d3957921172546dfe3dac5298cccaa5050fcf8a7151f688521f90366bf93b3d8c56b2b0400c73
6
+ metadata.gz: 6131ff1fabc61f1f3c51fae3ffdf93e6297eddefc98341e25b36bb8de84ca64f7570d62219eaf2ad21a83ac37b4bd762acd93624031e0b835e5faa84b8fe1aa1
7
+ data.tar.gz: 9bf41ca90b8a2213264cf7e2ec89f83c959a0ad6c98052624f16ec94ddc6b477b61160f545c7b9243d138ab5e07061f51aa80068f2a5205d7c31b8b1322627a9
@@ -3,7 +3,7 @@ name: CI
3
3
  on: [push, pull_request]
4
4
 
5
5
  jobs:
6
- ci:
6
+ tests:
7
7
  runs-on: ubuntu-latest
8
8
  strategy:
9
9
  matrix:
@@ -0,0 +1,44 @@
1
+ name: Publish to Heroku
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+
7
+ jobs:
8
+ deploy:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v2
12
+
13
+ - name: Install Ruby
14
+ uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: 3.0
17
+
18
+ - name: Install dependencies
19
+ run: |
20
+ cd demo/
21
+ bundle update qrcode_pix_ruby
22
+ cd ../
23
+
24
+ - name: Define Heroku credentials
25
+ run: |
26
+ cat > ~/.netrc <<EOF
27
+ machine api.heroku.com
28
+ login $HEROKU_EMAIL
29
+ password $HEROKU_API_KEY
30
+ machine git.heroku.com
31
+ login $HEROKU_EMAIL
32
+ password $HEROKU_API_KEY
33
+ EOF
34
+ env:
35
+ HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
36
+ HEROKU_EMAIL: ${{ secrets.HEROKU_EMAIL }}
37
+
38
+ - name: Define Heroku git remote
39
+ run: heroku git:remote --app $HEROKU_APP_NAME
40
+ env:
41
+ HEROKU_APP_NAME: ${{ secrets.HEROKU_APP_NAME }}
42
+
43
+ - name: Publish to Heroku
44
+ run: git push heroku `git subtree split --prefix demo master`:master --force
@@ -5,7 +5,7 @@ on:
5
5
  types: [created]
6
6
 
7
7
  jobs:
8
- publish-to-rubygems:
8
+ deploy:
9
9
  runs-on: ubuntu-latest
10
10
  steps:
11
11
  - uses: actions/checkout@v2
data/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  *.lock
3
3
  *.gem
4
4
  coverage/
5
+ *.log
data/.rubocop.yml CHANGED
@@ -3,6 +3,7 @@ AllCops:
3
3
  SuggestExtensions: false
4
4
  Exclude:
5
5
  - spec/*
6
+ - demo/*
6
7
 
7
8
  Layout/LineLength:
8
9
  Max: 120
@@ -26,3 +27,9 @@ Metrics/BlockNesting:
26
27
 
27
28
  Style/IfUnlessModifier:
28
29
  Enabled: false
30
+
31
+ Metrics/CyclomaticComplexity:
32
+ Enabled: false
33
+
34
+ Metrics/PerceivedComplexity:
35
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.3.4] - 2021-06-28
4
+
5
+ - Fix behavior of EMV field 'repeatable' (the logic was inversed)
6
+
3
7
  ## [0.3.3] - 2021-06-25
4
8
 
5
9
  - Rubocop setup
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2021 TODO: Write your name
3
+ Copyright (c)
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  Ruby gem for Qrcode generation of Pix (Pagamento Instantâneo Brasileiro - Banco Central do Brasil).
13
13
 
14
- <img src="https://github.com/pedrofurtado/qrcode_pix_ruby/blob/master/pix_logo.png?raw=true" height="100px" />
14
+ <img style="max-width: 100%;" src="https://github.com/pedrofurtado/qrcode_pix_ruby/blob/master/pix_logo.png?raw=true" height="100px" />
15
15
 
16
16
  ## Installation
17
17
 
@@ -74,6 +74,7 @@ puts pix.base64
74
74
  * https://www.bcb.gov.br/estabilidadefinanceira/pix
75
75
  * https://gerencianet.com.br/blog/qr-code-estatico-qr-code-dinamico-no-pix
76
76
  * https://blog.juno.com.br/pix-qr-code-estatico-x-qr-code-dinamico
77
+ * https://github.com/entria/awesome-pix
77
78
 
78
79
  ## Execute tests/specs
79
80
 
@@ -90,6 +91,14 @@ docker build -t qrcode_pix_ruby_specs .
90
91
  docker run -v $(pwd):/app/ -it qrcode_pix_ruby_specs
91
92
  ```
92
93
 
94
+ ## Demo
95
+
96
+ It's provided a simple demo app, in Heroku, that uses the gem always in latest stable. You can check and test your QRCodes here:
97
+
98
+ https://qrcode-pix-ruby.herokuapp.com
99
+
100
+ 🚨 Important note: The first page load can be slow, because of Heroku free tier. But don't worry, the demo works well 🤓
101
+
93
102
  ## Contributing
94
103
 
95
104
  Bug reports and pull requests are welcome on GitHub at https://github.com/pedrofurtado/qrcode_pix_ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/pedrofurtado/qrcode_pix_ruby/blob/master/CODE_OF_CONDUCT.md).
data/demo/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+ gem 'qrcode_pix_ruby'
5
+ gem 'rack'
data/demo/config.ru ADDED
@@ -0,0 +1,148 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'qrcode_pix_ruby'
4
+
5
+ def generate_html_with(env)
6
+ qrcode_data = Rack::Request.new(env).params
7
+ payload = ''
8
+ data_uri = ''
9
+ pix = QrcodePixRuby::Payload.new
10
+
11
+ unless qrcode_data.empty?
12
+ pix.pix_key = qrcode_data['pix_key'] unless qrcode_data['pix_key'].nil?
13
+ pix.description = qrcode_data['description'] unless qrcode_data['description'].nil?
14
+ pix.merchant_name = qrcode_data['merchant_name'] unless qrcode_data['merchant_name'].nil?
15
+ pix.merchant_city = qrcode_data['merchant_city'] unless qrcode_data['merchant_city'].nil?
16
+ pix.transaction_id = qrcode_data['transaction_id'] unless qrcode_data['transaction_id'].nil?
17
+ pix.amount = qrcode_data['amount'] unless qrcode_data['amount'].nil?
18
+ pix.currency = qrcode_data['currency'] unless qrcode_data['currency'].nil?
19
+ pix.country_code = qrcode_data['country_code'] unless qrcode_data['country_code'].nil?
20
+ pix.postal_code = qrcode_data['postal_code'] unless qrcode_data['postal_code'].nil?
21
+ pix.repeatable = qrcode_data['repeatable'] == 't' unless qrcode_data['repeatable'].nil?
22
+
23
+ payload = <<-HTML
24
+ <label for='payload'>Payload</label>
25
+ <div class='input-group mb-3'>
26
+ <input class='form-control' id='payload' value='#{pix.payload}'>
27
+ <button class='btn btn-outline-success btn-clipboard' data-clipboard-target='#payload' data-bs-toggle='tooltip' data-bs-placement='top' title='Copied!' data-bs-trigger='click'>Copy</button>
28
+ </div>
29
+ HTML
30
+
31
+ data_uri = "<img style='max-width: 100%;' src='#{pix.base64}'>"
32
+ end
33
+
34
+ StringIO.new <<-HTML
35
+ <!DOCTYPE html>
36
+ <html>
37
+ <head>
38
+ <meta charset='utf-8'>
39
+ <meta name='viewport' content='width=device-width, initial-scale=1'>
40
+ <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css' rel='stylesheet'>
41
+ <script src='https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js'></script>
42
+ <script src='https://cdn.jsdelivr.net/npm/clipboard@2.0.8/dist/clipboard.min.js'></script>
43
+ <title>QRCode Pix Ruby - Demo App</title>
44
+ </head>
45
+ <body>
46
+ <div class='container' style='margin-top: 50px;'>
47
+ <div class='row'>
48
+ <div class='col-md-12'>
49
+ <h1 class='text-center'>QRCode Pix Ruby - Demo App</h1>
50
+ <br>
51
+ <img style='display: block; margin: 0 auto; max-width: 100%;' src="https://github.com/pedrofurtado/qrcode_pix_ruby/blob/master/pix_logo.png?raw=true" height="100px" />
52
+ <br>
53
+ <p style='word-break: break-all;' class='text-center'>For more details check the official repo: <a href="https://github.com/pedrofurtado/qrcode_pix_ruby">https://github.com/pedrofurtado/qrcode_pix_ruby</a></p>
54
+ <br>
55
+ <br>
56
+ </div>
57
+ </div>
58
+ <div class='row' style='padding-bottom: 50px;'>
59
+ <div class='col-sm-6'>
60
+ <strong>QRCode informations</strong>
61
+ <br>
62
+ <br>
63
+ <form action='https://qrcode-pix-ruby.herokuapp.com' method='post'>
64
+ <div class='mb-3'>
65
+ <label for='pix_key'>Pix key</label>
66
+ <input required type='text' class='form-control' id='pix_key' value='#{qrcode_data["pix_key"]}' name='pix_key'>
67
+ </div>
68
+ <div class='mb-3'>
69
+ <label for='description'>Description</label>
70
+ <input required type='text' class='form-control' id='description' value='#{qrcode_data["description"]}' name='description'>
71
+ </div>
72
+ <div class='mb-3'>
73
+ <label for='merchant_name'>Merchant name</label>
74
+ <input required type='text' class='form-control' id='merchant_name' value='#{qrcode_data["merchant_name"]}' name='merchant_name'>
75
+ </div>
76
+ <div class='mb-3'>
77
+ <label for='merchant_city'>Merchant city</label>
78
+ <input required type='text' class='form-control' id='merchant_city' value='#{qrcode_data["merchant_city"]}' name='merchant_city'>
79
+ </div>
80
+ <div class='mb-3'>
81
+ <label for='transaction_id'>Transaction ID</label>
82
+ <input required type='text' class='form-control' id='transaction_id' value='#{qrcode_data["transaction_id"]}' name='transaction_id'>
83
+ </div>
84
+ <div class='mb-3'>
85
+ <label for='amount'>Amount</label>
86
+ <input required type='text' class='form-control' id='amount' value='#{qrcode_data["amount"]}' name='amount'>
87
+ </div>
88
+ <div class='mb-3'>
89
+ <label for='currency'>Currency</label>
90
+ <select required id='currency' name='currency' class='form-select'>
91
+ <option value='986' selected>Brazilian Real (R$)</option>
92
+ </select>
93
+ </div>
94
+ <div class='mb-3'>
95
+ <label for='country_code'>Country</label>
96
+ <select required id='country_code' name='country_code' class='form-select'>
97
+ <option value='BR' selected>Brazil</option>
98
+ </select>
99
+ </div>
100
+ <div class='mb-3'>
101
+ <label for='postal_code'>Postal code</label>
102
+ <input required type='text' class='form-control' id='postal_code' value='#{qrcode_data["postal_code"]}' name='postal_code'>
103
+ </div>
104
+ <div class='mb-3'>
105
+ <label for='repeatable'>Repeatable?</label>
106
+ <select required id='repeatable' name='repeatable' class='form-select'>
107
+ <option selected></option>
108
+ <option value='t'>Yes</option>
109
+ <option value='f'>No</option>
110
+ </select>
111
+ </div>
112
+ <div class='d-grid gap-2'>
113
+ <button type='submit' class='btn btn-lg btn-primary'>Generate</button>
114
+ </div>
115
+ </form>
116
+ </div>
117
+ <div class='col-sm-6'>
118
+ <strong>Preview</strong>
119
+ <br>
120
+ <br>
121
+ #{payload}
122
+ <br>
123
+ <br>
124
+ #{data_uri}
125
+ </div>
126
+ </div>
127
+ </div>
128
+ <script>
129
+ new ClipboardJS('.btn-clipboard');
130
+
131
+ Array.from(document.querySelectorAll('[data-bs-toggle="tooltip"]')).forEach(function (tooltipTriggerEl) {
132
+ new bootstrap.Tooltip(tooltipTriggerEl);
133
+ });
134
+ </script>
135
+ </body>
136
+ </html>
137
+ HTML
138
+ end
139
+
140
+ run lambda { |env|
141
+ [
142
+ 200,
143
+ {
144
+ 'Content-Type' => 'text/html'
145
+ },
146
+ generate_html_with(env)
147
+ ]
148
+ }
@@ -72,7 +72,7 @@ module QrcodePixRuby
72
72
  end
73
73
 
74
74
  def emv_repeatable
75
- emv(ID_POINT_OF_INITIATION_METHOD, repeatable ? '12' : '11')
75
+ emv(ID_POINT_OF_INITIATION_METHOD, repeatable ? '11' : '12')
76
76
  end
77
77
 
78
78
  def emv_merchant
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module QrcodePixRuby
4
- VERSION = '0.3.3'
4
+ VERSION = '0.3.4'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qrcode_pix_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Furtado
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2021-06-26 00:00:00.000000000 Z
14
+ date: 2021-06-29 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rqrcode
@@ -81,6 +81,7 @@ extensions: []
81
81
  extra_rdoc_files: []
82
82
  files:
83
83
  - ".github/workflows/ci.yml"
84
+ - ".github/workflows/heroku.yml"
84
85
  - ".github/workflows/rubygems.yml"
85
86
  - ".gitignore"
86
87
  - ".rspec"
@@ -94,6 +95,9 @@ files:
94
95
  - Rakefile
95
96
  - bin/console
96
97
  - bin/setup
98
+ - demo/Gemfile
99
+ - demo/Gemfile.lock
100
+ - demo/config.ru
97
101
  - lib/qrcode_pix_ruby.rb
98
102
  - lib/qrcode_pix_ruby/payload.rb
99
103
  - lib/qrcode_pix_ruby/version.rb