You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@htrace.apache.org by ec...@apache.org on 2015/01/03 03:05:08 UTC
incubator-htrace git commit: HTRACE-49 Make HTraced's urls more
restful
Repository: incubator-htrace
Updated Branches:
refs/heads/master 78542437f -> 16fc1bf75
HTRACE-49 Make HTraced's urls more restful
Project: http://git-wip-us.apache.org/repos/asf/incubator-htrace/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-htrace/commit/16fc1bf7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-htrace/tree/16fc1bf7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-htrace/diff/16fc1bf7
Branch: refs/heads/master
Commit: 16fc1bf759c48a74aa5fe6b8f40e81a665cb32d7
Parents: 7854243
Author: Elliott Clark <el...@fb.com>
Authored: Fri Jan 2 14:34:45 2015 -0800
Committer: Elliott Clark <el...@fb.com>
Committed: Fri Jan 2 17:15:30 2015 -0800
----------------------------------------------------------------------
.gitignore | 2 ++
NOTICE.txt | 3 ++
.../go/src/org/apache/htrace/htraced/rest.go | 38 ++++++++++----------
pom.xml | 1 +
4 files changed, 24 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/16fc1bf7/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index f6c1807..1c92de9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,4 +14,6 @@ htrace-core/src/go/pkg
htrace-core/src/go/src/org/apache/htrace/resource
htrace-core/src/go/src/github.com/
htrace-core/src/go/src/gopkg.in/
+htrace-core/src/go/src/code.google.com/
+htrace-core/src/go/src/golang.org/
htrace-core/src/go/src/org/apache/htrace/common/version.go
http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/16fc1bf7/NOTICE.txt
----------------------------------------------------------------------
diff --git a/NOTICE.txt b/NOTICE.txt
index 19f97eb..c377812 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -16,3 +16,6 @@ It is by alecthomas: https://github.com/alecthomas/units
Kingpin, a go command line and flag parser is licensed MIT
(https://github.com/alecthomas/kingpin/blob/master/COPYING)
by alecthomas
+
+Gorilla mux gorilla/mux implements a request router and dispatcher is BSD licensed
+( https://github.com/gorilla/mux/blob/master/LICENSE
http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/16fc1bf7/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go
----------------------------------------------------------------------
diff --git a/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go b/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go
index 73409fe..61f4a02 100644
--- a/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go
+++ b/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go
@@ -21,6 +21,7 @@ package main
import (
"encoding/json"
+ "github.com/gorilla/mux"
"log"
"mime"
"net/http"
@@ -51,18 +52,11 @@ type dataStoreHandler struct {
store *dataStore
}
-func (hand *dataStoreHandler) getReqField64(fieldName string, w http.ResponseWriter,
- req *http.Request) (int64, bool) {
- str := req.FormValue(fieldName)
- if str == "" {
- w.WriteHeader(http.StatusBadRequest)
- w.Write([]byte("No " + fieldName + " specified."))
- return -1, false
- }
+func (hand *dataStoreHandler) parse64(w http.ResponseWriter, str string) (int64, bool) {
val, err := strconv.ParseUint(str, 16, 64)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
- w.Write([]byte("Error parsing " + fieldName + ": " + err.Error()))
+ w.Write([]byte("Error parsing : " + err.Error()))
return -1, false
}
return int64(val), true
@@ -91,7 +85,9 @@ type findSidHandler struct {
func (hand *findSidHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
req.ParseForm()
- sid, ok := hand.getReqField64("sid", w, req)
+ vars := mux.Vars(req)
+ stringSid := vars["id"]
+ sid, ok := hand.parse64(w, stringSid)
if !ok {
return
}
@@ -109,7 +105,9 @@ type findChildrenHandler struct {
func (hand *findChildrenHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
req.ParseForm()
- sid, ok := hand.getReqField64("sid", w, req)
+ vars := mux.Vars(req)
+ stringSid := vars["id"]
+ sid, ok := hand.parse64(w, stringSid)
if !ok {
return
}
@@ -149,20 +147,20 @@ func (hand *defaultServeHandler) ServeHTTP(w http.ResponseWriter, req *http.Requ
}
func startRestServer(cnf *conf.Config, store *dataStore) {
- mux := http.NewServeMux()
- serverInfoH := &serverInfoHandler{}
- mux.Handle("/serverInfo", serverInfoH)
+ r := mux.NewRouter().StrictSlash(false)
+ // Default Handler. This will serve requests for static requests.
+ r.Handle("/", &defaultServeHandler{})
+ r.Handle("/server/info", &serverInfoHandler{}).Methods("GET")
+
+ span := r.PathPrefix("/span").Subrouter()
findSidH := &findSidHandler{dataStoreHandler: dataStoreHandler{store: store}}
- mux.Handle("/findSid", findSidH)
+ span.Handle("/{id}", findSidH).Methods("GET")
findChildrenH := &findChildrenHandler{dataStoreHandler: dataStoreHandler{store: store}}
- mux.Handle("/findChildren", findChildrenH)
-
- defaultServeH := &defaultServeHandler{}
- mux.Handle("/", defaultServeH)
+ span.Handle("/{id}/children", findChildrenH).Methods("GET")
- http.ListenAndServe(cnf.Get(conf.HTRACE_WEB_ADDRESS), mux)
+ http.ListenAndServe(cnf.Get(conf.HTRACE_WEB_ADDRESS), r)
log.Println("Started REST server...")
}
http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/16fc1bf7/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5977a9e..a85149a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -164,6 +164,7 @@ language governing permissions and limitations under the License. -->
<!-- Pulled down sources -->
<exclude>**/gopkg.in/**</exclude>
<exclude>**/github.com/**</exclude>
+ <exclude>**/golang.org/**</exclude>
</excludes>
</configuration>
</plugin>