4194: refactor REST Router wrapper into a separate package named keep_utils in keep...
authorradhika <radhika@curoverse.com>
Sat, 15 Nov 2014 02:29:23 +0000 (21:29 -0500)
committerradhika <radhika@curoverse.com>
Sat, 15 Nov 2014 02:29:23 +0000 (21:29 -0500)
services/keep/keep_utils.go [new file with mode: 0644]
services/keepstore/handler_test.go
services/keepstore/handlers.go
services/keepstore/keepstore.go

diff --git a/services/keep/keep_utils.go b/services/keep/keep_utils.go
new file mode 100644 (file)
index 0000000..e9163c0
--- /dev/null
@@ -0,0 +1,49 @@
+package keep_utils
+
+// RESTRouterWrapper
+// LoggingResponseWriter
+
+import (
+       "github.com/gorilla/mux"
+       "log"
+       "net/http"
+)
+
+type LoggingResponseWriter struct {
+  status int
+  data []byte
+  http.ResponseWriter
+}
+
+func (loggingWriter *LoggingResponseWriter) WriteHeader(code int) {
+  loggingWriter.status = code
+  loggingWriter.ResponseWriter.WriteHeader(code)
+}
+
+func (loggingWriter *LoggingResponseWriter) Write(data []byte) (int, error){
+  loggingWriter.data = data
+  return loggingWriter.ResponseWriter.Write(data)
+}
+
+type RESTRouterWrapper struct {
+  router *mux.Router
+}
+
+func MakeRESTRouterWrapper(r *mux.Router) (RESTRouterWrapper) {
+  return (RESTRouterWrapper{r})
+}
+
+func (this RESTRouterWrapper) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
+  loggingWriter := LoggingResponseWriter{200, nil, resp}
+  this.router.ServeHTTP(&loggingWriter, req)
+  if loggingWriter.data != nil && loggingWriter.status == 200 {
+    data_len := len(loggingWriter.data)
+    if data_len > 200 {  // this could be a block, so just print the size
+      log.Printf("[%s] %s %s %d %d", req.RemoteAddr, req.Method, req.URL.Path[1:], loggingWriter.status, data_len)
+    } else {  // this could be a hash or status or a small block etc
+      log.Printf("[%s] %s %s %d %s", req.RemoteAddr, req.Method, req.URL.Path[1:], loggingWriter.status, loggingWriter.data)
+    }
+  } else {
+    log.Printf("[%s] %s %s %d", req.RemoteAddr, req.Method, req.URL.Path[1:], loggingWriter.status)
+  }
+}
index 2514998db973a468fc1b7c2f896810902eafe51d..f30287a448e45b92c1ca135b927b673a51a0baa6 100644 (file)
@@ -21,6 +21,7 @@ import (
        "strings"
        "testing"
        "time"
+       "git.curoverse.com/arvados.git/services/keep"
 )
 
 // A RequestTester represents the parameters for an HTTP request to
@@ -750,7 +751,7 @@ func IssueRequest(router *mux.Router, rt *RequestTester) *httptest.ResponseRecor
        if rt.api_token != "" {
                req.Header.Set("Authorization", "OAuth2 "+rt.api_token)
        }
-  routerWrapper := RESTRouterWrapper{router}
+  routerWrapper := keep_utils.MakeRESTRouterWrapper(router)
   routerWrapper.ServeHTTP(response, req)
        return response
 }
index 49f55e8d14bd7112384fb04fc4a117446f1db208..bd1ca67bfc26643190b2e94a0169bc58f2030c88 100644 (file)
@@ -728,38 +728,3 @@ func CanDelete(api_token string) bool {
 func IsDataManagerToken(api_token string) bool {
        return data_manager_token != "" && api_token == data_manager_token
 }
-
-type LoggingResponseWriter struct {
-  status int
-  data []byte
-  http.ResponseWriter
-}
-
-func (loggingWriter *LoggingResponseWriter) WriteHeader(code int) {
-  loggingWriter.status = code
-  loggingWriter.ResponseWriter.WriteHeader(code)
-}
-
-func (loggingWriter *LoggingResponseWriter) Write(data []byte) (int, error){
-  loggingWriter.data = data
-  return loggingWriter.ResponseWriter.Write(data)
-}
-
-type RESTRouterWrapper struct {
-  router *mux.Router
-}
-
-func (wrapper *RESTRouterWrapper) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
-  loggingWriter := LoggingResponseWriter{200, nil, resp}
-  wrapper.router.ServeHTTP(&loggingWriter, req)
-  if loggingWriter.data != nil && loggingWriter.status == 200 {
-    data_len := len(loggingWriter.data)
-    if data_len > 200 {  // this could be a block, so just print the size
-      log.Printf("[%s] %s %s %d %d", req.RemoteAddr, req.Method, req.URL.Path[1:], loggingWriter.status, data_len)
-    } else {  // this could be a hash or status or a small block etc
-      log.Printf("[%s] %s %s %d %s", req.RemoteAddr, req.Method, req.URL.Path[1:], loggingWriter.status, loggingWriter.data)
-    }
-  } else {
-    log.Printf("[%s] %s %s %d", req.RemoteAddr, req.Method, req.URL.Path[1:], loggingWriter.status)
-  }
-}
index eafcc2395e7aaef5f03d0d1cf188ec455bafdb09..6d149f79a288e579fecf0dbd11f7f1cef96fb7fb 100644 (file)
@@ -13,6 +13,7 @@ import (
        "strings"
        "syscall"
        "time"
+       "git.curoverse.com/arvados.git/services/keep"
 )
 
 // ======================
@@ -263,7 +264,7 @@ func main() {
        KeepVM = MakeRRVolumeManager(goodvols)
 
        // Tell the built-in HTTP server to direct all requests to the REST router.
-  routerWrapper := RESTRouterWrapper{MakeRESTRouter()}
+  routerWrapper := keep_utils.MakeRESTRouterWrapper(MakeRESTRouter())
   http.HandleFunc("/", func(resp http.ResponseWriter, req *http.Request) {
     routerWrapper.ServeHTTP(resp, req)
   })