forcast 0.0.110
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 +7 -0
- data/.gitignore +1 -0
- data/COPYRIGHTS +11 -0
- data/Gemfile +22 -0
- data/Gemfile.lock +166 -0
- data/PENDIENTES +39 -0
- data/README.md +35 -0
- data/Rakefile +7 -0
- data/VERSION +1 -0
- data/bin/console +14 -0
- data/bin/rake +28 -0
- data/bin/setup +8 -0
- data/forcast.gemspec +73 -0
- data/lib/forcast.rb +5 -0
- data/lib/forcast/controllers/all.rb +2 -0
- data/lib/forcast/controllers/application/all.rb +12 -0
- data/lib/forcast/controllers/application/crud.rb +91 -0
- data/lib/forcast/controllers/application/database.rb +34 -0
- data/lib/forcast/controllers/application/error.rb +18 -0
- data/lib/forcast/controllers/application/exception_handler.rb +25 -0
- data/lib/forcast/controllers/application/json.rb +83 -0
- data/lib/forcast/controllers/application/locale.rb +30 -0
- data/lib/forcast/controllers/application/log.rb +22 -0
- data/lib/forcast/controllers/application/login.rb +41 -0
- data/lib/forcast/controllers/application/meta.rb +61 -0
- data/lib/forcast/controllers/application/model.rb +17 -0
- data/lib/forcast/controllers/application/permitirtodo.rb +27 -0
- data/lib/forcast/controllers/application/utils.rb +28 -0
- data/lib/forcast/controllers/controller/all.rb +8 -0
- data/lib/forcast/controllers/controller/asociar.rb +121 -0
- data/lib/forcast/controllers/controller/busqueda.rb +151 -0
- data/lib/forcast/controllers/controller/definitor/definitor.rb +322 -0
- data/lib/forcast/controllers/controller/definitor/definitor_page.rb +40 -0
- data/lib/forcast/controllers/controller/definitor_all.rb +2 -0
- data/lib/forcast/controllers/controller/filtro.rb +48 -0
- data/lib/forcast/controllers/controller/login/controllers/base_controller.rb +135 -0
- data/lib/forcast/controllers/controller/login/controllers/login_controller.rb +38 -0
- data/lib/forcast/controllers/controller/login/login.rb +71 -0
- data/lib/forcast/controllers/controller/login_all.rb +1 -0
- data/lib/forcast/controllers/controller/paper_trail/paper_trail.rb +21 -0
- data/lib/forcast/controllers/controller/paper_trail_all.rb +1 -0
- data/lib/forcast/controllers/controller/relacion.rb +157 -0
- data/lib/forcast/controllers/controller/rule_engine/action_engine.rb +92 -0
- data/lib/forcast/controllers/controller/rule_engine/controllers/action_logs_controller.rb +12 -0
- data/lib/forcast/controllers/controller/rule_engine/controllers/actions_controller.rb +10 -0
- data/lib/forcast/controllers/controller/rule_engine/controllers/pollings_controller.rb +13 -0
- data/lib/forcast/controllers/controller/rule_engine/controllers/rule_logs_controller.rb +12 -0
- data/lib/forcast/controllers/controller/rule_engine/controllers/rules_controller.rb +19 -0
- data/lib/forcast/controllers/controller/rule_engine/controllers/webhooks_controller.rb +27 -0
- data/lib/forcast/controllers/controller/rule_engine/polling_engine.rb +76 -0
- data/lib/forcast/controllers/controller/rule_engine/rule_controller.rb +27 -0
- data/lib/forcast/controllers/controller/rule_engine/rule_engine.rb +88 -0
- data/lib/forcast/controllers/controller/rule_engine/webhook_engine.rb +38 -0
- data/lib/forcast/controllers/controller/rule_engine_all.rb +5 -0
- data/lib/forcast/jobs/all.rb +2 -0
- data/lib/forcast/jobs/jobs_assets.rb +25 -0
- data/lib/forcast/jobs/jobs_wrapper.rb +25 -0
- data/lib/forcast/jobs/rule_engine/jobs_actions.rb +73 -0
- data/lib/forcast/jobs/rule_engine/jobs_pollings.rb +77 -0
- data/lib/forcast/jobs/rule_engine/jobs_webhooks.rb +54 -0
- data/lib/forcast/migrations/0_migracion_general.rb +44 -0
- data/lib/forcast/migrations/paper_trail/versions.rb +61 -0
- data/lib/forcast/migrations/rule_engine/action_logs.rb +15 -0
- data/lib/forcast/migrations/rule_engine/actions.rb +15 -0
- data/lib/forcast/migrations/rule_engine/pollings.rb +26 -0
- data/lib/forcast/migrations/rule_engine/rule_logs.rb +22 -0
- data/lib/forcast/migrations/rule_engine/rules.rb +27 -0
- data/lib/forcast/migrations/rule_engine/webhooks.rb +25 -0
- data/lib/forcast/models/all.rb +8 -0
- data/lib/forcast/models/asociar.rb +74 -0
- data/lib/forcast/models/busqueda.rb +17 -0
- data/lib/forcast/models/login/authorization.rb +37 -0
- data/lib/forcast/models/login/json_web_token.rb +15 -0
- data/lib/forcast/models/login/login.rb +26 -0
- data/lib/forcast/models/login_all.rb +2 -0
- data/lib/forcast/models/meta.rb +19 -0
- data/lib/forcast/models/modelo.rb +125 -0
- data/lib/forcast/models/models/meta.rb +6 -0
- data/lib/forcast/models/paper_trail/paper_trail.rb +13 -0
- data/lib/forcast/models/paper_trail_all.rb +1 -0
- data/lib/forcast/models/permitirtodo.rb +57 -0
- data/lib/forcast/models/rule_engine/action_engine.rb +19 -0
- data/lib/forcast/models/rule_engine/models/action.rb +41 -0
- data/lib/forcast/models/rule_engine/models/action_log.rb +40 -0
- data/lib/forcast/models/rule_engine/models/polling.rb +43 -0
- data/lib/forcast/models/rule_engine/models/rule.rb +44 -0
- data/lib/forcast/models/rule_engine/models/rule_log.rb +39 -0
- data/lib/forcast/models/rule_engine/models/webhook.rb +43 -0
- data/lib/forcast/models/rule_engine/polling_engine.rb +113 -0
- data/lib/forcast/models/rule_engine/rule.rb +62 -0
- data/lib/forcast/models/rule_engine/rule_engine.rb +137 -0
- data/lib/forcast/models/rule_engine/rule_scope.rb +35 -0
- data/lib/forcast/models/rule_engine/webhook_engine.rb +55 -0
- data/lib/forcast/models/rule_engine_all.rb +6 -0
- data/lib/forcast/routes/concerns/asociar.rb +15 -0
- data/lib/forcast/routes/concerns/buscar.rb +6 -0
- data/lib/forcast/routes/concerns/definitor.rb +3 -0
- data/lib/forcast/routes/concerns/modelo.rb +6 -0
- data/lib/forcast/routes/database.rb +4 -0
- data/lib/forcast/routes/login.rb +4 -0
- data/lib/forcast/routes/paper_trail/paper_trail.rb +3 -0
- data/lib/forcast/routes/rule_engine/rule.rb +5 -0
- data/lib/forcast/tasks/.giosaveZr0hbs +21 -0
- data/lib/forcast/tasks/.keep +0 -0
- data/lib/forcast/tasks/all.rb +16 -0
- data/lib/forcast/tasks/diagramas.rake +32 -0
- data/lib/forcast/tasks/documentation/documentation.rb +100 -0
- data/lib/forcast/tasks/env.rake +10 -0
- data/lib/forcast/tasks/git.rake +22 -0
- data/lib/forcast/tasks/indy/indy.rb +28 -0
- data/lib/forcast/tasks/logs.rake +13 -0
- data/lib/forcast/tasks/process.rake +18 -0
- data/lib/forcast/tasks/schema.rake +17 -0
- data/lib/forcast/tasks/schema/recips/action.rb +18 -0
- data/lib/forcast/tasks/schema/recips/controller.rb +29 -0
- data/lib/forcast/tasks/schema/recips/definitor.rb +38 -0
- data/lib/forcast/tasks/schema/recips/model.rb +43 -0
- data/lib/forcast/tasks/schema/recips/project.rb +19 -0
- data/lib/forcast/tasks/schema/recips/route.rb +9 -0
- data/lib/forcast/tasks/schema/recips/tmp/controller.rb +0 -0
- data/lib/forcast/tasks/schema/recips/tmp/model.rb +0 -0
- data/lib/forcast/tasks/schema/recips/tmp/model/.keep +0 -0
- data/lib/forcast/tasks/schema/rule_engine/rule_engine.rb +98 -0
- data/lib/forcast/tasks/schema/schema.rb +346 -0
- data/lib/forcast/tasks/test.rake +129 -0
- data/lib/forcast/tasks/utils.rake +68 -0
- data/lib/forcast/tasks/yard.rake +18 -0
- data/lib/forcast/utils/all.rb +4 -0
- data/lib/forcast/utils/email.rb +49 -0
- data/lib/forcast/utils/email/forcast/utils/email/layout/default.html.erb +3 -0
- data/lib/forcast/utils/email/forcast/utils/email/layout/default.text.erb +5 -0
- data/lib/forcast/utils/firebase.rb +60 -0
- data/lib/forcast/utils/firebase_database.rb +117 -0
- data/lib/forcast/utils/measure.rb +44 -0
- data/lib/forcast/utils/qvo.rb +141 -0
- data/lib/forcast/utils/server.rb +296 -0
- data/lib/forcast/utils/telegram.rb +82 -0
- data/lib/forcast/utils/thing.rb +180 -0
- data/lib/forcast/version.rb +15 -0
- data/lib/lib/backup.rb +42 -0
- data/lib/lib/deploy.sh +40 -0
- data/lib/lib/forcast_servidor_rails.sh +11 -0
- data/lib/lib/pg_generator.sh +10 -0
- data/lib/lib/production.rb +66 -0
- data/lib/lib/production/production.rb +30 -0
- data/lib/lib/systemctl_maker.rb +88 -0
- data/lib/lib/update.rb +100 -0
- data/production.rb +31 -0
- metadata +301 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'benchmark'
|
|
2
|
+
|
|
3
|
+
module Forcast
|
|
4
|
+
module Utils
|
|
5
|
+
module Measure
|
|
6
|
+
#
|
|
7
|
+
# Measure execution of block and display result
|
|
8
|
+
#
|
|
9
|
+
# Time is measured by Benchmark module, displayed time is total
|
|
10
|
+
# (user cpu time + system cpu time + user and system cpu time of children)
|
|
11
|
+
# This is not wallclock time.
|
|
12
|
+
def self.bench(title)
|
|
13
|
+
puts "#{title}... "
|
|
14
|
+
result = Benchmark.bm do |x|
|
|
15
|
+
yield(x)
|
|
16
|
+
end
|
|
17
|
+
puts "Salida Bench"
|
|
18
|
+
end
|
|
19
|
+
def self.measure(title)
|
|
20
|
+
puts "#{title}... "
|
|
21
|
+
result = Benchmark.measure do
|
|
22
|
+
yield
|
|
23
|
+
end
|
|
24
|
+
$stderr.printf "%.03fs\n", result.total
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# n = 50000
|
|
28
|
+
# FORCAST::Benchmark.bench("pagar_servicio") do |x|
|
|
29
|
+
|
|
30
|
+
# x.report { for i in 1..n; a = "1"; end }
|
|
31
|
+
# x.report { n.times do ; a = "1"; end }
|
|
32
|
+
# x.report { 1.upto(n) do ; a = "1"; end }
|
|
33
|
+
|
|
34
|
+
# end
|
|
35
|
+
|
|
36
|
+
# FORCAST::Benchmark.measure("pagar_servicio") do
|
|
37
|
+
|
|
38
|
+
# "a"*1_000_000
|
|
39
|
+
|
|
40
|
+
# end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
module FORCAST
|
|
2
|
+
module Qvo
|
|
3
|
+
class Pago
|
|
4
|
+
attr_accessor :headers
|
|
5
|
+
attr_accessor :url
|
|
6
|
+
attr_accessor :json_send
|
|
7
|
+
attr_accessor :metodo
|
|
8
|
+
|
|
9
|
+
def initialize
|
|
10
|
+
self.headers = {}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
#Mostrar usuarios
|
|
14
|
+
def allUsers()
|
|
15
|
+
json_recived = constructor do
|
|
16
|
+
self.metodo = :get
|
|
17
|
+
self.url = "/customers"
|
|
18
|
+
self.json_send = {}
|
|
19
|
+
end
|
|
20
|
+
#userId = parser(servidor.conexion(:get, {},'/customers')[1], "id")
|
|
21
|
+
#puts userId[0].to_s #Ultimo usuario creado
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def oneUser(userId)
|
|
25
|
+
json_recived = constructor do
|
|
26
|
+
self.metodo = :get
|
|
27
|
+
self.url = "/customers/"+userId
|
|
28
|
+
self.json_send = {}
|
|
29
|
+
end
|
|
30
|
+
#userId = parser(servidor.conexion(:get, {},'/customers')[1], "id")
|
|
31
|
+
#puts userId[0].to_s #Ultimo usuario creado
|
|
32
|
+
end
|
|
33
|
+
#Crear usuarios
|
|
34
|
+
def createUser(email, nombre, address, phone)
|
|
35
|
+
json_recived = constructor do
|
|
36
|
+
self.metodo = :post
|
|
37
|
+
self.url = "/customers"
|
|
38
|
+
self.json_send = {email: email, name: nombre, address: address, phone: phone}
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
#Update usuario
|
|
43
|
+
def updateUser(userId,variable,dato)
|
|
44
|
+
json_recived = constructor do
|
|
45
|
+
self.metodo = :put
|
|
46
|
+
self.url = "/customers/"+userId
|
|
47
|
+
self.json_send = {"#{variable}" => dato}
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
#Eliminar usuario
|
|
52
|
+
def deleteUser(userId)
|
|
53
|
+
json_recived = constructor do
|
|
54
|
+
self.metodo = :delete
|
|
55
|
+
self.url = "/customers/"+userId
|
|
56
|
+
self.json_send = {}
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
#Mostrar Tarjetas de los usuarios
|
|
60
|
+
def cardsUser(userId)
|
|
61
|
+
json_recived = constructor do
|
|
62
|
+
self.metodo = :get
|
|
63
|
+
self.url = "/customers/"+userId+"/cards"
|
|
64
|
+
self.json_send = {}
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
#Cobrar a la tarjeta de un usuario
|
|
69
|
+
def cobroUser(userId, cardId, amount, description)
|
|
70
|
+
json_recived = constructor do
|
|
71
|
+
self.metodo = :post
|
|
72
|
+
self.url = "/customers/"+userId+"/cards/"+cardId+"/charge"
|
|
73
|
+
self.json_send = {amount: amount, description: description}
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
#Inscribir/Ingresar tarjeta
|
|
78
|
+
def cardInscription(userId, return_url)
|
|
79
|
+
ruta = '/customers/'+userId+'/cards/inscriptions'
|
|
80
|
+
#return_url redirije al usuario post inscripcion de tarjeta
|
|
81
|
+
puts parser(servidor.conexion(:post, {},ruta,{return_url: return_url})[1])
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
#Eliminar tarjeta
|
|
85
|
+
def deleteCard(userId, cardId)
|
|
86
|
+
ruta = "/customers/"+userId+"/cards/"+cardId
|
|
87
|
+
puts parser(servidor.conexion(:delete, {},ruta)[1])
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Todas las transacciones realizadas
|
|
91
|
+
def allTransactions()
|
|
92
|
+
user = parser(servidor.conexion(:get, {},'/transactions')[1], "customer")
|
|
93
|
+
puts user[0]#ultimo usuario
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
#Reembolso de pago efectuado(transaccion)
|
|
97
|
+
def refundCard(transactionId)
|
|
98
|
+
ruta = "/transactions/"+transactionId+"/refund"
|
|
99
|
+
puts parser(servidor.conexion(:post, {},ruta)[1])
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def constructor
|
|
103
|
+
yield
|
|
104
|
+
resp = SERVIDORPAGOS.conexion(self.metodo, self.headers, self.url, self.json_send)
|
|
105
|
+
return true if resp[1].blank?
|
|
106
|
+
json_recived = {}
|
|
107
|
+
puts resp
|
|
108
|
+
if resp[0] && self.valid_json?(resp[1])
|
|
109
|
+
json_recived = JSON.parse(resp[1])
|
|
110
|
+
unless json_recived.is_a?(Array)
|
|
111
|
+
unless json_recived["error"].nil?
|
|
112
|
+
logger.info "[QVO] "+json_recived["error"].to_s
|
|
113
|
+
return false
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
return json_recived
|
|
117
|
+
else
|
|
118
|
+
return false
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def valid_json?(json)
|
|
123
|
+
begin
|
|
124
|
+
JSON.parse(json)
|
|
125
|
+
return true
|
|
126
|
+
rescue JSON::ParserError => e
|
|
127
|
+
puts e
|
|
128
|
+
return false
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def parser(varible, key1 = '')
|
|
133
|
+
if key1 == ''
|
|
134
|
+
return JSON.pretty_generate(FORCAST::Server.response_to_json(varible))
|
|
135
|
+
else
|
|
136
|
+
return FORCAST::Server.response_to_json(varible).map {|i| i[key1]}
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
require 'openssl'
|
|
2
|
+
require 'base64'
|
|
3
|
+
require 'securerandom'
|
|
4
|
+
require 'http'
|
|
5
|
+
require 'uri'
|
|
6
|
+
require 'net/http'
|
|
7
|
+
require 'net/http/digest_auth'
|
|
8
|
+
|
|
9
|
+
module Forcast
|
|
10
|
+
module Utils
|
|
11
|
+
module Server
|
|
12
|
+
class Server
|
|
13
|
+
|
|
14
|
+
attr_accessor :username
|
|
15
|
+
attr_accessor :password
|
|
16
|
+
attr_accessor :ip
|
|
17
|
+
attr_accessor :port
|
|
18
|
+
attr_accessor :ssl
|
|
19
|
+
attr_accessor :dns
|
|
20
|
+
attr_accessor :url
|
|
21
|
+
attr_accessor :before_ping
|
|
22
|
+
attr_accessor :data
|
|
23
|
+
attr_accessor :read
|
|
24
|
+
attr_accessor :write
|
|
25
|
+
attr_accessor :connect
|
|
26
|
+
attr_accessor :headers
|
|
27
|
+
|
|
28
|
+
def initialize
|
|
29
|
+
|
|
30
|
+
self.read = 200
|
|
31
|
+
self.write = 200
|
|
32
|
+
self.connect = 10
|
|
33
|
+
self.headers = Hash.new
|
|
34
|
+
http = ''
|
|
35
|
+
yield(self)
|
|
36
|
+
self.ssl == true ? http = 'https://' : http = 'http://'
|
|
37
|
+
if self.dns.nil?
|
|
38
|
+
self.url = http + self.ip.to_s + ':' + self.port.to_s
|
|
39
|
+
else
|
|
40
|
+
self.port.nil? ? self.url = self.dns : self.url = self.dns.to_s + ':' + self.port.to_s
|
|
41
|
+
end
|
|
42
|
+
# self.freeze
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def set_uri_req(uri_req = '')
|
|
46
|
+
self.url += uri_req.to_s
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def add_params_to_url(json = {})
|
|
50
|
+
return if json.empty?
|
|
51
|
+
keys = json.keys
|
|
52
|
+
str = '?'
|
|
53
|
+
keys.each do |key|
|
|
54
|
+
str += key.to_s + '=' + json[key].to_s + '&'
|
|
55
|
+
end
|
|
56
|
+
str = str[0...-1]
|
|
57
|
+
self.url += str
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
#Ver lo que se le envia al servidor
|
|
61
|
+
def request (metodo = :get, headers = {}, ruta = '', json_send = '')
|
|
62
|
+
|
|
63
|
+
url = self.url + ruta.to_s
|
|
64
|
+
http = HTTP.build_request(metodo,
|
|
65
|
+
url,
|
|
66
|
+
{:json => json_send,
|
|
67
|
+
:headers => self.headers.merge!(headers)})
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def request_raw (metodo = :get, ruta = '', raw = {})
|
|
71
|
+
|
|
72
|
+
url = self.url + ruta.to_s
|
|
73
|
+
http = HTTP.build_request(metodo,
|
|
74
|
+
url,
|
|
75
|
+
raw)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
#Comprueba conexion con el servidor, devuelve True or False
|
|
80
|
+
|
|
81
|
+
def ping (ruta='')
|
|
82
|
+
|
|
83
|
+
url = self.url + ruta.to_s
|
|
84
|
+
begin
|
|
85
|
+
peticion = HTTP.timeout(:write => self.write, :connect => self.connect, :read => self.read)
|
|
86
|
+
.headers(self.headers)
|
|
87
|
+
.send(:get, url)
|
|
88
|
+
return [true,peticion]
|
|
89
|
+
|
|
90
|
+
rescue HTTP::TimeoutError => e
|
|
91
|
+
|
|
92
|
+
return [false,e]
|
|
93
|
+
|
|
94
|
+
rescue Exception => e
|
|
95
|
+
|
|
96
|
+
return [false,e]
|
|
97
|
+
|
|
98
|
+
ensure
|
|
99
|
+
|
|
100
|
+
#p "Ensure Ping"
|
|
101
|
+
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
end
|
|
105
|
+
#Intenta conectarse con el servidor un número x de veces en intervalos t. devuelve True or False
|
|
106
|
+
def iterate (metodo = :get, headers = '', ruta = '', json_send = '', iterate = 1, interval = 1)
|
|
107
|
+
arr = []
|
|
108
|
+
iterate.times do
|
|
109
|
+
arr.push(conexion(metodo,headers,ruta,json_send))
|
|
110
|
+
sleep interval
|
|
111
|
+
end
|
|
112
|
+
return arr
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def abstract_connection
|
|
116
|
+
|
|
117
|
+
pp = ping if self.before_ping == true
|
|
118
|
+
return pp unless pp[0] if self.before_ping == true
|
|
119
|
+
|
|
120
|
+
begin
|
|
121
|
+
|
|
122
|
+
peticion = yield
|
|
123
|
+
|
|
124
|
+
return [true,peticion]
|
|
125
|
+
|
|
126
|
+
rescue HTTP::TimeoutError => e
|
|
127
|
+
|
|
128
|
+
return [false,e]
|
|
129
|
+
|
|
130
|
+
rescue Exception => e
|
|
131
|
+
|
|
132
|
+
return [false,e]
|
|
133
|
+
|
|
134
|
+
ensure
|
|
135
|
+
|
|
136
|
+
#p "Ensure Conexion"
|
|
137
|
+
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def conexion (metodo = :get, headers = '', ruta = '', json_send = '')
|
|
143
|
+
|
|
144
|
+
abstract_connection do
|
|
145
|
+
|
|
146
|
+
url = self.url + ruta.to_s
|
|
147
|
+
HTTP.timeout(:write => self.write.to_i, :connect => self.connect.to_i, :read => self.read.to_i)
|
|
148
|
+
.headers(self.headers.merge!(headers))
|
|
149
|
+
.send(metodo, url, :json => json_send)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def conexion_basic_auth (metodo = :get,
|
|
156
|
+
headers = '',
|
|
157
|
+
ruta = '',
|
|
158
|
+
json_send = '',
|
|
159
|
+
user= '',
|
|
160
|
+
pass='')
|
|
161
|
+
|
|
162
|
+
abstract_connection do
|
|
163
|
+
|
|
164
|
+
url = self.url + ruta.to_s
|
|
165
|
+
HTTP.timeout(:write => self.write.to_i, :connect => self.connect.to_i, :read => self.read.to_i)
|
|
166
|
+
.headers(self.headers.merge!(headers))
|
|
167
|
+
.send(:basic_auth, :user => user, :pass => pass)
|
|
168
|
+
.send(metodo, url)
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def conexion_auth (metodo = :get,
|
|
174
|
+
headers = '',
|
|
175
|
+
ruta = '',
|
|
176
|
+
json_send = '',
|
|
177
|
+
auth = '')
|
|
178
|
+
|
|
179
|
+
abstract_connection do
|
|
180
|
+
|
|
181
|
+
url = self.url + ruta.to_s
|
|
182
|
+
HTTP.timeout(:write => self.write.to_i, :connect => self.connect.to_i, :read => self.read.to_i)
|
|
183
|
+
.headers(self.headers.merge!(headers))
|
|
184
|
+
.send(:auth, auth)
|
|
185
|
+
.send(metodo, url, :json => json_send)
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def conexion_raw (metodo = :get,
|
|
191
|
+
headers = '',
|
|
192
|
+
ruta = '',
|
|
193
|
+
raw = ''
|
|
194
|
+
)
|
|
195
|
+
|
|
196
|
+
abstract_connection do
|
|
197
|
+
|
|
198
|
+
url = self.url + ruta.to_s
|
|
199
|
+
HTTP.timeout(:write => self.write.to_i, :connect => self.connect.to_i, :read => self.read.to_i)
|
|
200
|
+
.headers(headers)
|
|
201
|
+
.send(metodo, url, raw)
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
def conexion_digest(metodo = :get,
|
|
207
|
+
headers = '',
|
|
208
|
+
ruta = '',
|
|
209
|
+
json_send = '',
|
|
210
|
+
user= '',
|
|
211
|
+
pass='')
|
|
212
|
+
abstract_connection do
|
|
213
|
+
digest_auth = Net::HTTP::DigestAuth.new
|
|
214
|
+
uri = URI.parse(self.url + ruta.to_s)
|
|
215
|
+
uri.user = user
|
|
216
|
+
uri.password = pass
|
|
217
|
+
h = Net::HTTP.new(uri.host, uri.port)
|
|
218
|
+
req = Net::HTTP::Get.new(uri.request_uri)
|
|
219
|
+
res = h.request(req)
|
|
220
|
+
# res is a 401 response with a WWW-Authenticate header
|
|
221
|
+
auth = digest_auth.auth_header(uri, res['www-authenticate'], 'GET')
|
|
222
|
+
# create a new request with the Authorization header
|
|
223
|
+
req = Net::HTTP::Get.new(uri.request_uri)
|
|
224
|
+
req.add_field('Authorization', auth)
|
|
225
|
+
# re-issue request with Authorization
|
|
226
|
+
res = h.request(req)
|
|
227
|
+
res
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
def self.response_to_json (response)
|
|
234
|
+
|
|
235
|
+
begin
|
|
236
|
+
JSON.parse(response.body.readpartial)
|
|
237
|
+
rescue Exception => e
|
|
238
|
+
return e
|
|
239
|
+
rescue JSON::ParserError => e
|
|
240
|
+
return e
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
end
|
|
244
|
+
end
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
# def build_header_auth(uri, version, httpmethod)
|
|
252
|
+
# response = get_auth_response(uri)
|
|
253
|
+
# @cnonce = Digest::MD5.hexdigest("%x" % (Time.now.to_i + rand(65535)))
|
|
254
|
+
# @@nonce_count += 1 response['www-authenticate'] =~ /^(\w+) (.*)/
|
|
255
|
+
# challenge = $2
|
|
256
|
+
# params = {}
|
|
257
|
+
# challenge.gsub(/(\w+)="(.*?)"/) { params[$1] = $2 }
|
|
258
|
+
|
|
259
|
+
# a_1 = "#{@username}:#{params['realm']}:#{@password}" #username, realm and password
|
|
260
|
+
# a_2 = "#{httpmethod}:#{uri}" #method and path
|
|
261
|
+
# request_digest = '' request_digest << Digest::MD5.hexdigest(a_1)
|
|
262
|
+
# request_digest << ':' << params['nonce']
|
|
263
|
+
# request_digest << ':' << ('%08x' % @@nonce_count)
|
|
264
|
+
# request_digest << ':' << @cnonce
|
|
265
|
+
# request_digest << ':' << params['qop']
|
|
266
|
+
# request_digest << ':' << Digest::MD5.hexdigest(a_2)
|
|
267
|
+
|
|
268
|
+
# header = []
|
|
269
|
+
# header << "Digest username=\"#{@username}\""
|
|
270
|
+
# header << "realm=\"#{params['realm']}\""
|
|
271
|
+
# header << "qop=#{params['qop']}"
|
|
272
|
+
# header << "algorithm=MD5"
|
|
273
|
+
# header << "uri=\"#{uri}\""
|
|
274
|
+
# header << "nonce=\"#{params['nonce']}\""
|
|
275
|
+
# header << "nc=#{'%08x' % @@nonce_count}"
|
|
276
|
+
# header << "cnonce=\"#{@cnonce}\""
|
|
277
|
+
# header << "response=\"#{Digest::MD5.hexdigest(request_digest)}\""
|
|
278
|
+
# header << "opaque=\"#{params['opaque']}\""
|
|
279
|
+
# header_auth_str = header.join(', ')
|
|
280
|
+
|
|
281
|
+
# # Build request (allows reuse)
|
|
282
|
+
# def build_request()
|
|
283
|
+
# @http = Net::HTTP.new(@uri.host, @uri.port)
|
|
284
|
+
# @http.use_ssl = true
|
|
285
|
+
# @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
286
|
+
# end
|
|
287
|
+
|
|
288
|
+
# # We need to get a response with a WWW-Authenticate request header
|
|
289
|
+
# def get_auth_response(uri)
|
|
290
|
+
# url = BASE_URL + uri
|
|
291
|
+
# @uri = URI.parse(url)
|
|
292
|
+
# build_request()
|
|
293
|
+
# req = Net::HTTP::Get.new(@uri.request_uri)
|
|
294
|
+
# response = @http.request(req)
|
|
295
|
+
# return response
|
|
296
|
+
# end
|