-(define (serve-directory path config)
- (let ((file-name (make-pathname (list (config-root-dir config) path)
+(define (serve-selector raw-selector remote-ip config)
+ (let* ((selector-list (string-split raw-selector "\t"))
+ (selector (car selector-list))
+ (arguments (cdr selector-list)))
+ (case (infer-selector-type selector)
+ ((1) (serve-directory selector config))
+ ((0) (serve-text-file selector config))
+ ((7) (serve-query selector arguments remote-ip config))
+ (else (serve-binary-file selector config)))))
+
+(define (serve-directory selector config)
+ (let ((file-name (make-pathname (list (config-root-dir config) selector)