|
package handlers
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"reflect"
|
|
"time"
|
|
|
|
log "github.com/Sirupsen/logrus"
|
|
xql "github.com/archsh/go.xql"
|
|
|
|
"cygnux.net/kepler/restlet"
|
|
|
|
"cygnux.net/kepler/demo1/models"
|
|
)
|
|
|
|
func BgTaskTestHandler(ctx restlet.RequestContext, params restlet.Parameters, queries restlet.Parameters, data []byte) (restlet.Result, error) {
|
|
log.Debugln("BgTaskTestHandler:>", params, queries)
|
|
if s1, s2, e := ctx.NewProgress(100); nil != e {
|
|
return restlet.FailureResult(restlet.FatalInternalServerError, e.Error())
|
|
} else {
|
|
go func() {
|
|
for i := 0; i < 100; i++ {
|
|
ctx.UpdateProgress(s1, i)
|
|
time.Sleep(time.Second / 2)
|
|
}
|
|
}()
|
|
return restlet.Result{
|
|
Code: restlet.SuccessOk,
|
|
Control: &restlet.ControlResult{ProgressURL: s2},
|
|
Data: "OK",
|
|
}, nil
|
|
}
|
|
}
|
|
|
|
func ExampleHandler(ctx restlet.RequestContext, params restlet.Parameters, queries restlet.Parameters, data []byte) (restlet.Result, error) {
|
|
log.Debugln("ExampleHandler:>", params, queries)
|
|
for _, c := range ctx.Request().Cookies() {
|
|
log.Debugln("ExampleHandler:> Get Cookie:", c.Name, c.Value)
|
|
}
|
|
v, b := ctx.Get("demo_session")
|
|
log.Debugln("ExampleHandler:> CTX:", v, b)
|
|
var cookies []*http.Cookie
|
|
var ck = http.Cookie{
|
|
Name: "demo_session",
|
|
Value: time.Now().String(),
|
|
Path: "/",
|
|
SameSite: http.SameSiteStrictMode,
|
|
MaxAge: int(3600 * time.Second),
|
|
}
|
|
cookies = append(cookies, &ck)
|
|
return restlet.Result{
|
|
Code: restlet.SuccessOk,
|
|
Data: "OK",
|
|
Cookies: cookies,
|
|
}, nil
|
|
}
|
|
|
|
func SessionKeeper(next restlet.RequestHandler) restlet.RequestHandler {
|
|
return restlet.RequestHandleFunc(func(ctx restlet.RequestContext, w http.ResponseWriter, r *http.Request) error {
|
|
_ = ctx.Set("demo_session", "Hello")
|
|
return next.Handle(ctx, w, r)
|
|
})
|
|
}
|
|
|
|
type PersonKind struct {
|
|
}
|
|
|
|
func (PersonKind) Entity() xql.TableIdentified {
|
|
return &models.Person{}
|
|
}
|
|
|
|
//func (PersonKind) PreUpdate(ctx restlet.RequestContext, session *xql.Session, urlParams restlet.Parameters, queries restlet.Parameters, columns []xql.UpdateColumn, entity interface{}) (*restlet.QueryController, []xql.UpdateColumn, error) {
|
|
//
|
|
//}
|
|
|
|
func (PersonKind) PostUpdate(ctx restlet.RequestContext, session *xql.Session, qc *restlet.QueryController, columns []xql.UpdateColumn, entity interface{}) ([]xql.UpdateColumn, error) {
|
|
fmt.Println("PersonKind.PostUpdate:> entityObj:", reflect.TypeOf(entity), entity)
|
|
return columns, nil
|
|
}
|