sticapi_client 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 38c6a8f2a22d4143789401514fee33f26bb0c8f2
4
+ data.tar.gz: dc042ced88813f8947ee6b7253a4c43ba3c183f3
5
+ SHA512:
6
+ metadata.gz: 32222f2589efd2f141bcacb98a3609a2d6210358b4d62fe8e66d6b86f68e2755aee1c202ae7780ecc68f2eb2aa393d7573c00f4bb1afc59f02d4108c1d2f8f78
7
+ data.tar.gz: 64faa13ee10160db9953864891e936ab8fc060b5edc1630430e572fd3e2784426aaa66610eb46f283eaa2f8c6999ee55a6b54aae306e5ded54f2c9a74093d2dd
@@ -0,0 +1,13 @@
1
+ module SticapiClient
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ source_root File.expand_path("../templates", __FILE__)
5
+
6
+ desc "Generates config file for use sticapi"
7
+
8
+ def copy_config_file
9
+ copy_file "sticapi.yml", "config/sticapi.yml"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ development:
2
+ host: localhost
3
+ port: 3001
4
+ user: ricardo.viana@tjpi.jus.br
5
+ password: 12345678
6
+
7
+ test:
8
+ host: localhost
9
+ port: 3001
10
+ user: ricardo.viana@tjpi.jus.br
11
+ password: 12345678
12
+
13
+ production:
14
+ host: localhost
15
+ port: 3001
16
+ user: ricardo.viana@tjpi.jus.br
17
+ password: 12345678
@@ -0,0 +1,22 @@
1
+ module SticapiController
2
+ def self.included(base)
3
+ base.send(:before_action, :get_token)
4
+ base.send(:after_action, :update_token)
5
+ end
6
+
7
+ def initialize
8
+ super
9
+ #self references the instance of the UsersController class
10
+ @model_class = self.class
11
+ puts @model_class # UsersController
12
+ end
13
+
14
+ def get_token
15
+ SticapiClient::SticapiClient.instance.get_token
16
+ end
17
+
18
+ def update_token
19
+ puts 'update_token'
20
+ puts @model_class # UsersController
21
+ end
22
+ end
@@ -0,0 +1,62 @@
1
+ require 'devise/strategies/authenticatable'
2
+ require 'jwt'
3
+
4
+ module Devise
5
+ module Strategies
6
+ class SticapiAuthenticatable < Authenticatable
7
+ def valid?
8
+ true
9
+ end
10
+
11
+ def authenticate!
12
+ if params[:user]
13
+ secret = SticapiClient::SticapiClient.instance.access_token
14
+ payload = {
15
+ user: params[:user][:username],
16
+ password: params[:user][:password]
17
+ }
18
+ token = JWT.encode payload, secret, 'HS256'
19
+
20
+ uri = URI.parse("http://#{SticapiClient::SticapiClient.instance.host}:#{SticapiClient::SticapiClient.instance.port}/users/log_in")
21
+ http = Net::HTTP.new(uri.host, uri.port)
22
+ request = Net::HTTP::Post.new(uri.request_uri)
23
+ request['Content-Type'] = 'application/json'
24
+ request['access_token'] = SticapiClient::SticapiClient.instance.access_token
25
+ request['client'] = SticapiClient::SticapiClient.instance.client
26
+ request['uid'] = SticapiClient::SticapiClient.instance.uid
27
+ request.body = { data: token }.to_json
28
+ response = http.request(request)
29
+
30
+ case response
31
+ when Net::HTTPSuccess
32
+ data = JSON.parse response.body
33
+ unless user = User.find_by(cpf: data['user']['cpf'])
34
+ user = User.new
35
+ user.name = data['user']['name'] if user.respond_to? :name
36
+ user.username = data['user']['username'] if user.respond_to? :username
37
+ user.email = data['user']['email']
38
+ user.cpf = data['user']['cpf'] if user.respond_to? :cpf
39
+ user.unities = data['user']['unities'] if user.respond_to? :unities
40
+ user.password = params[:user][:password]
41
+ user.save
42
+ end
43
+ success!(user)
44
+ return
45
+ when Net::HTTPUnauthorized
46
+ {'error' => "#{response.message}: username and password set and correct?"}
47
+ fail
48
+ when Net::HTTPServerError
49
+ {'error' => "#{response.message}: try again later?"}
50
+ fail
51
+ else
52
+ {'error' => response.message}
53
+ fail
54
+ end
55
+ end
56
+ fail
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+ Warden::Strategies.add(:sticapi_authenticatable, Devise::Strategies::SticapiAuthenticatable)
@@ -0,0 +1,3 @@
1
+ module SticapiClient
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,58 @@
1
+ # encoding: utf-8
2
+ require 'sticapi_client/version'
3
+ require 'singleton'
4
+ require 'devise'
5
+ require 'rails'
6
+ require 'sticapi_client/sticapi_devise_strategy'
7
+ require 'sticapi_client/sticapi_controller'
8
+
9
+ module SticapiClient
10
+ class SticapiClient
11
+ include Singleton
12
+
13
+ attr_accessor :host
14
+ attr_accessor :port
15
+ attr_accessor :user
16
+ attr_accessor :password
17
+ attr_accessor :access_token
18
+ attr_accessor :client
19
+ attr_accessor :uid
20
+ attr_accessor :expiry
21
+
22
+ def initialize
23
+ # configs = YAML.load_file("#{Rails.root}/config/sticapi.yml")[Rails.env]
24
+ configs = YAML.load_file("/home/ricardo/dev/sticapi_client/lib/generators/sticapi_client/templates/sticapi.yml")[Rails.env]
25
+ @host = configs['host']
26
+ @port = configs['port']
27
+ @user = configs['user']
28
+ @password = configs['password']
29
+ @access_token = ''
30
+ @client = ''
31
+ @uid = ''
32
+ @expiry = ''
33
+ end
34
+
35
+ def get_token
36
+ if @access_token.blank?
37
+ uri = ''
38
+ uri = URI.parse("http://#{@host}:#{@port}/auth/sign_in")
39
+ http = Net::HTTP.new(uri.host, uri.port)
40
+ request = Net::HTTP::Post.new(uri.request_uri)
41
+ request['email'] = @user
42
+ request['password'] = @password
43
+ response = http.request(request)
44
+ @access_token = response['access-token']
45
+ @client = response['client']
46
+ @uid = response['uid']
47
+ @expiry = response['expiry']
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ # Add sticapi_authenticatable strategy to defaults.
54
+ #
55
+ Devise.add_module(:sticapi_authenticatable,
56
+ :route => :session, ## This will add the routes, rather than in the routes.rb
57
+ :strategy => true,
58
+ :controller => :sessions)
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sticapi_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ricardo Viana
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-09-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: devise
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: jwt
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.15'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.15'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ description: A gem who encapsulate api calls of TJPI sticapi
98
+ email:
99
+ - zezim.ricardo@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - lib/generators/sticapi_client/install_generator.rb
105
+ - lib/generators/sticapi_client/templates/sticapi.yml
106
+ - lib/sticapi_client.rb
107
+ - lib/sticapi_client/sticapi_controller.rb
108
+ - lib/sticapi_client/sticapi_devise_strategy.rb
109
+ - lib/sticapi_client/version.rb
110
+ homepage: ''
111
+ licenses:
112
+ - MIT
113
+ metadata: {}
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ requirements: []
129
+ rubyforge_project:
130
+ rubygems_version: 2.6.13
131
+ signing_key:
132
+ specification_version: 4
133
+ summary: Client to use TJPI sticapi services
134
+ test_files: []