Kepler core
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

80 lines
2.4 KiB

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
}