Albirew/nyaa-pantsu
Archivé
1
0
Bifurcation 0
Ce dépôt a été archivé le 2022-05-07. Vous pouvez voir ses fichiers ou le cloner, mais pas ouvrir de ticket ou de demandes d'ajout, ni soumettre de changements.
nyaa-pantsu/vendor/github.com/moul/http2curl/http2curl.go
akuma06 03ea72595d OAuth API [done] (#1275)
* Initial Commit for OAuth API

This builds and run and return the right error.
Need to test it and then adding all users as possible client

* Added mising dependency

* just compile already...

* Fixing template test

* Imrpovements

Moved db stuff in models
Added some tests
Added form in modpanel to add/update a client
Added controllers for add/update of client

* Added Forms + speed improvements

Controller oauth client listing + html
Controller oauth client delete + messages
Messages on comment delete
New ES config that disable ES if set to false. Improve load speed on local development
Fix a load config bug
Fix index admin & translation string sign_out broken by @ewhal

* Sanitize empty strig in form array + css

Multiple empty array of strings are sanitized for the oauth client create form
Added some css for the form display

* Upload and Create form works

* Fix splitting response types

* Removing required on secret when updating

* fix travis error

* Fix travis template test

* Update dependency

* Moved to jinzhu instead of azhao

* randomizen secret on creation

* Final touch on oath api

improved display name
fix grant form csrf
fix login csrf on oauth

* Fix gorm test

* fix template test

* Fixing deleted dependency issue

* Make travis faster

* Fix typo

* Fix csrf for api calls

* This shouldn't be exempt

* Removing hard coded hash

@ewhal Don't forget to replace the hash in tokens.go with another one

* Added an example on how to use OAuth middleware

* Renamed fosite utils to oauth2 utils
2017-07-28 13:46:40 +10:00

72 lignes
1,4 Kio
Go

package http2curl
import (
"bytes"
"fmt"
"io"
"io/ioutil"
"net/http"
"sort"
"strings"
)
// CurlCommand contains exec.Command compatible slice + helpers
type CurlCommand struct {
slice []string
}
// append appends a string to the CurlCommand
func (c *CurlCommand) append(newSlice ...string) {
c.slice = append(c.slice, newSlice...)
}
// String returns a ready to copy/paste command
func (c *CurlCommand) String() string {
return strings.Join(c.slice, " ")
}
// nopCloser is used to create a new io.ReadCloser for req.Body
type nopCloser struct {
io.Reader
}
func bashEscape(str string) string {
return `'` + strings.Replace(str, `'`, `'\''`, -1) + `'`
}
func (nopCloser) Close() error { return nil }
// GetCurlCommand returns a CurlCommand corresponding to an http.Request
func GetCurlCommand(req *http.Request) (*CurlCommand, error) {
command := CurlCommand{}
command.append("curl")
command.append("-X", bashEscape(req.Method))
if req.Body != nil {
body, err := ioutil.ReadAll(req.Body)
if err != nil {
return nil, err
}
req.Body = nopCloser{bytes.NewBuffer(body)}
bodyEscaped := bashEscape(string(body))
command.append("-d", bodyEscaped)
}
var keys []string
for k := range req.Header {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
command.append("-H", bashEscape(fmt.Sprintf("%s: %s", k, strings.Join(req.Header[k], " "))))
}
command.append(bashEscape(req.URL.String()))
return &command, nil
}