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.
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
+