// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved. //go:build script // +build script package js import ( "errors" teaconst "github.com/TeaOSLab/EdgeNode/internal/const" "github.com/iwind/TeaGo/maps" "net/http" ) func init() { if !teaconst.IsMain { return } SharedLibraryManager.Register(&JSNetHTTPRequestLibrary{}) } type JSNetHTTPRequestLibrary struct { JSBaseLibrary } func (this *JSNetHTTPRequestLibrary) JSNamespace() string { return "gojs.net.http.JSNetHTTPRequestLibrary" } func (this *JSNetHTTPRequestLibrary) JSPrototype() string { return `gojs.net.http.Request = class { #goObjectId constructor() { } setGoObject(objectId) { this.#goObjectId = objectId } goObjectId() { return this.#goObjectId } get id() { return $this.Id(this.#goObjectId) } get requestId() { return this.id } get url() { return $this.URL(this.#goObjectId) } get server() { return $this.Server(this.#goObjectId) } get node() { return $this.Node(this.#goObjectId) } get requestURL() { return this.url } get path() { return $this.Path(this.#goObjectId) } get requestPath() { return this.path } get uri() { return $this.URI(this.#goObjectId) } get requestURI() { return this.uri } set uri(uri) { $this.SetURI(this.#goObjectId, uri) } set requestURI(uri) { this.uri = uri } get host() { return $this.Host(this.#goObjectId) } get remoteAddr() { return $this.RemoteAddr(this.#goObjectId) } get rawRemoteAddr() { return $this.RawRemoteAddr(this.#goObjectId) } get remotePort() { return $this.RemotePort(this.#goObjectId) } get method() { return $this.Method(this.#goObjectId) } get contentLength() { return $this.ContentLength(this.#goObjectId) } get transferEncoding() { return $this.TransferEncoding(this.#goObjectId) } get proto() { return $this.Proto(this.#goObjectId) } get protoMajor() { return $this.ProtoMajor(this.#goObjectId) } get protoMinor() { return $this.ProtoMinor(this.#goObjectId) } cookie(name) { return $this.Cookie(this.#goObjectId, name) } get header() { let header = $this.Header(this.#goObjectId) if (header == null) { header = {} } return header } setHeader(name, values) { $this.SetHeader(this.#goObjectId, name, values) } deleteHeader(name) { $this.DeleteHeader(this.#goObjectId, name) } setAttr(name, value) { $this.SetAttr(this.#goObjectId, name, value) } setVar(name, value) { $this.SetHeader(this.#goObjectId, name, value) } format(s) { return $this.Format(this.#goObjectId, s) } done() { $this.Done(this.#goObjectId) } close() { $this.Close(this.#goObjectId) } allow() { $this.Allow(this.#goObjectId) } }` } func (this *JSNetHTTPRequestLibrary) Id(arguments *FunctionArguments) (string, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return "", ErrGoObjectNotFound } return obj.(RequestInterface).Id(), nil } func (this *JSNetHTTPRequestLibrary) Server(arguments *FunctionArguments) (maps.Map, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return maps.Map{}, ErrGoObjectNotFound } return obj.(RequestInterface).Server(), nil } func (this *JSNetHTTPRequestLibrary) Node(arguments *FunctionArguments) (maps.Map, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return maps.Map{}, ErrGoObjectNotFound } return obj.(RequestInterface).Node(), nil } func (this *JSNetHTTPRequestLibrary) URL(arguments *FunctionArguments) (string, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return "", ErrGoObjectNotFound } return obj.(RequestInterface).URL(), nil } func (this *JSNetHTTPRequestLibrary) Path(arguments *FunctionArguments) (string, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return "", ErrGoObjectNotFound } return obj.(RequestInterface).Path(), nil } func (this *JSNetHTTPRequestLibrary) URI(arguments *FunctionArguments) (string, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return "", ErrGoObjectNotFound } return obj.(RequestInterface).URI(), nil } func (this *JSNetHTTPRequestLibrary) SetURI(arguments *FunctionArguments) (any, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return "", ErrGoObjectNotFound } var uri, _ = arguments.FormatStringAt(1) obj.(RequestInterface).SetURI(uri) return this.JSSuccess() } func (this *JSNetHTTPRequestLibrary) Host(arguments *FunctionArguments) (string, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return "", ErrGoObjectNotFound } return obj.(RequestInterface).Host(), nil } func (this *JSNetHTTPRequestLibrary) RemoteAddr(arguments *FunctionArguments) (string, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return "", ErrGoObjectNotFound } return obj.(RequestInterface).RemoteAddr(), nil } func (this *JSNetHTTPRequestLibrary) RawRemoteAddr(arguments *FunctionArguments) (string, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return "", ErrGoObjectNotFound } return obj.(RequestInterface).RawRemoteAddr(), nil } func (this *JSNetHTTPRequestLibrary) RemotePort(arguments *FunctionArguments) (int, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return 0, ErrGoObjectNotFound } return obj.(RequestInterface).RemotePort(), nil } func (this *JSNetHTTPRequestLibrary) Method(arguments *FunctionArguments) (string, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return "", ErrGoObjectNotFound } return obj.(RequestInterface).Method(), nil } func (this *JSNetHTTPRequestLibrary) ContentLength(arguments *FunctionArguments) (int64, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return 0, ErrGoObjectNotFound } return obj.(RequestInterface).ContentLength(), nil } func (this *JSNetHTTPRequestLibrary) TransferEncoding(arguments *FunctionArguments) (string, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return "", ErrGoObjectNotFound } return obj.(RequestInterface).TransferEncoding(), nil } func (this *JSNetHTTPRequestLibrary) Proto(arguments *FunctionArguments) (string, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return "", ErrGoObjectNotFound } return obj.(RequestInterface).Proto(), nil } func (this *JSNetHTTPRequestLibrary) ProtoMajor(arguments *FunctionArguments) (int, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return 0, ErrGoObjectNotFound } return obj.(RequestInterface).ProtoMajor(), nil } func (this *JSNetHTTPRequestLibrary) ProtoMinor(arguments *FunctionArguments) (int, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return 0, ErrGoObjectNotFound } return obj.(RequestInterface).ProtoMinor(), nil } func (this *JSNetHTTPRequestLibrary) Cookie(arguments *FunctionArguments) (string, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return "", ErrGoObjectNotFound } var name, _ = arguments.FormatStringAt(1) if len(name) == 0 { return "", nil } return obj.(RequestInterface).Cookie(name), nil } func (this *JSNetHTTPRequestLibrary) Header(arguments *FunctionArguments) (http.Header, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return http.Header{}, ErrGoObjectNotFound } return obj.(RequestInterface).Header(), nil } func (this *JSNetHTTPRequestLibrary) SetHeader(arguments *FunctionArguments) (any, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return nil, ErrGoObjectNotFound } argName, ok := arguments.FormatStringAt(1) if !ok || len(argName) == 0 { return nil, errors.New("header name should not be empty") } var name = argName argValues, ok := arguments.FormatStringsAt(2) if !ok { argValueString, ok := arguments.FormatStringAt(2) if !ok { obj.(RequestInterface).SetHeader(name, []string{""}) return this.JSSuccess() } obj.(RequestInterface).SetHeader(name, []string{argValueString}) return this.JSSuccess() } obj.(RequestInterface).SetHeader(name, argValues) return this.JSSuccess() } func (this *JSNetHTTPRequestLibrary) DeleteHeader(arguments *FunctionArguments) (any, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return nil, ErrGoObjectNotFound } name, ok := arguments.FormatStringAt(1) if !ok { return this.JSSuccess() } obj.(RequestInterface).DeleteHeader(name) return this.JSSuccess() } func (this *JSNetHTTPRequestLibrary) SetAttr(arguments *FunctionArguments) (any, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return nil, ErrGoObjectNotFound } argName, ok := arguments.FormatStringAt(1) if !ok || len(argName) == 0 { return nil, errors.New("header name should not be empty") } var name = argName value, _ := arguments.FormatStringAt(2) obj.(RequestInterface).SetAttr(name, value) return this.JSSuccess() } func (this *JSNetHTTPRequestLibrary) SetVar(arguments *FunctionArguments) (any, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return nil, ErrGoObjectNotFound } argName, ok := arguments.FormatStringAt(1) if !ok || len(argName) == 0 { return nil, errors.New("header name should not be empty") } var name = argName value, _ := arguments.FormatStringAt(2) obj.(RequestInterface).SetVar(name, value) return this.JSSuccess() } func (this *JSNetHTTPRequestLibrary) Format(arguments *FunctionArguments) (string, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return "", ErrGoObjectNotFound } s, _ := arguments.FormatStringAt(1) return obj.(RequestInterface).Format(s), nil } func (this *JSNetHTTPRequestLibrary) Done(arguments *FunctionArguments) (any, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return nil, ErrGoObjectNotFound } obj.(RequestInterface).Done() return this.JSSuccess() } func (this *JSNetHTTPRequestLibrary) Close(arguments *FunctionArguments) (any, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return nil, ErrGoObjectNotFound } obj.(RequestInterface).Close() return this.JSSuccess() } func (this *JSNetHTTPRequestLibrary) Allow(arguments *FunctionArguments) (any, error) { obj, ok := arguments.GoObjectAt(0) if !ok { return nil, ErrGoObjectNotFound } obj.(RequestInterface).Allow() return this.JSSuccess() }