Commit b54cb73d authored by Paul Asmuth's avatar Paul Asmuth
Browse files

query validation

parent ca448b36
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -6,3 +6,4 @@ require "fnordquery/backends/redis_backend"
require "fnordquery/acceptor"
require "fnordquery/acceptors/tcp_acceptor"
require "fnordquery/acceptors/udp_acceptor"
require "fnordquery/query"
 No newline at end of file
+5 −1
Original line number Diff line number Diff line
class FnordQuery::Query
  
  class InvalidQueryError < StandardError; end

  X_VALIDATE = /^(([a-z]+\([^\)]*\)) *)+$/
  X_EXTRACT  = /(([a-z]+)\(([^\)]*)\))/

  def initialize(str)
  	raise "Invalid Query: #{str}" unless str.match(X_VALIDATE)
  	unless str.match(X_VALIDATE)
  	  raise InvalidQueryError.new("Invalid Query: #{str}") 
  	end
  end

end  
+24 −17
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ class FnordQuery::Runner

    tasks    = %w(query web udp tcp exec)
    backends = %w(redis fyrehose)
    shorts   = { redis: :r, fyrehose: :x }
    shorts   = { redis: :r, fyrehose: :x, query: :q }

    OptionParser.new do |opts|
      opts.on("-h", "--help") do
@@ -47,7 +47,14 @@ class FnordQuery::Runner

    #backend = @opts...


    if @opts[:task].first == "query"
      begin
        query = FnordQuery::Query.new(@opts[:task].last)
      rescue FnordQuery::Query::InvalidQueryError => e
        puts e.to_s
        exit!(1)
      end
    end
  end

private
@@ -81,8 +88,8 @@ private
        fnordquery -r --web 0.0.0.0:8080
    EOH

    puts [help.lstrip, nil]
    puts [examples.lstrip, nil]
    puts [help.lstrip.gsub(/^ {6}/, ""), nil]
    puts [examples.lstrip.gsub(/^ {6}/, ""), nil]
    puts "http://github.com/paulasmuth/fnordquery"
  end