ruby-letmein 0.0.0 → 0.1.0

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: 2d344ef4afa3e545d88f2a718dfe5898112c6fdc13b84dcbcceab71eaa1a3b91
4
- data.tar.gz: 4582be4db8ef17235b61947ebb4739ca5a092b66d1f74f41da9cb349f35c9811
3
+ metadata.gz: 5eb0608166279df5cc7ecc02b2c40e79cffdeeaca9b23a4dc8702bc8c23981de
4
+ data.tar.gz: 0c50f6139c6fe97f69ee286a8f0aa52b7bf5cc7e88b9baf6b54c1bd962ebce1d
5
5
  SHA512:
6
- metadata.gz: a5ad3ab1a13ffe2b3791dcbe35abad5f5408cfe317db6c9e241b156e457f74e9183d4f02b7ee368f64d7bea5e19fe51e73865edfba3fe5b1245aaf68e01914ab
7
- data.tar.gz: 8d0f8b6fb2227af6807c6a44ba7e1e3892dc284aa78d1b652849e9eba98e4e4bc7f706a105c614e8bb52e68d02342f9d6211f9cee9903fe247116b5d9495f5d2
6
+ metadata.gz: 5f7be3fbcb0091edaecda1a01e5fe96745b257fef70d90d8096195e83b4ee413315c6e473d637d0ef861f5bb439f35f48708fac6c0bb57ff9382eaf4a848fc9f
7
+ data.tar.gz: f4dd6b9cfe90672a8e15c900ddc6f4a620bd2cb0995d5f63f08626fedbca8f66b46dc18f861772eff571de0bdd4772a5525949569d02e527ae0dbc2be82ddefb
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'net/http'
4
+ require 'uri'
5
+ require 'json'
6
+
7
+ # Main class
8
+ class RubyLetmein
9
+ attr_reader :app_token, :base_url, :uri
10
+ attr_accessor :auth_token, :auth_token_expiry, :api_error
11
+
12
+ def initialize(base_url, app_token)
13
+ URI.parse(base_url)
14
+ @base_url = base_url
15
+ @app_token = app_token
16
+ end
17
+
18
+ def sign_in(email, password)
19
+ uri = URI.parse("#{base_url}/api/v1/app/session/sign_in")
20
+ header = { 'Content-Type': 'application/json', AppToken: @app_token }
21
+
22
+ http = Net::HTTP.new(uri.host, uri.port)
23
+ http.use_ssl = true if uri.instance_of? URI::HTTPS
24
+ request = Net::HTTP::Post.new(uri.request_uri, header)
25
+ request.body = { email: email, password: password }.to_json
26
+
27
+ response = http.request(request)
28
+ return false unless success?(request, response)
29
+
30
+ define_auth_token_and_expiry!(response)
31
+ end
32
+
33
+ def sign_out
34
+ uri = URI.parse("#{base_url}/api/v1/app/session/sign_out")
35
+ header = { 'Content-Type': 'application/json', AppToken: @app_token, Authorization: "Bearer #{@auth_token}" }
36
+
37
+ http = Net::HTTP.new(uri.host, uri.port)
38
+ http.use_ssl = true if uri.instance_of? URI::HTTPS
39
+ request = Net::HTTP::Delete.new(uri.request_uri, header)
40
+
41
+ response = http.request(request)
42
+ return false unless success?(request, response)
43
+
44
+ nullify_token_and_expiry
45
+ true
46
+ end
47
+
48
+ def signed_in?
49
+ uri = URI.parse("#{base_url}/api/v1/app/session/signed_in")
50
+ header = { 'Content-Type': 'application/json', AppToken: @app_token, Authorization: "Bearer #{@auth_token}" }
51
+
52
+ http = Net::HTTP.new(uri.host, uri.port)
53
+ http.use_ssl = true if uri.instance_of? URI::HTTPS
54
+ request = Net::HTTP::Get.new(uri.request_uri, header)
55
+
56
+ response = http.request(request)
57
+ success?(request, response)
58
+ end
59
+
60
+ def current_user
61
+ @current_user ||= retrieve_current_user
62
+ end
63
+
64
+ def refresh_current_user
65
+ @current_user = nil
66
+ current_user
67
+ end
68
+
69
+ private
70
+
71
+ def retrieve_current_user
72
+ uri = URI.parse("#{base_url}/api/v1/app/session/current_user")
73
+ header = { 'Content-Type': 'application/json', AppToken: @app_token, Authorization: "Bearer #{@auth_token}" }
74
+
75
+ http = Net::HTTP.new(uri.host, uri.port)
76
+ http.use_ssl = true if uri.instance_of? URI::HTTPS
77
+ request = Net::HTTP::Get.new(uri.request_uri, header)
78
+
79
+ response = http.request(request)
80
+ return nil unless success?(request, response)
81
+
82
+ JSON.parse(response.body)
83
+ end
84
+
85
+ def error?(request, response)
86
+ @api_error = (response.code == '200' ? nil : ApiError.new(request, response))
87
+ !@api_error.nil?
88
+ end
89
+
90
+ def success?(request, response)
91
+ !error?(request, response)
92
+ end
93
+
94
+ def define_auth_token_and_expiry!(response)
95
+ parsed_body = JSON.parse(response.body)
96
+
97
+ @auth_token = parsed_body['auth_token']
98
+ @auth_token_expiry = Time.at(parsed_body['expiry'].to_i)
99
+ true
100
+ rescue StandardError
101
+ false
102
+ end
103
+
104
+ def nullify_token_and_expiry
105
+ @auth_token = nil
106
+ @auth_token_expiry = nil
107
+ end
108
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-letmein
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adilson Chacon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-25 00:00:00.000000000 Z
11
+ date: 2023-01-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Client for Ruby language to authentication/autorization LetMeIn API
14
14
  email:
@@ -16,11 +16,12 @@ executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
- - lib/ruby-letmein.rb
19
+ - lib/ruby_letmein.rb
20
20
  homepage: https://rubygems.org/gems/ruby-letmein
21
21
  licenses:
22
22
  - MIT
23
- metadata: {}
23
+ metadata:
24
+ rubygems_mfa_required: 'true'
24
25
  post_install_message:
25
26
  rdoc_options: []
26
27
  require_paths:
data/lib/ruby-letmein.rb DELETED
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Main class
4
- class RubyLetmein
5
- def self.print_hello_world
6
- p 'Hello World'
7
- end
8
- end