Browse Source

added usercache search endpoint

master
Yessiest 12 months ago
parent
commit
43f82df65a
  1. 31
      client.rb
  2. 17
      proto.rb
  3. 36
      server.rb

31
client.rb

@ -38,7 +38,7 @@ Thread.new do
next
end
messages["messages"].each { |x|
puts "#{x["from"]} says: #{x["content"]}"
puts "#{x["user"]["username"]} says: #{x["content"]}"
}
end
end
@ -57,13 +57,39 @@ while buf = Readline.readline("> ", true)
puts "/help - this message"
puts "/send <protcol_id> - direct messages to somebody"
puts "/exit - quit program"
puts "/find <username> - find a username by pattern"
puts "/find-protoid <protoid> - find by a protocol id"
next
end
if buf == "/exit" then
post("/user/delete",{
"protocol_id"=> "heimdall-"+nickname
})
exit
end
if buf.match(/^\/send .*$/) then
target = buf.match(/^\/send ([^\s]*)$/)[1]
next
end
if buf.match(/^\/find .*$/) then
uname = (buf.match /^\/find (.*)$/)[1]
users = get("/user/find/by-username?username=#{uname}")["results"]
puts "Found #{users.length} results: "
users.each { |x| puts x[0] }
next
end
if buf.match(/^\/find-protoid .*$/) then
pid = (buf.match /^\/find-protoid (.*)$/)[1]
users = get("/user/find/by-protoid?protocol_id=#{pid}")["results"]
puts "Found #{users.length} results: "
users.each { |x| puts x[0] }
next
end
if target then
post("/user/send", {
"to" => target,
@ -71,7 +97,4 @@ while buf = Readline.readline("> ", true)
"from" => "heimdall-"+nickname
})
end
if buf.match(/^\/send .*$/) then
target = buf.match(/^\/send ([^\s]*)$/)[1]
end
end

17
proto.rb

@ -1,7 +1,7 @@
UIDS = {}
module Heimdall
VERSION = "0.1 alpha"
VERSION = "0.4 alpha"
attr_reader :VERSION
class ProtocolError < StandardError
@ -31,6 +31,15 @@ module Heimdall
raise ProtocolError, "user not found" if not @users[protoid]
return @users[protoid]
end
def search(name,n,&block)
@users.select(&block).take(n)
end
def search_by_username(name, n = 10)
search(name,n) { |k,v| v.username.match? name }
end
def search_by_protoid(name,n = 10)
search(name,n) { |k,v| k.match? name }
end
def delete(protoid)
@users.delete protoid
end
@ -44,6 +53,12 @@ module Heimdall
@direct = DirectChannel.new
super()
end
def to_card()
return {
"username" => @username,
"protoid" => @protoid
}
end
attr_reader :username
attr_reader :protoid
attr_reader :direct

36
server.rb

@ -39,6 +39,38 @@ server = Hyde::Server.new Port: 8000 do
puts ctx.request.body.inspect
end
path "find" do
index ["by-username"]
get "by-username" do |ctx|
req,res = ctx.request,ctx.response
begin
_require_keys(req.query, {
username: String
})
_send_json(res, {
"results": Users.search_by_username(req.query['username'])
})
rescue KeyError => keyerror
_throw_error(res,keyerror)
end
end
get "by-protoid" do |ctx|
req,res = ctx.request,ctx.response
begin
_require_keys(req.query, {
protocol_id: String
})
_send_json(res, {
"results": Users.search_by_protoid(req.query['protocol_id'])
})
rescue KeyError => keyerror
_throw_error(res,keyerror)
end
end
end
get "exists" do |ctx|
req,res = ctx.request,ctx.response
begin
@ -112,7 +144,7 @@ server = Hyde::Server.new Port: 8000 do
_send_json(res, {
messages: messages.map { |x|
x = x.to_struct
x["username"] = Users.get(x["from"]).username
x["user"] = Users.get(x["from"]).to_card
x
}
})
@ -133,7 +165,7 @@ server = Hyde::Server.new Port: 8000 do
_send_json(res, {
messages: messages.map { |x|
x = x.to_struct
x["username"] = Users.get(x["from"]).username
x["user"] = Users.get(x["from"]).to_card
x
}
})

Loading…
Cancel
Save