sticapi_client 3.5.5 → 4.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a0dd3eb13aa3830b54c36344e1cf486f8c1f6b81e2b9e1e5217fead5d3c198b6
4
- data.tar.gz: 314bfbbffd6a42dbc84b8c646e874bb78a31198dbac1e3df70813cb02ff2d6a9
3
+ metadata.gz: c39976d2a163a0362a78fa8edd6c9e04d6bf5d7ea2d9a70406f0c29469ea4150
4
+ data.tar.gz: eb1eaad17f4e1a7c380e38d316c7c30dce8c7eb299987c463fc91c3c1942587c
5
5
  SHA512:
6
- metadata.gz: dfcd9cabefff5ef0db7e0efe58de8109a4da014b201e781254fbefdd2e55c8e31fb1a8558ef8e3370324871cc6508eabae8547203825ed3391fbd073b0e7f54e
7
- data.tar.gz: edc8c7b92948e5bf20b04672255db0292ce5a3c520feb32ca6ce0b0529fb8c02c5a5a36c402996598a93d94fc0998992ca7dc28e11ea3491a2924a58dd337265
6
+ metadata.gz: a8b344661c0c85a642940958a6376a9dc2a882c6e7d7444c9d9b67c9d7653c568ca17cca82ee512a84c46dbda86a49d13491978d7ba9e0a26216ad94acbab7d7
7
+ data.tar.gz: 716f21b6ff4ed3985d80c8a9acb7b29f452bd382debe3f1d2db81f0a7b14df84aa004754ace7b286aa963b6c8f3243ee9932484182089eecddbefa28543d7956
@@ -174,6 +174,19 @@ module SticapiClient
174
174
  end
175
175
  end
176
176
 
177
+ # Registro de Frequência da pessoa por período no Intranet
178
+ # Parâmetro username [String] Nome de usuário da pessoa
179
+ # Parâmetro inicio [Date] Início do período requerido (padrao = início do mês atual)
180
+ # Parâmetro fim [Date] Fim do período requerido (padrao = fim do mês atual)
181
+ # Retorno [JSON] Frequência das pessoas no intranet
182
+ def self.frequencia(options = {})
183
+ if options[:username].present?
184
+ Sticapi::SticapiClient.instance.sticapi_request("/intranet/frequencia", options)
185
+ else
186
+ []
187
+ end
188
+ end
189
+
177
190
  # Direitos de pessoas do Intranet por competencia
178
191
  # Parâmetro ano [Integer] ano da competencia
179
192
  # Parâmetro inicio [Date] Início do período requerido
@@ -49,13 +49,14 @@ module Devise
49
49
  user.password_confirmation = params[:user][:password] if user.respond_to? :password_confirmation
50
50
  user.unities = data['user']['unities'] if user.respond_to? :unities
51
51
  user.skip_confirmation! if user.respond_to? 'skip_confirmation!'
52
- user.save
53
- success!(user)
54
- return
55
- else
56
- Sticapi::SticapiClient.instance.expiry_now
57
- return fail(:invalid)
52
+ if user.save
53
+ remember_me(user)
54
+ success!(user)
55
+ return
56
+ end
58
57
  end
58
+ Sticapi::SticapiClient.instance.expiry_now
59
+ return fail(:invalid)
59
60
  end
60
61
  else
61
62
  Sticapi::SticapiClient.instance.expiry_now
@@ -1,3 +1,3 @@
1
1
  module SticapiClient
2
- VERSION = "3.5.5"
2
+ VERSION = "4.0.0"
3
3
  end
@@ -3,7 +3,6 @@ require "singleton"
3
3
  require "devise"
4
4
  require "rails"
5
5
  require "sticapi_client/sticapi_devise_strategy"
6
- require "sticapi_client/sticapi_controller"
7
6
  require "sticapi_client/diario"
8
7
  require "sticapi_client/etjpi"
9
8
  require "sticapi_client/intranet"
@@ -19,38 +18,22 @@ require "sticapi_client/user"
19
18
  require "sticapi_client/group"
20
19
  require "sticapi_client/ou"
21
20
  require "net/http"
21
+ require "erb"
22
+ require "yaml"
23
+ require "fileutils"
22
24
 
23
25
  module Sticapi
24
26
  class SticapiClient
25
27
  include Singleton
26
28
 
