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 +4 -4
- data/lib/sticapi_client/intranet.rb +13 -0
- data/lib/sticapi_client/sticapi_devise_strategy.rb +7 -6
- data/lib/sticapi_client/version.rb +1 -1
- data/lib/sticapi_client.rb +123 -58
- metadata +12 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c39976d2a163a0362a78fa8edd6c9e04d6bf5d7ea2d9a70406f0c29469ea4150
|
|
4
|
+
data.tar.gz: eb1eaad17f4e1a7c380e38d316c7c30dce8c7eb299987c463fc91c3c1942587c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
data/lib/sticapi_client.rb
CHANGED
|
@@ -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 :
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
40
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
|
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
|
|
86
|
-
|
|
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
|
-
|
|
92
|
-
request =
|
|
93
|
-
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
update_token(response)
|
|
102
|
-
sign_out
|
|
103
|
-
JSON.parse(response.body)
|
|
150
|
+
|
|
151
|
+
http.request(request)
|
|
104
152
|
end
|
|
105
153
|
|
|
106
|
-
def
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
|
141
|
+
rubygems_version: 3.6.7
|
|
142
142
|
specification_version: 4
|
|
143
143
|
summary: Client to use TJPI sticapi services
|
|
144
144
|
test_files: []
|