[#3447] added jsvm http.Cookie binding
This commit is contained in:
parent
6d672348e7
commit
49e3f4ad93
|
@ -412,6 +412,11 @@ func baseBinds(vm *goja.Runtime) {
|
||||||
|
|
||||||
return instanceValue
|
return instanceValue
|
||||||
})
|
})
|
||||||
|
|
||||||
|
vm.Set("Cookie", func(call goja.ConstructorCall) *goja.Object {
|
||||||
|
instance := &http.Cookie{}
|
||||||
|
return structConstructor(vm, call, instance)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func dbxBinds(vm *goja.Runtime) {
|
func dbxBinds(vm *goja.Runtime) {
|
||||||
|
|
|
@ -46,7 +46,7 @@ func TestBaseBindsCount(t *testing.T) {
|
||||||
vm := goja.New()
|
vm := goja.New()
|
||||||
baseBinds(vm)
|
baseBinds(vm)
|
||||||
|
|
||||||
testBindsCount(vm, "this", 14, t)
|
testBindsCount(vm, "this", 15, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBaseBindsReaderToString(t *testing.T) {
|
func TestBaseBindsReaderToString(t *testing.T) {
|
||||||
|
@ -69,6 +69,38 @@ func TestBaseBindsReaderToString(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBaseBindsCookie(t *testing.T) {
|
||||||
|
app, _ := tests.NewTestApp()
|
||||||
|
defer app.Cleanup()
|
||||||
|
|
||||||
|
vm := goja.New()
|
||||||
|
baseBinds(vm)
|
||||||
|
|
||||||
|
_, err := vm.RunString(`
|
||||||
|
const cookie = new Cookie({
|
||||||
|
name: "example_name",
|
||||||
|
value: "example_value",
|
||||||
|
path: "/example_path",
|
||||||
|
domain: "example.com",
|
||||||
|
maxAge: 10,
|
||||||
|
secure: true,
|
||||||
|
httpOnly: true,
|
||||||
|
sameSite: 3,
|
||||||
|
});
|
||||||
|
|
||||||
|
const result = cookie.string();
|
||||||
|
|
||||||
|
const expected = "example_name=example_value; Path=/example_path; Domain=example.com; Max-Age=10; HttpOnly; Secure; SameSite=Strict";
|
||||||
|
|
||||||
|
if (expected != result) {
|
||||||
|
throw new("Expected \n" + expected + "\ngot\n" + result);
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestBaseBindsRecord(t *testing.T) {
|
func TestBaseBindsRecord(t *testing.T) {
|
||||||
app, _ := tests.NewTestApp()
|
app, _ := tests.NewTestApp()
|
||||||
defer app.Cleanup()
|
defer app.Cleanup()
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -450,6 +450,36 @@ declare class Dao implements daos.Dao {
|
||||||
constructor(concurrentDB?: dbx.Builder, nonconcurrentDB?: dbx.Builder)
|
constructor(concurrentDB?: dbx.Builder, nonconcurrentDB?: dbx.Builder)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface Cookie extends http.Cookie{} // merge
|
||||||
|
/**
|
||||||
|
* A Cookie represents an HTTP cookie as sent in the Set-Cookie header of an
|
||||||
|
* HTTP response.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
*
|
||||||
|
* ` + "```" + `js
|
||||||
|
* routerAdd("POST", "/example", (c) => {
|
||||||
|
* c.setCookie(new Cookie({
|
||||||
|
* name: "example_name",
|
||||||
|
* value: "example_value",
|
||||||
|
* path: "/",
|
||||||
|
* domain: "example.com",
|
||||||
|
* maxAge: 10,
|
||||||
|
* secure: true,
|
||||||
|
* httpOnly: true,
|
||||||
|
* sameSite: 3,
|
||||||
|
* }))
|
||||||
|
*
|
||||||
|
* return c.redirect(200, "/");
|
||||||
|
* })
|
||||||
|
* ` + "```" + `
|
||||||
|
*
|
||||||
|
* @group PocketBase
|
||||||
|
*/
|
||||||
|
declare class Cookie implements http.Cookie {
|
||||||
|
constructor(options?: Partial<http.Cookie>)
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------------------------------
|
// -------------------------------------------------------------------
|
||||||
// dbxBinds
|
// dbxBinds
|
||||||
// -------------------------------------------------------------------
|
// -------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue