mirror of
https://github.com/ncarlier/webhookd.git
synced 2025-04-07 21:47:09 +00:00
51 lines
1.0 KiB
Go
51 lines
1.0 KiB
Go
package api
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"net/http"
|
|
"net/url"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/ncarlier/webhookd/pkg/strcase"
|
|
)
|
|
|
|
// URLValuesToShellVars convert URL values to shell vars.
|
|
func URLValuesToShellVars(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())
|
|
}
|