myinfo 0.1.0 → 0.5.1

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: 9c42852df0d1859a05e3b6626cc2abb19945cc2072d5cf2313bacc09ce15eb0b
4
- data.tar.gz: 10b5b50b6882dad300511581299872d330df87b3d2df66734af3391406562ead
3
+ metadata.gz: f4f99857f69be28ab49c3407d0c1d048863fcd7a10716130dc94a0966ec1e27c
4
+ data.tar.gz: 849a140d5d9d89e8021734daaf77105cf06abc23a6b2f0ba01710e9e8459aa7a
5
5
  SHA512:
6
- metadata.gz: dbee0afc819ced257f4392c0983c787e72347e9248cff74e3d1ff4885314005adc744fb4f14c04e5dff6e35da58aa80df7db74e440600636bc0b6cb727cfca80
7
- data.tar.gz: be29694339f25994661aafa7d2c581ee94a0179d3b66c4db123ccc71a3fc8b51a925dd21a662c3fd9bc44f12d62fea052c736d7c3c1957ff9dab06bbae7cd952
6
+ metadata.gz: bc61a48e588d2316fbb3fcbb36e92cc2f3f2e81fd82ad7330445ad18d7f4fcb86aff4cc48f63dc5cd862261a277aabafff878354032167762152da9872085830
7
+ data.tar.gz: 2c223679d8acddebf56821af5423e7f795e791617d6daf47189087ec7be62b0bac6ee7d52d0f19b77dbed3a0ece2627b897e4aedffb428fe1d536ac8e8f3ab1f
data/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
  config.app_id = ''
16
16
  config.client_id = ''
17
17
  config.client_secret = ''
18
- config.base_url = 'test.api.myinfo.gov.sg' # don't set https://
18
+ config.base_url = 'test.api.myinfo.gov.sg'
19
19
  config.redirect_uri = 'https://localhost:3001/callback'
20
20
  config.public_facing = true
21
21
  config.private_key = File.read(Rails.root.join('private_key_location'))
@@ -55,7 +55,7 @@ result = MyInfo::V3::Person.call(access_token: response.data) if response.succes
55
55
  config.app_id = ''
56
56
  config.client_id = ''
57
57
  config.client_secret = ''
58
- config.base_url = 'test.api.myinfo.gov.sg' # don't set https://
58
+ config.base_url = 'test.api.myinfo.gov.sg'
59
59
  config.redirect_uri = 'https://localhost:3001/callback'
60
60
  config.singpass_eservice_id = 'MYINFO-CONSENTPLATFORM'
61
61
  config.private_key = File.read(Rails.root.join('private_key_location'))
data/lib/myinfo.rb CHANGED
@@ -29,9 +29,10 @@ module MyInfo
29
29
 
30
30
  # Configuration to set various properties needed to use MyInfo
31
31
  class Configuration
32
- attr_accessor :singpass_eservice_id, :app_id, :base_url, :client_id, :proxy,
33
- :private_key, :public_cert, :client_secret, :redirect_uri
32
+ attr_accessor :singpass_eservice_id, :app_id, :client_id, :proxy, :private_key, :public_cert, :client_secret,
33
+ :redirect_uri
34
34
 
35
+ attr_reader :base_url
35
36
  attr_writer :public_facing, :sandbox
36
37
 
37
38
  def initialize
@@ -40,6 +41,10 @@ module MyInfo
40
41
  @proxy = { address: nil, port: nil }
41
42
  end
42
43
 
44
+ def base_url=(url)
45
+ @base_url = url.sub('https://', '').split('/').first
46
+ end
47
+
43
48
  def base_url_with_protocol
44
49
  "https://#{base_url}"
45
50
  end
data/lib/myinfo/v3/api.rb CHANGED
@@ -17,6 +17,16 @@ module MyInfo
17
17
  raise NotImplementedError, 'abstract'
18
18
  end
19
19
 
20
+ def slug
21
+ ''
22
+ end
23
+
24
+ def call
25
+ yield
26
+ rescue StandardError => e
27
+ Response.new(success: false, data: e)
28
+ end
29
+
20
30
  def http_method
21
31
  'GET'
22
32
  end
@@ -50,6 +60,8 @@ module MyInfo
50
60
  else
51
61
  Response.new(success: false, data: "#{response.code} - #{response.body}")
52
62
  end
