webhookd/pkg/api/helper.go
2020-02-29 08:18:12 +00:00

51 lines
1.0 KiB
Go

package api
import (
"bytes"
"fmt"
"net/http"
"net/url"
"strings"
"time"
"github.com/ncarlier/webhookd/pkg/strcase"
)
// QueryParamsToShellVars convert URL query parameters to shell vars.
func QueryParamsToShellVars(q url.Values) []string {
var params []string
for k, v := range q {
var buf bytes.Buffer
value, err := url.QueryUnescape(strings.Join(v[:], ","))
if err != nil {
continue
}
buf.WriteString(strcase.ToSnake(k))
buf.WriteString("=")
buf.WriteString(value)
params = append(params, buf.String())
}
return params
}
// HTTPHeadersToShellVars convert HTTP headers to shell vars.
func HTTPHeadersToShellVars(h http.Header) []string {
var params []string
for k, v := range h {
var buf bytes.Buffer
value, err := url.QueryUnescape(strings.Join(v[:], ","))
if err != nil {
continue
}
buf.WriteString(strcase.ToSnake(k))
buf.WriteString("=")
buf.WriteString(value)
params = append(params, buf.String())
}
return params
}
func nextRequestID() string {
return fmt.Sprintf("%d", time.Now().UnixNano())
}