forcast 0.0.110

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/COPYRIGHTS +11 -0
  4. data/Gemfile +22 -0
  5. data/Gemfile.lock +166 -0
  6. data/PENDIENTES +39 -0
  7. data/README.md +35 -0
  8. data/Rakefile +7 -0
  9. data/VERSION +1 -0
  10. data/bin/console +14 -0
  11. data/bin/rake +28 -0
  12. data/bin/setup +8 -0
  13. data/forcast.gemspec +73 -0
  14. data/lib/forcast.rb +5 -0
  15. data/lib/forcast/controllers/all.rb +2 -0
  16. data/lib/forcast/controllers/application/all.rb +12 -0
  17. data/lib/forcast/controllers/application/crud.rb +91 -0
  18. data/lib/forcast/controllers/application/database.rb +34 -0
  19. data/lib/forcast/controllers/application/error.rb +18 -0
  20. data/lib/forcast/controllers/application/exception_handler.rb +25 -0
  21. data/lib/forcast/controllers/application/json.rb +83 -0
  22. data/lib/forcast/controllers/application/locale.rb +30 -0
  23. data/lib/forcast/controllers/application/log.rb +22 -0
  24. data/lib/forcast/controllers/application/login.rb +41 -0
  25. data/lib/forcast/controllers/application/meta.rb +61 -0
  26. data/lib/forcast/controllers/application/model.rb +17 -0
  27. data/lib/forcast/controllers/application/permitirtodo.rb +27 -0
  28. data/lib/forcast/controllers/application/utils.rb +28 -0
  29. data/lib/forcast/controllers/controller/all.rb +8 -0
  30. data/lib/forcast/controllers/controller/asociar.rb +121 -0
  31. data/lib/forcast/controllers/controller/busqueda.rb +151 -0
  32. data/lib/forcast/controllers/controller/definitor/definitor.rb +322 -0
  33. data/lib/forcast/controllers/controller/definitor/definitor_page.rb +40 -0
  34. data/lib/forcast/controllers/controller/definitor_all.rb +2 -0
  35. data/lib/forcast/controllers/controller/filtro.rb +48 -0
  36. data/lib/forcast/controllers/controller/login/controllers/base_controller.rb +135 -0
  37. data/lib/forcast/controllers/controller/login/controllers/login_controller.rb +38 -0
  38. data/lib/forcast/controllers/controller/login/login.rb +71 -0
  39. data/lib/forcast/controllers/controller/login_all.rb +1 -0
  40. data/lib/forcast/controllers/controller/paper_trail/paper_trail.rb +21 -0
  41. data/lib/forcast/controllers/controller/paper_trail_all.rb +1 -0
  42. data/lib/forcast/controllers/controller/relacion.rb +157 -0
  43. data/lib/forcast/controllers/controller/rule_engine/action_engine.rb +92 -0
  44. data/lib/forcast/controllers/controller/rule_engine/controllers/action_logs_controller.rb +12 -0
  45. data/lib/forcast/controllers/controller/rule_engine/controllers/actions_controller.rb +10 -0
  46. data/lib/forcast/controllers/controller/rule_engine/controllers/pollings_controller.rb +13 -0
  47. data/lib/forcast/controllers/controller/rule_engine/controllers/rule_logs_controller.rb +12 -0
  48. data/lib/forcast/controllers/controller/rule_engine/controllers/rules_controller.rb +19 -0
  49. data/lib/forcast/controllers/controller/rule_engine/controllers/webhooks_controller.rb +27 -0
  50. data/lib/forcast/controllers/controller/rule_engine/polling_engine.rb +76 -0
  51. data/lib/forcast/controllers/controller/rule_engine/rule_controller.rb +27 -0
  52. data/lib/forcast/controllers/controller/rule_engine/rule_engine.rb +88 -0
  53. data/lib/forcast/controllers/controller/rule_engine/webhook_engine.rb +38 -0
  54. data/lib/forcast/controllers/controller/rule_engine_all.rb +5 -0
  55. data/lib/forcast/jobs/all.rb +2 -0
  56. data/lib/forcast/jobs/jobs_assets.rb +25 -0
  57. data/lib/forcast/jobs/jobs_wrapper.rb +25 -0
  58. data/lib/forcast/jobs/rule_engine/jobs_actions.rb +73 -0
  59. data/lib/forcast/jobs/rule_engine/jobs_pollings.rb +77 -0
  60. data/lib/forcast/jobs/rule_engine/jobs_webhooks.rb +54 -0
  61. data/lib/forcast/migrations/0_migracion_general.rb +44 -0
  62. data/lib/forcast/migrations/paper_trail/versions.rb +61 -0
  63. data/lib/forcast/migrations/rule_engine/action_logs.rb +15 -0
  64. data/lib/forcast/migrations/rule_engine/actions.rb +15 -0
  65. data/lib/forcast/migrations/rule_engine/pollings.rb +26 -0
  66. data/lib/forcast/migrations/rule_engine/rule_logs.rb +22 -0
  67. data/lib/forcast/migrations/rule_engine/rules.rb +27 -0
  68. data/lib/forcast/migrations/rule_engine/webhooks.rb +25 -0
  69. data/lib/forcast/models/all.rb +8 -0
  70. data/lib/forcast/models/asociar.rb +74 -0
  71. data/lib/forcast/models/busqueda.rb +17 -0
  72. data/lib/forcast/models/login/authorization.rb +37 -0
  73. data/lib/forcast/models/login/json_web_token.rb +15 -0
  74. data/lib/forcast/models/login/login.rb +26 -0
  75. data/lib/forcast/models/login_all.rb +2 -0
  76. data/lib/forcast/models/meta.rb +19 -0
  77. data/lib/forcast/models/modelo.rb +125 -0
  78. data/lib/forcast/models/models/meta.rb +6 -0
  79. data/lib/forcast/models/paper_trail/paper_trail.rb +13 -0
  80. data/lib/forcast/models/paper_trail_all.rb +1 -0
  81. data/lib/forcast/models/permitirtodo.rb +57 -0
  82. data/lib/forcast/models/rule_engine/action_engine.rb +19 -0
  83. data/lib/forcast/models/rule_engine/models/action.rb +41 -0
  84. data/lib/forcast/models/rule_engine/models/action_log.rb +40 -0
  85. data/lib/forcast/models/rule_engine/models/polling.rb +43 -0
  86. data/lib/forcast/models/rule_engine/models/rule.rb +44 -0
  87. data/lib/forcast/models/rule_engine/models/rule_log.rb +39 -0
  88. data/lib/forcast/models/rule_engine/models/webhook.rb +43 -0
  89. data/lib/forcast/models/rule_engine/polling_engine.rb +113 -0
  90. data/lib/forcast/models/rule_engine/rule.rb +62 -0
  91. data/lib/forcast/models/rule_engine/rule_engine.rb +137 -0
  92. data/lib/forcast/models/rule_engine/rule_scope.rb +35 -0
  93. data/lib/forcast/models/rule_engine/webhook_engine.rb +55 -0
  94. data/lib/forcast/models/rule_engine_all.rb +6 -0
  95. data/lib/forcast/routes/concerns/asociar.rb +15 -0
  96. data/lib/forcast/routes/concerns/buscar.rb +6 -0
  97. data/lib/forcast/routes/concerns/definitor.rb +3 -0
  98. data/lib/forcast/routes/concerns/modelo.rb +6 -0
  99. data/lib/forcast/routes/database.rb +4 -0
  100. data/lib/forcast/routes/login.rb +4 -0
  101. data/lib/forcast/routes/paper_trail/paper_trail.rb +3 -0
  102. data/lib/forcast/routes/rule_engine/rule.rb +5 -0
  103. data/lib/forcast/tasks/.giosaveZr0hbs +21 -0
  104. data/lib/forcast/tasks/.keep +0 -0
  105. data/lib/forcast/tasks/all.rb +16 -0
  106. data/lib/forcast/tasks/diagramas.rake +32 -0
  107. data/lib/forcast/tasks/documentation/documentation.rb +100 -0
  108. data/lib/forcast/tasks/env.rake +10 -0
  109. data/lib/forcast/tasks/git.rake +22 -0
  110. data/lib/forcast/tasks/indy/indy.rb +28 -0
  111. data/lib/forcast/tasks/logs.rake +13 -0
  112. data/lib/forcast/tasks/process.rake +18 -0
  113. data/lib/forcast/tasks/schema.rake +17 -0
  114. data/lib/forcast/tasks/schema/recips/action.rb +18 -0
  115. data/lib/forcast/tasks/schema/recips/controller.rb +29 -0
  116. data/lib/forcast/tasks/schema/recips/definitor.rb +38 -0
  117. data/lib/forcast/tasks/schema/recips/model.rb +43 -0
  118. data/lib/forcast/tasks/schema/recips/project.rb +19 -0
  119. data/lib/forcast/tasks/schema/recips/route.rb +9 -0
  120. data/lib/forcast/tasks/schema/recips/tmp/controller.rb +0 -0
  121. data/lib/forcast/tasks/schema/recips/tmp/model.rb +0 -0
  122. data/lib/forcast/tasks/schema/recips/tmp/model/.keep +0 -0
  123. data/lib/forcast/tasks/schema/rule_engine/rule_engine.rb +98 -0
  124. data/lib/forcast/tasks/schema/schema.rb +346 -0
  125. data/lib/forcast/tasks/test.rake +129 -0
  126. data/lib/forcast/tasks/utils.rake +68 -0
  127. data/lib/forcast/tasks/yard.rake +18 -0
  128. data/lib/forcast/utils/all.rb +4 -0
  129. data/lib/forcast/utils/email.rb +49 -0
  130. data/lib/forcast/utils/email/forcast/utils/email/layout/default.html.erb +3 -0
  131. data/lib/forcast/utils/email/forcast/utils/email/layout/default.text.erb +5 -0
  132. data/lib/forcast/utils/firebase.rb +60 -0
  133. data/lib/forcast/utils/firebase_database.rb +117 -0
  134. data/lib/forcast/utils/measure.rb +44 -0
  135. data/lib/forcast/utils/qvo.rb +141 -0
  136. data/lib/forcast/utils/server.rb +296 -0
  137. data/lib/forcast/utils/telegram.rb +82 -0
  138. data/lib/forcast/utils/thing.rb +180 -0
  139. data/lib/forcast/version.rb +15 -0
  140. data/lib/lib/backup.rb +42 -0
  141. data/lib/lib/deploy.sh +40 -0
  142. data/lib/lib/forcast_servidor_rails.sh +11 -0
  143. data/lib/lib/pg_generator.sh +10 -0
  144. data/lib/lib/production.rb +66 -0
  145. data/lib/lib/production/production.rb +30 -0
  146. data/lib/lib/systemctl_maker.rb +88 -0
  147. data/lib/lib/update.rb +100 -0
  148. data/production.rb +31 -0
  149. metadata +301 -0