63
+ rescue StandardError => e
64
+ Response.new(success: false, data: e)
53
65
  end
54
66
 
55
67
  protected
@@ -63,7 +75,6 @@ module MyInfo
63
75
  end
64
76
 
65
77
  def decode_jws(jws)
66
- # TODO: verify signature
67
78
  JWT.decode(jws, public_key, true, algorithm: 'RS256').first
68
79
  end
69
80
 
@@ -14,11 +14,13 @@ module MyInfo
14
14
  end
15
15
 
16
16
  def call
17
- headers = header(params: params, access_token: access_token)
18
- endpoint_url = "/#{slug}?#{params.to_query}"
17
+ super do
18
+ headers = header(params: params, access_token: access_token)
19
+ endpoint_url = "/#{slug}?#{params.to_query}"
19
20
 
20
- response = http.request_get(endpoint_url, headers)
21
- parse_response(response)
21
+ response = http.request_get(endpoint_url, headers)
22
+ parse_response(response)
23
+ end
22
24
  end
23
25
 
24
26
  def slug
@@ -15,11 +15,13 @@ module MyInfo
15
15
  end
16
16
 
17
17
  def call
18
- headers = header(params: params)
19
- endpoint_url = "/#{slug}?#{params.to_query}"
18
+ super do
19
+ headers = header(params: params)
20
+ endpoint_url = "/#{slug}?#{params.to_query}"
20
21
 
21
- response = http.request_get(endpoint_url, headers)
22
- parse_response(response)
22
+ response = http.request_get(endpoint_url, headers)
23
+ parse_response(response)
24
+ end
23
25
  end
24
26
 
25
27
  def slug
@@ -4,11 +4,22 @@ module MyInfo
4
4
  module V3
5
5
  # Simple response wrapper
6
6
  class Response
7
- attr_accessor :success, :data
7
+ attr_reader :data
8
8
 
9
9
  def initialize(success:, data:)
10
10
  @success = success
11
- @data = data
11
+
12
+ if data.is_a?(StandardError)
13
+ @data = data.message
14
+ @exception = true
15
+ else
16
+ @data = data
17
+ @exception = false
18
+ end
19
+ end
20
+
21
+ def exception?
22
+ @exception
12
23
  end
13
24
 
14
25
  def success?
@@ -12,10 +12,12 @@ module MyInfo
12
12
  end
13
13
 
14
14
  def call
15
- headers = header(params: params).merge({ 'Content-Type' => 'application/x-www-form-urlencoded' })
16
- response = http.request_post("/#{slug}", params.to_param, headers)
15
+ super do
16
+ headers = header(params: params).merge({ 'Content-Type' => 'application/x-www-form-urlencoded' })
17
+ response = http.request_post("/#{slug}", params.to_param, headers)
17
18
 
18
- parse_response(response)
19
+ parse_response(response)
20
+ end
19
21
  end
20
22
 
21
23
  def http_method
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MyInfo
4
+ module Version
5
+ WRAPPER_VERSION = '0.5.1'
6
+ end
7
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: myinfo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lim Yao Jie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-27 00:00:00.000000000 Z
11
+ date: 2020-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jwe
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '6.1'
47
+ version: 6.1.3
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '6.1'
54
+ version: 6.1.3
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '3.11'
139
139
  description: Rails wrapper for MyInfo API
140
- email: limyaojie93@gmail.com
140
+ email: lim_yao_jie@tech.gov.sg
141
141
  executables: []
142
142
  extensions: []
143
143
  extra_rdoc_files: []
@@ -153,7 +153,8 @@ files:
153
153
  - lib/myinfo/v3/person_basic.rb
154
154
  - lib/myinfo/v3/response.rb
155
155
  - lib/myinfo/v3/token.rb
156
- homepage: https://rubygems.org/gems/myinfo
156
+ - lib/myinfo/version.rb
157
+ homepage: https://github.com/GovTechSG/myinfo-rails
157
158
  licenses:
158
159
  - MIT
159
160
  metadata: {}
@@ -172,8 +173,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
173
  - !ruby/object:Gem::Version
173
174
  version: '0'
174
175
  requirements: []
175
- rubygems_version: 3.1.4
176
+ rubygems_version: 3.1.2
176
177
  signing_key:
177
178
  specification_version: 4
178
- summary: MyInfo gem
179
+ summary: Rails wrapper for MyInfo API
179
180
  test_files: []