Navigation Menu

Skip to content

Commit

Permalink
Validate and perfect messages by Droonga::Client
Browse files Browse the repository at this point in the history
  • Loading branch information
piroor committed Jan 15, 2015
1 parent 0434f43 commit d89e249
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 36 deletions.
9 changes: 1 addition & 8 deletions bin/droonga-request
@@ -1,6 +1,6 @@
#!/usr/bin/env ruby
#
# Copyright (C) 2014-2015 Droonga Project
# Copyright (C) 2014 Droonga Project
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
Expand All @@ -20,8 +20,6 @@ require "yajl"
require "json"

require "droonga/client"
require "droonga/client/message_perfector"
require "droonga/client/message_validator"

options = {
:host => "localhost",
Expand Down Expand Up @@ -101,9 +99,6 @@ parser.on("--[no-]report-elapsed-time",
end
request_json_files = parser.parse!(ARGV)

perfector = Droonga::Client::MessagePerfector.new
validator = Droonga::Client::MessageValidator.new

client = Droonga::Client.new(options)
json_parser = Yajl::Parser.new
json_parser.on_parse_complete = lambda do |request_message|
Expand All @@ -117,8 +112,6 @@ json_parser.on_parse_complete = lambda do |request_message|
message << "\n"
print(message)
end
request_message = perfector.perfect(request_message)
validator.validate(request_message)
start = Time.now
request = client.request(request_message) do |response|
message = ""
Expand Down
7 changes: 0 additions & 7 deletions bin/droonga-send
Expand Up @@ -21,8 +21,6 @@ require "yajl"
require "json"

require "droonga/client"
require "droonga/client/message_perfector"
require "droonga/client/message_validator"

options = OpenStruct.new
options.report_request = false
Expand All @@ -35,9 +33,6 @@ servers = []
default_server = "droonga:localhost:10031/droonga"
messages_per_second = Droonga::Client::RateLimiter::DEFAULT_LIMIT

perfector = Droonga::Client::MessagePerfector.new
validator = Droonga::Client::MessageValidator.new

def parse_server(server, options)
server_matcher = /\A(?:(droonga|http):)?([^:]+)(?::([0-9]+))?(?:\/(.+))?\z/
server =~ server_matcher
Expand Down Expand Up @@ -172,8 +167,6 @@ json_parser.on_parse_complete = lambda do |request_message|
message << "\n"
print(message)
end
request_message = perfector.perfect(request_message)
validator.validate(request_message)
client = clients[client_index]
client.send(request_message)
client_index = (client_index + 1) % clients.size
Expand Down
25 changes: 10 additions & 15 deletions lib/droonga/client.rb
Expand Up @@ -20,6 +20,8 @@
require "droonga/client/connection/http"
require "droonga/client/connection/droonga-protocol"
require "droonga/client/rate-limiter"
require "droonga/client/message_perfector"
require "droonga/client/message_validator"

module Droonga
class Client
Expand Down Expand Up @@ -62,28 +64,25 @@ def open(options={})
# from Droonga Engine.
def initialize(options={})
@connection = create_connection(options)
@perfector = MessagePerfector.new
@validator = MessageValidator.new
end

def send(message, options={}, &block)
if message["id"].nil? or message["date"].nil?
id = message["id"] || generate_id
date = message["date"] || Time.now
message = message.merge("id" => id, "date" => date)
end
message = @perfector.perfect(message)
@validator.validate(message)
@connection.send(message, options, &block)
end

def request(message, options={}, &block)
if message["id"].nil?
message = message.merge("id" => generate_id)
end
message = @perfector.perfect(message)
@validator.validate(message)
@connection.request(message, options, &block)
end

def subscribe(message, options={}, &block)
if message["id"].nil?
message = message.merge("id" => generate_id)
end
message = @perfector.perfect(message)
@validator.validate(message)
@connection.subscribe(message, options, &block)
end

Expand All @@ -104,9 +103,5 @@ def create_connection(options)
Connection::DroongaProtocol.new(options)
end
end

def generate_id
Time.now.to_f.to_s
end
end
end
12 changes: 6 additions & 6 deletions lib/droonga/client/message_perfector.rb
Expand Up @@ -26,18 +26,18 @@ def initialize(options={})
end

def perfect(message)
message["id"] ||= generate_id
message["date"] ||= date
message
id = message["id"] || generate_id
date = message["date"] || @date || new_date
message.merge("id" => id, "date" => date)
end

private
def generate_id
"#{Time.now} / #{Random.rand}"
Time.now.to_f.to_s
end

def date
@date ||= Time.now.iso8601
def new_date
Time.now.iso8601
end
end
end
Expand Down

0 comments on commit d89e249

Please sign in to comment.