@@ -0,0 +1,129 @@
1
+ require 'rake'
2
+ require 'csv'
3
+
4
+
5
+ namespace :test do
6
+
7
+ desc 'Generar los test en base a los archivos del controller y model'
8
+ task :generator, [:ins] do |task, option|
9
+ case option[:ins]
10
+
11
+ when 'controller'
12
+ Rake::Task["test:generator_model"].invoke
13
+ when 'model'
14
+ Rake::Task["test:generator_controller"].invoke
15
+ when 'all'
16
+ Rake::Task["test:generator_controller"].invoke
17
+ Rake::Task["test:generator_model"].invoke
18
+ else
19
+ p "Input no valido [controller,model,all]"
20
+ end
21
+ end
22
+ task :generator_model do
23
+
24
+ files = Dir.entries(Rails.root.join("app/models")).select {|f| !File.directory? f}
25
+ files.each do |file|
26
+ model = File.basename(file,File.extname(file))
27
+ sh "rails generate rspec:model #{model}"
28
+ end
29
+
30
+ end
31
+ task :generator_controller do
32
+
33
+ files = Dir.entries(Rails.root.join("app/controllers/api")).select {|f| !File.directory? f}
34
+ files.each do |file|
35
+ controller = File.basename(file,File.extname(file)).split("_controller")[0]
36
+ sh "rails generate rspec:controller api::#{controller}"
37
+ end
38
+ end
39
+ task :generator_request do
40
+ sh "rake routes > lib/tasks/tmp/routes.txt "
41
+ verbs = ["GET", "POST", "PUT", "PATCH", "DELETE"]
42
+ data = Hash.new { |h, k| h[k] = Array.new }
43
+ data2 = []
44
+ file = "lib/tasks/tmp/routes.txt"
45
+ File.open(file, "r") do |f|
46
+ f.each_line.with_index do |line, index|
47
+ next if index == 0
48
+ l = line.split(" ")
49
+ l.insert(0, '') if verbs.include?(l[0])
50
+ l[2] = l[2].split('(.:format)')[0]
51
+ paso = l[2].split('/')[2]
52
+ data[paso].push({ruta: l[2], metodo: l[1]})
53
+ data2.push(l[2]+' '+l[1])
54
+ end
55
+ end
56
+ File.open(file, "w") do |f|
57
+ data2.each do |l|
58
+ f.puts(l)
59
+ end
60
+ f.close
61
+ end
62
+ data.each_with_index do |array,index|
63
+ key = data.keys[index]
64
+ next if key == nil
65
+ sh "rails generate rspec:request #{key}"
66
+ file = ("spec/requests/tmp/#{key}.rb")
67
+ File.open(file, "w") do |f|
68
+ f.write("object = ")
69
+ f.write(array)
70
+ f.close
71
+ end
72
+
73
+ end
74
+
75
+ end
76
+
77
+ desc 'Corre los test del modelo'
78
+ task :model, [:tasks] do |task, option|
79
+
80
+ if option[:tasks]
81
+ arr = option[:tasks].split(':')
82
+ arr.each do |ar|
83
+ sh "rspec spec/models/#{ar}_spec.rb"
84
+ end
85
+ else
86
+ sh "rspec --pattern spec/models/*_spec.rb"
87
+ #No se cae con los errores
88
+ # files = Dir.entries(Rails.root.join("spec/models")).select {|f| !File.directory? f}
89
+ # files.each do |file|
90
+ # sh "rspec spec/models/#{file}"
91
+ # end
92
+ end
93
+ end
94
+
95
+ desc 'Corre los test del controllador'
96
+ task :controller, [:tasks, :skip_e] do |task, option|
97
+
98
+ if option[:tasks]
99
+ arr = option[:tasks].split(':')
100
+ arr.each do |ar|
101
+ sh "rspec spec/controllers/api/#{ar}_controller_spec.rb"
102
+ end
103
+ else
104
+ sh "rspec --pattern spec/controllers/api/*_spec.rb"
105
+ #No se cae con los errores
106
+ # files = Dir.entries(Rails.root.join("spec/controllers/api")).select {|f| !File.directory? f}
107
+ # files.each do |file|
108
+ # sh "rspec spec/controllers/api/#{file}"
109
+ # end
110
+ end
111
+
112
+ end
113
+
114
+ desc 'Corre los test de request'
115
+ task :request, [:tasks, :skip_e] do |task, option|
116
+
117
+ if option[:tasks]
118
+ arr = option[:tasks].split(':')
119
+ arr.each do |ar|
120
+ sh "rspec spec/requests/api/#{ar}_spec.rb"
121
+ end
122
+ else
123
+ sh "rspec --pattern spec/requests/api/*_spec.rb"
124
+ end
125
+
126
+ end
127
+
128
+
129
+ end
@@ -0,0 +1,68 @@
1
+ require 'rake'
2
+ require 'csv'
3
+
4
+ namespace :utils do
5
+
6
+ task :routes do
7
+ sh "rake routes > lib/tasks/tmp/routes.xls "
8
+ verbs = ["GET", "POST", "PATCH","PUT", "DELETE"]
9
+ data = Hash.new { |h, k| h[k] = Array.new }
10
+ data2 = []
11
+ file = "lib/tasks/tmp/routes.xls"
12
+ File.open(file, "r") do |f|
13
+ f.each_line.with_index do |line, index|
14
+ next if index == 0
15
+ l = line.split(" ")
16
+ l.insert(0, '') if verbs.include?(l[0])
17
+ l[2] = l[2].split('(.:format)')[0]
18
+ paso = l[2].split('/')[2]
19
+
20
+ ruta = l[2]
21
+ metodo = l[1]
22
+ next if metodo == 'PATCH'
23
+ #DEFAULT
24
+ parametros = ['buscar_por', 'contiene', 'dato', 'relacion','limit'] if metodo == 'GET'
25
+ parametros = ['variables de creación que estan en el modelo'] if metodo == 'POST'
26
+ parametros = ['variable', 'dato'] if metodo == 'PUT'
27
+ parametros = [] if metodo == 'DELETE'
28
+ #Dependiendo de la ruta
29
+ parametros = ['modelo'] if ruta.include?('/api/login') && metodo == 'POST'
30
+ parametros = ['modelo', 'modelo_id'] if metodo == 'PUT' &&
31
+ ruta.include?('asociar_a') ||
32
+ ruta.include?('agregar_asociado') ||
33
+ ruta.include?('desasociar_de') ||
34
+ ruta.include?('quitar_asociado')
35
+ parametros = [] if ruta.include?('/*path') || ruta.include?('/apidocs')
36
+ parametros = [] if ruta.include?('modelo_db')
37
+
38
+ #DEFAULT
39
+ respuesta = {'message' => 'Mensaje de respuesta',
40
+ 'object' => '{Objecto de la respuesta}',
41
+ 'status'=> 'Status: 200'}
42
+ #Dependiendo de la ruta
43
+ respuesta = 'Documentación API ' if ruta == '/apidocs'
44
+ respuesta = '' if ruta == '/*path'
45
+
46
+ #DEFAULT
47
+ error = {'message' => 'Mensaje de error',
48
+ 'status'=> 'Status: 400'}
49
+ #Dependiendo de la ruta
50
+ error = '' if ruta == '/apidocs'
51
+ #DEFAULT
52
+ descripcion = ''
53
+ #Dependiendo de la ruta
54
+ descripcion = 'Muestra el esquema del recurso' if ruta.include?('modelo_db')
55
+
56
+ data2.push(ruta.to_s+';'+metodo.to_s+';'+parametros.to_s+';'+respuesta.to_s+';'+error.to_s+';'+descripcion.to_s)
57
+ end
58
+ end
59
+ File.open(file, "w") do |f|
60
+ f.puts('Ruta;Metodo;Parametros;Respuesta;Error;Descripción')
61
+ data2.each do |l|
62
+ f.puts(l)
63
+ end
64
+ f.close
65
+ end
66
+ end
67
+
68
+ end
@@ -0,0 +1,18 @@
1
+ require 'yard'
2
+ require 'rake'
3
+ require_relative 'documentation/documentation.rb'
4
+
5
+ namespace :yard do
6
+ desc 'Generar Documentacion Yard'
7
+ task :doc do
8
+ init_documentation(Rails.root)
9
+ Dir.chdir("documentation")
10
+ system("yard doc")
11
+ end
12
+ desc 'Iniciar Servidor Puerto 8808'
13
+ task :server do
14
+ Dir.chdir("documentation")
15
+ system("yard server")
16
+ end
17
+ end
18
+
@@ -0,0 +1,4 @@
1
+ require "forcast/utils/measure"
2
+ require "forcast/utils/server"
3
+ require "forcast/utils/thing"
4
+ require "forcast/utils/email"
@@ -0,0 +1,49 @@
1
+ require 'action_mailer'
2
+
3
+ module Forcast
4
+ module Utils
5
+ module Email
6
+ class DefaultServer
7
+ attr_accessor :address
8
+ attr_accessor :port
9
+ attr_accessor :user_name
10
+ attr_accessor :password
11
+
12
+ def initialize
13
+ yield(self)
14
+ ActionMailer::Base.raise_delivery_errors = true
15
+ ActionMailer::Base.smtp_settings = {
16
+ address: self.address,
17
+ port: self.port.to_i,
18
+ user_name: self.user_name,
19
+ password: self.password,
20
+ authentication: "plain",
21
+ enable_starttls_auto: true
22
+ }
23
+ end
24
+ end
25
+
26
+ class Layout < ActionMailer::Base
27
+ append_view_path("#{File.dirname(__FILE__)}/email")
28
+
29
+ def default(object:, rule:, obj_identifier:)
30
+ @obj_identifier = obj_identifier
31
+ @attr_watched = { name: rule.attr_comparable, value: object.send(rule.attr_comparable) }
32
+ @fecha = ActiveSupport::TimeZone.new('America/Santiago')
33
+ .utc_to_local(Time.now)
34
+ .strftime('Hora: %H:%M:%S - Fecha: %d/%m/%Y')
35
+ @obj_class = rule.rule_model
36
+
37
+ subject = "Gatillada regla #{rule.name} - #{rule.rule_model} #{obj_identifier}"
38
+
39
+ mail(to: params[:to], cc: params[:cc], subject: subject,
40
+ from: ActionMailer::Base.smtp_settings[:user_name]) do |format|
41
+ format.text(content_type: 'text/plain', charset: 'UTF-8',
42
+ content_transfer_encoding: '7bit')
43
+ end
44
+ # Guardar response en ActionLogs junto con los datos pertinentes. Tabla
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,3 @@
1
+ <h3><%= "#{@obj_class} #{@obj_identifier}" %> </h3>
2
+ <p><%= "El atributo #{@attr_watched[:name]} tuvo valor #{@attr_watched[:value]}" %></p>
3
+ <%= @fecha %>
@@ -0,0 +1,5 @@
1
+ <%= "#{@obj_class} #{@obj_identifier}" %>
2
+
3
+ <%= "El atributo #{@attr_watched[:name]} tuvo valor #{@attr_watched[:value] || 'vacio'}" %>
4
+
5
+ <%= "#{@fecha}" %>
@@ -0,0 +1,60 @@
1
+ module FORCAST
2
+ module Firebase
3
+ class Notificacion
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
+ def enviarNotificacion(token,title,body)
14
+ json_recived = constructor do
15
+ self.metodo = :post
16
+ self.url = "/sendPushNotification/"
17
+ self.json_send = {:token => token, :title => title, :body => body}
18
+ end
19
+ end
20
+
21
+ def constructor
22
+ yield
23
+ resp = SERVIDORNOTIFICACION.conexion(self.metodo, self.headers, self.url, self.json_send)
24
+ return true if resp[1].blank?
25
+ json_recived = {}
26
+ puts resp
27
+ if resp[0] && self.valid_json?(resp[1])
28
+ json_recived = JSON.parse(resp[1])
29
+ unless json_recived.is_a?(Array)
30
+ unless json_recived["error"].nil?
31
+ logger.info "[FIREBASE] "+json_recived["error"].to_s
32
+ return false
33
+ end
34
+ end
35
+ return json_recived
36
+ else
37
+ return false
38
+ end
39
+ end
40
+
41
+ def valid_json?(json)
42
+ begin
43
+ JSON.parse(json)
44
+ return true
45
+ rescue JSON::ParserError => e
46
+ puts e
47
+ return false
48
+ end
49
+ end
50
+
51
+ def parser(varible, key1 = '')
52
+ if key1 == ''
53
+ return JSON.pretty_generate(FORCAST::Server.response_to_json(varible))
54
+ else
55
+ return FORCAST::Server.response_to_json(varible).map {|i| i[key1]}
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,117 @@
1
+ require 'firebase'
2
+
3
+ module FORCAST
4
+ module Firebase
5
+
6
+ class Database
7
+ attr_accessor :headers
8
+ attr_accessor :_method
9
+ attr_accessor :path
10
+ attr_accessor :data
11
+ attr_accessor :query_options
12
+
13
+ def initialize
14
+ self.headers = {}
15
+ end
16
+
17
+ def push(path,data,query_options: {})
18
+ json_recived = constructor do
19
+ self._method = :push
20
+ self.path = path
21
+ self.data = data
22
+ self.query_options = query_options
23
+ end
24
+ end
25
+
26
+ def set(path,data,query_options: {})
27
+ json_recived = constructor do
28
+ self._method = :set
29
+ self.path = path
30
+ self.data = data
31
+ self.query_options = query_options
32
+ end
33
+ end
34
+
35
+ def update(path,data,query_options: {})
36
+ json_recived = constructor do
37
+ self._method = :update
38
+ self.path = path
39
+ self.data = data
40
+ self.query_options = query_options
41
+ end
42
+ end
43
+
44
+ def delete(path,query_options: {})
45
+ json_recived = constructor do
46
+ self._method = :delete
47
+ self.path = path
48
+ self.query_options = query_options
49
+ end
50
+ end
51
+
52
+ def get(path,query_options: {})
53
+ json_recived = constructor do
54
+ self._method = :get
55
+ self.path = path
56
+ self.query_options = query_options
57
+ end
58
+ end
59
+
60
+ def constructor
61
+ yield
62
+ if self._method == :get || self._method == :delete
63
+ resp = SERVER_FIREBASE_DATABASE.send(self._method, self.path)
64
+ else
65
+ if self._method == :update
66
+ self.data.merge!({:updated_at => Time.now.to_i})
67
+ else
68
+ self.data.merge!({:created_at => Time.now.to_i})
69
+ end
70
+ resp = SERVER_FIREBASE_DATABASE.send(self._method, self.path, self.data, self.query_options)
71
+ end
72
+ puts "[FIREBASE] URI:"+resp.response.http_header.request_uri.to_s
73
+ puts "[FIREBASE] METHOD:"+resp.response.http_header.request_method.to_s
74
+ puts "[FIREBASE] BODY:"+resp.body.to_s
75
+ resp = resp.body.to_json
76
+ if self.valid_json?(resp)
77
+ json_recived = JSON.parse(resp)
78
+ return json_recived
79
+ else
80
+ return false
81
+ end
82
+ end
83
+
84
+ def valid_json?(json)
85
+ begin
86
+ JSON.parse(json)
87
+ return true
88
+ rescue JSON::ParserError => e
89
+ puts e
90
+ return false
91
+ end
92
+ end
93
+
94
+ def parser(variable, key1 = '')
95
+ if key1 == ''
96
+ return JSON.pretty_generate(FORCAST::Server.response_to_json(variable))
97
+ else
98
+ return FORCAST::Server.response_to_json(variable).map {|i| i[key1]}
99
+ end
100
+ end
101
+
102
+ end
103
+ end
104
+ end
105
+
106
+
107
+ firebase_url = 'https://stddbb-duplicada.firebaseio.com/Plant Information'
108
+ firebase_secret = 'KjcKb7nET0XvovYHW7DdVgtz3bzaUqSzh6nl3gu7'
109
+ ::SERVER_FIREBASE_DATABASE = Firebase::Client.new(firebase_url, firebase_secret)
110
+
111
+ FORCAST::Firebase::Database.new.get("")
112
+ # FORCAST::Firebase::Database.new.push("pruebas", {:name => 'Pick the milk 2',
113
+ # :priority => 1})
114
+ # FORCAST::Firebase::Database.new.update("-LjGsjbi7aOfRxG_I62v", {
115
+ # "Source" => 'asdasda'
116
+ # })
117
+