|
@ -58,7 +58,7 @@ func HashKey(s ...string) string { |
|
|
return fmt.Sprintf("%x", bs) |
|
|
return fmt.Sprintf("%x", bs) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func Restelet_Failure_Response(code uint, message string) (*RestletResult, error) { |
|
|
|
|
|
|
|
|
func Failure_Response(code uint, message string) (*RestletResult, error) { |
|
|
return &RestletResult{ |
|
|
return &RestletResult{ |
|
|
Code: code, |
|
|
Code: code, |
|
|
Message: message, |
|
|
Message: message, |
|
@ -115,7 +115,6 @@ func MakeRestletHandler(h RestletHandler, predictor RequestPredictor, ctx_provid |
|
|
log.Errorln("Read Body error:>", e) |
|
|
log.Errorln("Read Body error:>", e) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if r, e := h.Handle(ctx, url_params, queries, post_data); nil != e { |
|
|
if r, e := h.Handle(ctx, url_params, queries, post_data); nil != e { |
|
|
response.Header().Set("Content-Type", "text/plain") |
|
|
response.Header().Set("Content-Type", "text/plain") |
|
|
response.WriteHeader(501) |
|
|
response.WriteHeader(501) |
|
@ -125,17 +124,41 @@ func MakeRestletHandler(h RestletHandler, predictor RequestPredictor, ctx_provid |
|
|
//if self.option.Generic.Debug {
|
|
|
//if self.option.Generic.Debug {
|
|
|
// r.Debug = &restlet.DebugResult{Start:t1, Finish:time.Now().Unix()}
|
|
|
// r.Debug = &restlet.DebugResult{Start:t1, Finish:time.Now().Unix()}
|
|
|
//}
|
|
|
//}
|
|
|
if b, e := json.Marshal(r); nil != e { |
|
|
|
|
|
|
|
|
//log.Debugf("MakeRestletHandler:> Result: %+v \n", r)
|
|
|
|
|
|
var output interface{} |
|
|
|
|
|
var err error |
|
|
|
|
|
var pbytes []byte |
|
|
|
|
|
var ok bool |
|
|
|
|
|
if r.DataOnly { |
|
|
|
|
|
output = r.Data |
|
|
|
|
|
}else{ |
|
|
|
|
|
output = r |
|
|
|
|
|
} |
|
|
|
|
|
if r.RawBytes { |
|
|
|
|
|
err = nil |
|
|
|
|
|
pbytes, ok = output.([]byte) |
|
|
|
|
|
if !ok { |
|
|
|
|
|
panic("Data not row bytes!") |
|
|
|
|
|
} |
|
|
|
|
|
}else{ |
|
|
|
|
|
r.ContentType = "application/json" |
|
|
|
|
|
pbytes, err = json.Marshal(output) |
|
|
|
|
|
} |
|
|
|
|
|
if nil != err { |
|
|
response.Header().Set("Content-Type", "text/plain") |
|
|
response.Header().Set("Content-Type", "text/plain") |
|
|
response.WriteHeader(500) |
|
|
response.WriteHeader(500) |
|
|
response.Write([]byte(fmt.Sprintf("Failed:> %s", e))) |
|
|
response.Write([]byte(fmt.Sprintf("Failed:> %s", e))) |
|
|
} else { |
|
|
} else { |
|
|
response.Header().Set("Content-Type", "application/json") |
|
|
|
|
|
response.WriteHeader(int(r.Code / 100)) |
|
|
|
|
|
response.Write(b) |
|
|
|
|
|
|
|
|
statusCode := int(r.Code / 100) |
|
|
|
|
|
if statusCode / 100 < 1 || statusCode / 100 > 5 { |
|
|
|
|
|
statusCode = 200 |
|
|
|
|
|
} |
|
|
|
|
|
response.Header().Set("Content-Type", r.ContentType) |
|
|
|
|
|
response.WriteHeader(statusCode) |
|
|
|
|
|
response.Write(pbytes) |
|
|
if nil != cache && MatchMethod(request.Method, cache.CacheMethods) { |
|
|
if nil != cache && MatchMethod(request.Method, cache.CacheMethods) { |
|
|
//k := HashKey(request.Method, request.URL.RawPath)
|
|
|
//k := HashKey(request.Method, request.URL.RawPath)
|
|
|
ctx.Cache().Set(c_key, b, cache.Expires) |
|
|
|
|
|
|
|
|
ctx.Cache().Set(c_key, pbytes, cache.Expires) |
|
|
log.Debugln("Cached Content for:> ", c_key, request.Method, request.URL.String()) |
|
|
log.Debugln("Cached Content for:> ", c_key, request.Method, request.URL.String()) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|