12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package agi
- import (
- "io/ioutil"
- "net/http"
- "github.com/robertkrimen/otto"
- user "imuslab.com/arozos/mod/user"
- "imuslab.com/arozos/mod/utils"
- )
- /*
- AGI Serverless Request Handler
- This script allow AGI script to access raw GET / POST parameters for serverless applications
- Author: tobychui
- */
- func (g *Gateway) injectServerlessFunctions(vm *otto.Otto, scriptFile string, scriptScope string, u *user.User, r *http.Request) {
- vm.Set("REQ_METHOD", r.Method)
- vm.Set("getPara", func(call otto.FunctionCall) otto.Value {
- key, _ := call.Argument(0).ToString()
- if key == "" {
- return otto.NullValue()
- }
- value, err := utils.Mv(r, key, false)
- if err != nil {
- return otto.NullValue()
- }
- r, err := vm.ToValue(value)
- if err != nil {
- return otto.NullValue()
- }
- return r
- })
- vm.Set("postPara", func(call otto.FunctionCall) otto.Value {
- key, _ := call.Argument(0).ToString()
- if key == "" {
- return otto.NullValue()
- }
- value, err := utils.Mv(r, key, true)
- if err != nil {
- return otto.NullValue()
- }
- r, err := vm.ToValue(value)
- if err != nil {
- return otto.NullValue()
- }
- return r
- })
- vm.Set("readBody", func(call otto.FunctionCall) otto.Value {
- if r.Body == nil {
- return otto.NullValue()
- }
- bodyContent, err := ioutil.ReadAll(r.Body)
- if err != nil {
- return otto.NullValue()
- }
- r, err := vm.ToValue(string(bodyContent))
- if err != nil {
- return otto.NullValue()
- }
- return r
- })
- }
|