replace zxq.co/ripple/hanayo
This commit is contained in:
127
vendor/github.com/RangelReale/osin/example/osincliclient/osincliclient.go
generated
vendored
Normal file
127
vendor/github.com/RangelReale/osin/example/osincliclient/osincliclient.go
generated
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
package main
|
||||
|
||||
// Use github.com/RangelReale/osincli client to test
|
||||
// Open url in browser:
|
||||
// http://localhost:14001
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/RangelReale/osin"
|
||||
"github.com/RangelReale/osin/example"
|
||||
"github.com/RangelReale/osincli"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// create http muxes
|
||||
serverhttp := http.NewServeMux()
|
||||
clienthttp := http.NewServeMux()
|
||||
|
||||
// create server
|
||||
config := osin.NewServerConfig()
|
||||
sstorage := example.NewTestStorage()
|
||||
sstorage.SetClient("1234", &osin.DefaultClient{
|
||||
Id: "1234",
|
||||
Secret: "aabbccdd",
|
||||
RedirectUri: "http://localhost:14001/appauth",
|
||||
})
|
||||
server := osin.NewServer(config, sstorage)
|
||||
|
||||
// create client
|
||||
cliconfig := &osincli.ClientConfig{
|
||||
ClientId: "1234",
|
||||
ClientSecret: "aabbccdd",
|
||||
AuthorizeUrl: "http://localhost:14000/authorize",
|
||||
TokenUrl: "http://localhost:14000/token",
|
||||
RedirectUrl: "http://localhost:14001/appauth",
|
||||
}
|
||||
client, err := osincli.NewClient(cliconfig)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// create a new request to generate the url
|
||||
areq := client.NewAuthorizeRequest(osincli.CODE)
|
||||
|
||||
// SERVER
|
||||
|
||||
// Authorization code endpoint
|
||||
serverhttp.HandleFunc("/authorize", func(w http.ResponseWriter, r *http.Request) {
|
||||
resp := server.NewResponse()
|
||||
defer resp.Close()
|
||||
|
||||
if ar := server.HandleAuthorizeRequest(resp, r); ar != nil {
|
||||
if !example.HandleLoginPage(ar, w, r) {
|
||||
return
|
||||
}
|
||||
ar.Authorized = true
|
||||
server.FinishAuthorizeRequest(resp, r, ar)
|
||||
}
|
||||
if resp.IsError && resp.InternalError != nil {
|
||||
fmt.Printf("ERROR: %s\n", resp.InternalError)
|
||||
}
|
||||
osin.OutputJSON(resp, w, r)
|
||||
})
|
||||
|
||||
// Access token endpoint
|
||||
serverhttp.HandleFunc("/token", func(w http.ResponseWriter, r *http.Request) {
|
||||
resp := server.NewResponse()
|
||||
defer resp.Close()
|
||||
|
||||
if ar := server.HandleAccessRequest(resp, r); ar != nil {
|
||||
ar.Authorized = true
|
||||
server.FinishAccessRequest(resp, r, ar)
|
||||
}
|
||||
if resp.IsError && resp.InternalError != nil {
|
||||
fmt.Printf("ERROR: %s\n", resp.InternalError)
|
||||
}
|
||||
osin.OutputJSON(resp, w, r)
|
||||
})
|
||||
|
||||
// Information endpoint
|
||||
serverhttp.HandleFunc("/info", func(w http.ResponseWriter, r *http.Request) {
|
||||
resp := server.NewResponse()
|
||||
defer resp.Close()
|
||||
|
||||
if ir := server.HandleInfoRequest(resp, r); ir != nil {
|
||||
server.FinishInfoRequest(resp, r, ir)
|
||||
}
|
||||
osin.OutputJSON(resp, w, r)
|
||||
})
|
||||
|
||||
// CLIENT
|
||||
|
||||
// Home
|
||||
clienthttp.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
u := areq.GetAuthorizeUrl()
|
||||
|
||||
w.Write([]byte(fmt.Sprintf("<a href=\"%s\">Login</a>", u.String())))
|
||||
})
|
||||
|
||||
// Auth endpoint
|
||||
clienthttp.HandleFunc("/appauth", func(w http.ResponseWriter, r *http.Request) {
|
||||
// parse a token request
|
||||
areqdata, err := areq.HandleRequest(r)
|
||||
if err != nil {
|
||||
w.Write([]byte(fmt.Sprintf("ERROR: %s\n", err)))
|
||||
return
|
||||
}
|
||||
|
||||
treq := client.NewAccessRequest(osincli.AUTHORIZATION_CODE, areqdata)
|
||||
|
||||
// show access request url (for debugging only)
|
||||
u2 := treq.GetTokenUrl()
|
||||
w.Write([]byte(fmt.Sprintf("Access token URL: %s\n", u2.String())))
|
||||
|
||||
// exchange the authorize token for the access token
|
||||
ad, err := treq.GetToken()
|
||||
if err != nil {
|
||||
w.Write([]byte(fmt.Sprintf("ERROR: %s\n", err)))
|
||||
return
|
||||
}
|
||||
w.Write([]byte(fmt.Sprintf("Access token: %+v\n", ad)))
|
||||
})
|
||||
|
||||
go http.ListenAndServe(":14001", clienthttp)
|
||||
http.ListenAndServe(":14000", serverhttp)
|
||||
}
|
Reference in New Issue
Block a user