swish_qr 0.0.1
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 +7 -0
- data/lib/swish_qr.rb +68 -0
- metadata +115 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 1d7a0d29f45bcd41a9c91d3e9a600524576958fe
|
|
4
|
+
data.tar.gz: 68cf5fbf651feadea7f4bdf68e00780f8f6b8c88
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: f6830d15acbc6a82628c2dd67f5c86d2f0fc6d2d7b6b09a7590fcce3aab12bbc9e2c2039e67819e6a0e3cf7f26c1e60b312d5052cc946a8a17f45b443a53faa8
|
|
7
|
+
data.tar.gz: fd21233a86c8ae588d0a310db14e3e3e98b90f67d89c8c784e0491a86af62562ccd8b9356ca311325d14fd54d9b36eb7dd293febd8377afd0df105bf673190b2
|
data/lib/swish_qr.rb
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Interface for generating Swish QR codes
|
|
2
|
+
# https://developer.getswish.se/qr-api-manual/4-create-qr-codes-using-swish-qr-code-generator-apis/#4-1-1-prefilled
|
|
3
|
+
# https://developer.getswish.se/content/uploads/2017/04/Guide-Swish-QR-code-design-specification_v1.5.pdf
|
|
4
|
+
|
|
5
|
+
class SwishQr
|
|
6
|
+
require 'httparty'
|
|
7
|
+
|
|
8
|
+
SWISH_QR_API_ENDPOINT="https://www.swish.bankgirot.se/qrg-swish/api/v1/prefilled"
|
|
9
|
+
@result = {}
|
|
10
|
+
@request_hash = {}
|
|
11
|
+
@image_format
|
|
12
|
+
attr_accessor :request_hash
|
|
13
|
+
|
|
14
|
+
SIMPLE_VALUES = [ :format, :size, :border, :transparent ]
|
|
15
|
+
COMPLEX_VALUES = [ :payee, :amount, :message ]
|
|
16
|
+
VALID_FORMATS = [ 'svg', 'png', 'jpg' ]
|
|
17
|
+
|
|
18
|
+
def initialize(args)
|
|
19
|
+
check_args(args)
|
|
20
|
+
@result = HTTParty.post(SWISH_QR_API_ENDPOINT,
|
|
21
|
+
:body => build_request_body(args),
|
|
22
|
+
:headers => { 'Content-Type' => 'application/json' } )
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def image
|
|
26
|
+
@result.body
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def success?
|
|
30
|
+
@result.code == 200
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def http_response_code
|
|
34
|
+
@result.code
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def error
|
|
38
|
+
@result.parsed_response['error']
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def check_args(args)
|
|
42
|
+
raise ArgumentError, "Invalid format: '#{args[:format]}', must specify one of: #{VALID_FORMATS}" unless VALID_FORMATS.include?(args[:format])
|
|
43
|
+
raise ArgumentError, "Size (minimum 300) must be specified for #{args[:format]}" unless (args[:format] == 'svg' || args[:size].to_i >= 300)
|
|
44
|
+
raise ArgumentError, "JPEG can't be transparent" if (args[:format] == 'jpg' && args[:transparent])
|
|
45
|
+
raise ArgumentError, "Max border is 4" if (args[:border].to_i > 4)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def build_request_body(args)
|
|
49
|
+
@image_format = args[:format]
|
|
50
|
+
@request_hash = get_simple_values_from_args(args)
|
|
51
|
+
@request_hash.merge!(get_complex_values_from_args(args))
|
|
52
|
+
#puts @request_hash
|
|
53
|
+
@request_hash.to_json
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def get_simple_values_from_args(args)
|
|
57
|
+
args.select{|k,v| SIMPLE_VALUES.include?(k)}
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def get_complex_values_from_args(args)
|
|
61
|
+
ret = {}
|
|
62
|
+
COMPLEX_VALUES.each do |k|
|
|
63
|
+
ret[k] = { value: args[k], editable: (args[:editable].include?(k)) } if args[k]
|
|
64
|
+
end
|
|
65
|
+
ret
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: swish_qr
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Linus Corin
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2017-11-14 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: httparty
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: httparty
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rspec
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rake
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: vcr
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
description: An interface for the public Swish QR API
|
|
84
|
+
email:
|
|
85
|
+
- noreply+see_website_for_email@corin.net
|
|
86
|
+
executables: []
|
|
87
|
+
extensions: []
|
|
88
|
+
extra_rdoc_files: []
|
|
89
|
+
files:
|
|
90
|
+
- lib/swish_qr.rb
|
|
91
|
+
homepage: https://github.com/linuscorin/ruby_swish_qr
|
|
92
|
+
licenses:
|
|
93
|
+
- MIT
|
|
94
|
+
metadata: {}
|
|
95
|
+
post_install_message:
|
|
96
|
+
rdoc_options: []
|
|
97
|
+
require_paths:
|
|
98
|
+
- lib
|
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
|
+
requirements:
|
|
106
|
+
- - ">="
|
|
107
|
+
- !ruby/object:Gem::Version
|
|
108
|
+
version: '0'
|
|
109
|
+
requirements: []
|
|
110
|
+
rubyforge_project:
|
|
111
|
+
rubygems_version: 2.5.2
|
|
112
|
+
signing_key:
|
|
113
|
+
specification_version: 4
|
|
114
|
+
summary: QR code generator for Swish
|
|
115
|
+
test_files: []
|