This PR replaces all occurances of interface{} with any to be consistent and improve readability. * example: Replace `interface{}` with `any` Signed-off-by: Thomas Hipp <thomashipp@gmail.com> * pkg/client: Replace `interface{}` with `any` Signed-off-by: Thomas Hipp <thomashipp@gmail.com> * pkg/crypto: Replace `interface{}` with `any` Signed-off-by: Thomas Hipp <thomashipp@gmail.com> * pkg/http: Replace `interface{}` with `any` Signed-off-by: Thomas Hipp <thomashipp@gmail.com> * pkg/oidc: Replace `interface{}` with `any` Signed-off-by: Thomas Hipp <thomashipp@gmail.com> * pkg/op: Replace `interface{}` with `any` Signed-off-by: Thomas Hipp <thomashipp@gmail.com> --------- Signed-off-by: Thomas Hipp <thomashipp@gmail.com>
45 lines
1,010 B
Go
45 lines
1,010 B
Go
package http
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
"reflect"
|
|
)
|
|
|
|
func MarshalJSON(w http.ResponseWriter, i any) {
|
|
MarshalJSONWithStatus(w, i, http.StatusOK)
|
|
}
|
|
|
|
func MarshalJSONWithStatus(w http.ResponseWriter, i any, status int) {
|
|
w.Header().Set("content-type", "application/json")
|
|
w.WriteHeader(status)
|
|
if i == nil || (reflect.ValueOf(i).Kind() == reflect.Ptr && reflect.ValueOf(i).IsNil()) {
|
|
return
|
|
}
|
|
err := json.NewEncoder(w).Encode(i)
|
|
if err != nil {
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
}
|
|
}
|
|
|
|
func ConcatenateJSON(first, second []byte) ([]byte, error) {
|
|
if !bytes.HasSuffix(first, []byte{'}'}) {
|
|
return nil, fmt.Errorf("jws: invalid JSON %s", first)
|
|
}
|
|
if !bytes.HasPrefix(second, []byte{'{'}) {
|
|
return nil, fmt.Errorf("jws: invalid JSON %s", second)
|
|
}
|
|
// check empty
|
|
if len(first) == 2 {
|
|
return second, nil
|
|
}
|
|
if len(second) == 2 {
|
|
return first, nil
|
|
}
|
|
|
|
first[len(first)-1] = ','
|
|
first = append(first, second[1:]...)
|
|
return first, nil
|
|
}
|