blazer 1.7.8 → 1.7.9

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of blazer might be problematic. Click here for more details.

@@ -95,7 +95,7 @@
95
95
  return parseInt(a.replace(/,/g, ''), 10) - parseInt(b.replace(/,/g, ''), 10);
96
96
  },
97
97
  "float": function(a, b) {
98
- return parseFloat(a) - parseFloat(b);
98
+ return (parseFloat(a) || 0) - (parseFloat(b) || 0);
99
99
  },
100
100
  "string": function(a, b) {
101
101
  if (a < b) return -1;
@@ -33,7 +33,7 @@ module Blazer
33
33
  end
34
34
 
35
35
  def blazer_js_var(name, value)
36
- "var #{name} = #{blazer_json_escape(value.to_json)}".html_safe
36
+ "var #{name} = #{blazer_json_escape(value.to_json(root: false))};".html_safe
37
37
  end
38
38
 
39
39
  JSON_ESCAPE = { '&' => '\u0026', '>' => '\u003e', '<' => '\u003c', "\u2028" => '\u2028', "\u2029" => '\u2029' }
@@ -4,6 +4,7 @@ module Blazer
4
4
  belongs_to :query
5
5
 
6
6
  validates :query_id, presence: true
7
+ validate :validate_emails
7
8
 
8
9
  before_validation :set_state
9
10
  before_validation :fix_emails
@@ -72,7 +73,16 @@ module Blazer
72
73
  def fix_emails
73
74
  # some people like doing ; instead of ,
74
75
  # but we know what they mean, so let's fix it
75
- self.emails = emails.gsub(";", ",") if emails.present?
76
+ # also, some people like to use whitespace
77
+ if emails.present?
78
+ self.emails = emails.strip.gsub(/[;\s]/, ",").gsub(/,+/, ", ")
79
+ end
80
+ end
81
+
82
+ def validate_emails
83
+ unless split_emails.all? { |e| e =~ /\A\S+@\S+\.\S+\z/ }
84
+ errors.add(:base, "Invalid emails")
85
+ end
76
86
  end
77
87
  end
78
88
  end
@@ -19,7 +19,7 @@
19
19
  <td><%= link_to check.query.name, check.query %> <span class="text-muted"><%= check.try(:check_type).to_s.gsub("_", " ") %></span></td>
20
20
  <td>
21
21
  <% if check.state %>
22
- <small class="check-state <%= check.state.parameterize("_") %>"><%= check.state.upcase %></small>
22
+ <small class="check-state <%= check.state.parameterize.gsub("-", "_") %>"><%= check.state.upcase %></small>
23
23
  <% end %>
24
24
  </td>
25
25
  <td><%= check.schedule if check.respond_to?(:schedule) %></td>
@@ -28,7 +28,7 @@
28
28
  <%= pluralize(@rows.size, "row") %>
29
29
 
30
30
  <% @checks.select(&:state).each do |check| %>
31
- &middot; <small class="check-state <%= check.state.parameterize("_") %>"><%= link_to check.state.upcase, edit_check_path(check) %></small>
31
+ &middot; <small class="check-state <%= check.state.parameterize.gsub("-", "_") %>"><%= link_to check.state.upcase, edit_check_path(check) %></small>
32
32
  <% if check.try(:message) %>
33
33
  &middot; <%= check.message %>
34
34
  <% end %>
data/lib/blazer.rb CHANGED
@@ -7,6 +7,7 @@ require "blazer/data_source"
7
7
  require "blazer/result"
8
8
  require "blazer/run_statement"
9
9
  require "blazer/adapters/base_adapter"
10
+ require "blazer/adapters/drill_adapter"
10
11
  require "blazer/adapters/elasticsearch_adapter"
11
12
  require "blazer/adapters/mongodb_adapter"
12
13
  require "blazer/adapters/presto_adapter"
@@ -158,6 +159,7 @@ module Blazer
158
159
  end
159
160
  end
160
161
 
162
+ Blazer.register_adapter "drill", Blazer::Adapters::DrillAdapter
161
163
  Blazer.register_adapter "elasticsearch", Blazer::Adapters::ElasticsearchAdapter
162
164
  Blazer.register_adapter "mongodb", Blazer::Adapters::MongodbAdapter
163
165
  Blazer.register_adapter "presto", Blazer::Adapters::PrestoAdapter
@@ -0,0 +1,34 @@
1
+ module Blazer
2
+ module Adapters
3
+ class DrillAdapter < BaseAdapter
4
+ def run_statement(statement, comment)
5
+ columns = []
6
+ rows = []
7
+ error = nil
8
+
9
+ header = {"Content-Type" => "application/json", "Accept" => "application/json"}
10
+ data = {
11
+ queryType: "sql",
12
+ query: statement
13
+ }
14
+
15
+ uri = URI.parse("#{settings["url"]}/query.json")
16
+ http = Net::HTTP.new(uri.host, uri.port)
17
+
18
+ begin
19
+ response = JSON.parse(http.post(uri.request_uri, data.to_json, header).body)
20
+ if response["errorMessage"]
21
+ error = response["errorMessage"]
22
+ else
23
+ columns = response["columns"]
24
+ rows = response["rows"].map { |r| r.values }
25
+ end
26
+ rescue => e
27
+ error = e.message
28
+ end
29
+
30
+ [columns, rows, error]
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,3 +1,3 @@
1
1
  module Blazer
2
- VERSION = "1.7.8"
2
+ VERSION = "1.7.9"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blazer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.8
4
+ version: 1.7.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-07 00:00:00.000000000 Z
11
+ date: 2017-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -164,6 +164,7 @@ files:
164
164
  - config/routes.rb
165
165
  - lib/blazer.rb
166
166
  - lib/blazer/adapters/base_adapter.rb
167
+ - lib/blazer/adapters/drill_adapter.rb
167
168
  - lib/blazer/adapters/elasticsearch_adapter.rb
168
169
  - lib/blazer/adapters/mongodb_adapter.rb
169
170
  - lib/blazer/adapters/presto_adapter.rb