27
- attr_accessor :host
28
- attr_accessor :urn
29
- attr_accessor :port
30
- attr_accessor :ssl
31
- attr_accessor :user
32
- attr_accessor :password
33
- attr_accessor :access_token
34
- attr_accessor :client
35
- attr_accessor :uid
36
- attr_accessor :expiry
29
+ attr_accessor :host, :urn, :port, :ssl, :user, :password
30
+ attr_accessor :access_token, :client, :uid, :expiry
31
+
32
+ TOKEN_CACHE_PATH = "tmp/sticapi_token.yml"
37
33
 
38
34
  def initialize
39
- configs = YAML.safe_load(
40
- ERB.new(File.read("#{Rails.root}/config/sticapi.yml")).result,
41
- aliases: true
42
- )[Rails.env]
43
- @host = configs["host"]
44
- @port = configs["port"] || 80
45
- @user = configs["user"]
46
- @urn = configs["urn"]
47
- @ssl = configs["ssl"] || false
48
- @password = configs["password"]
49
- @access_token = ""
50
- @client = ""
51
- @uid = ""
52
- @expiry = ""
53
- get_token
35
+ load_config
36
+ load_token
54
37
  end
55
38
 
56
39
  def uri
@@ -58,63 +41,145 @@ module Sticapi
58
41
  end
59
42
 
60
43
  def get_token
61
- if @access_token.blank? || (DateTime.now > Time.at(@expiry.to_i))
62
- uri = URI.parse("#{self.uri}/auth/sign_in")
63
- http = Net::HTTP.new(uri.host, uri.port)
64
- http.use_ssl = @ssl
65
- request = Net::HTTP::Post.new(uri.request_uri)
66
- request["Content-Type"] = "application/json"
67
- request["email"] = @user
68
- request["password"] = @password
69
- response = http.request(request)
70
- update_token(response)
44
+ return unless @access_token.blank? || (DateTime.now > Time.at(@expiry.to_i))
45
+
46
+ if @access_token.present?
47
+ sign_out
71
48
  end
49
+
50
+ uri = URI.parse("#{self.uri}/auth/sign_in")
51
+ http = Net::HTTP.new(uri.host, uri.port)
52
+ http.use_ssl = @ssl
53
+ request = Net::HTTP::Post.new(uri.request_uri)
54
+ request["Content-Type"] = "application/json"
55
+ request.body = { email: @user, password: @password }.to_json
56
+ response = http.request(request)
57
+ @access_token = response["access-token"] if response["access-token"]
58
+ @client = response["client"] if response["client"]
59
+ @uid = response["uid"] if response["uid"]
60
+ @expiry = response["expiry"] if response["expiry"]
61
+ save_token
72
62
  end
73
63
 
74
64
  def expiry_now
75
65
  @expiry = 0
76
66
  end
77
67
 
78
- def update_token(response)
68
+ def sticapi_request(route, options = {})
69
+ get_token
70
+ response = http_request(route, options)
71
+
72
+ if response.code.to_i == 401
73
+ expiry_now
74
+ get_token
75
+ response = http_request(route, options)
76
+ end
77
+
79
78
  @access_token = response["access-token"] if response["access-token"]
80
79
  @client = response["client"] if response["client"]
81
80
  @uid = response["uid"] if response["uid"]
82
81
  @expiry = response["expiry"] if response["expiry"]
82
+ JSON.parse(response.body)
83
83
  end
84
84
 
85
- def sticapi_request(route, options = {})
86
- get_token
85
+ def sign_out
86
+ if @access_token.present?
87
+ uri = URI.parse("#{self.uri}/auth/sign_out")
88
+ http = Net::HTTP.new(uri.host, uri.port)
89
+ http.use_ssl = @ssl
90
+ request = Net::HTTP::Delete.new(uri.request_uri)
91
+ request["Content-Type"] = "application/json"
92
+ request["access-token"] = @access_token
93
+ request["client"] = @client
94
+ request["uid"] = @uid
95
+ request["expiry"] = @expiry
96
+ http.request(request)
97
+ end
98
+ @access_token = ""
99
+ @client = ""
100
+ @uid = ""
101
+ @expiry = ""
102
+ File.delete(token_cache_path) if File.exist?(token_cache_path)
103
+ end
104
+
105
+ private
106
+
107
+ def load_config
108
+ if ENV["STICAPI_HOST"].present?
109
+ @host = ENV["STICAPI_HOST"]
110
+ @port = ENV.fetch("STICAPI_PORT", 80).to_i
111
+ @user = ENV["STICAPI_USER"]
112
+ @password = ENV["STICAPI_PASSWORD"]
113
+ @urn = ENV["STICAPI_URN"]
114
+ @ssl = ENV.fetch("STICAPI_SSL", "false") == "true"
115
+ else
116
+ configs = YAML.safe_load(
117
+ ERB.new(File.read("#{Rails.root}/config/sticapi.yml")).result,
118
+ aliases: true
119
+ )[Rails.env]
120
+ @host = configs["host"]
121
+ @port = configs["port"] || 80
122
+ @user = configs["user"]
123
+ @urn = configs["urn"]
124
+ @ssl = configs["ssl"] || false
125
+ @password = configs["password"]
126
+ end
127
+ end
128
+
129
+ def http_request(route, options = {})
87
130
  kind = options[:kind] || "post"
