diff options
Diffstat (limited to 'src/http.cr')
-rw-r--r-- | src/http.cr | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/http.cr b/src/http.cr index 1179f73..1d0be13 100644 --- a/src/http.cr +++ b/src/http.cr @@ -35,8 +35,9 @@ end class Server def initialize(cfg) - @opennic_host = URI.parse(cfg.opennic_remote).host @db = Database.new cfg.db, cfg.opennic_remote, cfg.icann_remote + + @opennic_host = URI.parse(cfg.opennic_remote).host @opennic_page = Page.new cfg.opennic_local, cfg.opennic_remote, cfg.api, @db @opennic_page.write @@ -116,7 +117,35 @@ class Server end end + getter db + getter opennic_page + getter icann_page + def listen(port) + @db.update_hook ->(arg : Void*, action : Database::UpdateAction, + db : LibC::Char*, table : LibC::Char*, rowid : Int64) { + return unless db == "main" + obj = arg.as Server + case table + when "member" + case action + in .delete? + obj.db.members.delete rowid + in .insert?, .update? + obj.db.update_member rowid + end + when "applicant" + case action + in .delete? + obj.db.applicants.delete rowid + in .insert?, .update? + obj.db.update_applicant rowid + end + end + obj.opennic_page.write + obj.icann_page.write + }, self.as Void* + puts "Listening on http://#{@server.bind_tcp port}" @server.listen end |