;;; ;;; Time-stamp: <2006-10-11 17:04:45 noel> ;;; ;;; Copyright (C) by Noel Welsh. ;;; ;;; This library is free software; you can redistribute it ;;; and/or modify it under the terms of the GNU Lesser ;;; General Public License as published by the Free Software ;;; Foundation; either version 2.1 of the License, or (at ;;; your option) any later version. ;;; This library is distributed in the hope that it will be ;;; useful, but WITHOUT ANY WARRANTY; without even the ;;; implied warranty of MERCHANTABILITY or FITNESS FOR A ;;; PARTICULAR PURPOSE. See the GNU Lesser General Public ;;; License for more details. ;;; You should have received a copy of the GNU Lesser ;;; General Public License along with this library; if not, ;;; write to the Free Software Foundation, Inc., 59 Temple ;;; Place, Suite 330, Boston, MA 02111-1307 USA ;;; Author: Noel Welsh <[email protected]> ;; ;; ;; Commentary: (module idcheck-db mzscheme (require "base.ss" "idcheck-util.ss") (provide add-user! remove-user! lookup-user get-username) (define db (make-hash-table 'equal)) ;; key->number/fail : string -> number (define (key->number/fail str) (if (registered-key? str) (string->number str) (raise-exn:idcheck (format "The string ~a is not a valid IDCheck key" str)))) ;; add-user! : string string -> void (define (add-user! key data) (hash-table-put! db (key->number/fail key) data)) ;; remove-user : string -> void (define (remove-user! key) (hash-table-remove! db (key->number/fail key))) ;; lookup-user : string -> (U string #f) (define (lookup-user key) (hash-table-get db (key->number/fail key) (lambda () #f))) ;; iget-username : string -> string (define (get-username str) (let ([port (open-input-string str)]) (read-line port 'any) (read-line port 'any))) )