88
131
  uri = URI.parse("#{self.uri}#{route}")
89
132
  http = Net::HTTP.new(uri.host, uri.port)
90
133
  http.use_ssl = @ssl
91
- request = nil
92
- request = Net::HTTP::Post.new(uri.request_uri) if kind == "post"
93
- request = Net::HTTP::Get.new(uri.request_uri) if kind == "get"
134
+
135
+ request = if kind == "get"
136
+ params = options.except(:kind)
137
+ uri.query = URI.encode_www_form(params) if params.any?
138
+ Net::HTTP::Get.new(uri.request_uri)
139
+ else
140
+ req = Net::HTTP::Post.new(uri.request_uri)
141
+ req.body = options.except(:kind).to_json
142
+ req
143
+ end
144
+
94
145
  request["Content-Type"] = "application/json"
95
146
  request["access-token"] = @access_token
96
147
  request["client"] = @client
97
148
  request["uid"] = @uid
98
149
  request["expiry"] = @expiry
99
- request.body = options.except(:kind).to_json
100
- response = http.request(request)
101
- update_token(response)
102
- sign_out
103
- JSON.parse(response.body)
150
+
151
+ http.request(request)
104
152
  end
105
153
 
106
- def sign_out
107
- uri = URI.parse("#{self.uri}/auth/sign_out")
108
- http = Net::HTTP.new(uri.host, uri.port)
109
- http.use_ssl = @ssl
110
- request = Net::HTTP::Delete.new(uri.request_uri)
111
- request["Content-Type"] = "application/json"
112
- request["access-token"] = @access_token
113
- request["client"] = @client
114
- request["uid"] = @uid
115
- request["expiry"] = @expiry
154
+ def token_cache_path
155
+ "#{Rails.root}/#{TOKEN_CACHE_PATH}"
156
+ end
157
+
158
+ def load_token
159
+ if File.exist?(token_cache_path)
160
+ cached = YAML.safe_load(File.read(token_cache_path), permitted_classes: [Symbol])
161
+ if cached
162
+ @access_token = cached[:access_token] || ""
163
+ @client = cached[:client] || ""
164
+ @uid = cached[:uid] || ""
165
+ @expiry = cached[:expiry] || ""
166
+ return
167
+ end
168
+ end
116
169
  @access_token = ""
117
- response = http.request(request)
170
+ @client = ""
171
+ @uid = ""
172
+ @expiry = ""
173
+ end
174
+
175
+ def save_token
176
+ FileUtils.mkdir_p(File.dirname(token_cache_path))
177
+ File.write(token_cache_path, {
178
+ access_token: @access_token,
179
+ client: @client,
180
+ uid: @uid,
181
+ expiry: @expiry
182
+ }.to_yaml)
118
183
  end
119
184
  end
120
185
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sticapi_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.5
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo Viana
@@ -27,70 +27,70 @@ dependencies:
27
27
  name: devise
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - "~>"
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: '4.3'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: '4.3'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: jwt
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - "~>"
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: '2.0'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '2.0'
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: bundler
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - "~>"
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: '1.15'
61
61
  type: :development
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - "~>"
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
67
  version: '1.15'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: rake
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '10.0'
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '10.0'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: rspec
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '3.0'
89
89
  type: :development
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
95
  version: '3.0'
96
96
  description: A gem who encapsulate api calls of TJPI sticapi
@@ -138,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  requirements: []
141
- rubygems_version: 3.7.2
141
+ rubygems_version: 3.6.7
142
142
  specification_version: 4
143
143
  summary: Client to use TJPI sticapi services
144
144
  test_files: []