Commits

Taylor Venable committed 31549cf

Force binding of certain slots

Comments (0)

Files changed (1)

 
 (define-method (initialize (self <http-request>) . rest)
   (next-method)
+
+  (if (not (slot-bound? self 'method))
+    (error "missing required option #:method"))
+  (if (not (slot-bound? self 'location))
+    (error "missing required option #:location"))
+
+  (case (slot-ref self 'method)
+    ((get post) #t)
+    (else (error "unsupported method:" (slot-ref self 'method))))
+
   (if (string? (slot-ref self 'location))
     (slot-set! self 'location (string->uri (slot-ref self 'location)))))
 
   (body     #:init-keyword #:body))
 
 (define-method (display (req <http-request>) out)
-  (format out "GET ~a HTTP/1.1\r\n\r\n" (uri-path (slot-ref req 'location))))
+  (format out "~a ~a HTTP/1.1\r\n\r\n"
+    (case (slot-ref req 'method)
+      ((get) "GET")
+      ((post) "POST"))
+    (uri-path (slot-ref req 'location))))
 
 (define (http-get request)
   (let ((sock (http-connect location))
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.