forcast 0.0.110
Sign up to get free protection for your applications and to get access to all the features.
- 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
|