- Go 100%
| contenttypes.go | ||
| defaulthttpsurl.go | ||
| defaulthttpsurl_example_test.go | ||
| errhttp.go | ||
| get.go | ||
| go.mod | ||
| go.sum | ||
| handler.go | ||
| handlerfunc.go | ||
| httperror.go | ||
| httphandler.go | ||
| jsonmarshalmap.go | ||
| jsonmarshalnameoptionalvalue.go | ||
| jsonmarshalnameoptionalvalue_test.go | ||
| jsonmarshalnamestringsvalue.go | ||
| jsonmarshalnamestringvalue.go | ||
| LICENSE | ||
| link.go | ||
| link_marshaljson_test.go | ||
| link_unmarshaljson_test.go | ||
| path.go | ||
| README.md | ||
| response.go | ||
| response_marshaljson_examples_test.go | ||
| response_marshaljson_test.go | ||
| response_unmarshaljson_test.go | ||
| servejrd.go | ||
go-webfinger
Package webfinger provides tools for working with the WebFinger protocol, for the Go programming language.
WebFinger is a protocol, building on top of HTTP/HTTPS, that allows for discovery of things (such as people, users, objects, etc) that can be identified by a URI.
Documention
Online documentation, which includes examples, can be found at: http://godoc.org/codeberg.org/reiver/go-webfinger
Client Examples
Here is an example on how to make a WebFinger request:
host := "example.com"
resource := "acct:[email protected]"
var response webfinger.Response
err := webfinger.Get(&response, host, resource)
Alternatively, if you want to specify the example HTTPS URL, you can instead do something similar to:
url := "https://example.com/.well-known/webfinger?resource=acct:[email protected]"
var response webfinger.Response
err := webfinger.GetRaw(&response, url)
Server Examples
If you want to create a WebFinger server, you can either do something similar to:
func ServeHTTP(responseWriter http.ResponseWriter, request *http.Request) {
// ...
var jrdBytes []byte = ???
// ...
webfinger.ServeJRDBytes(responseWriter, request, jrdBytes)
}
Note that you can create the jrdBytes in the example by using webfinger.Response's MarshalJSON() method.
I.e.,:
func ServeHTTP(responseWriter http.ResponseWriter, request *http.Request) {
// ...
var response webfinger.Response
response.Subject = ???
response.Aliases = ???
response.Properties = ???
response.Links = ???
// ...
var jrdBytes []byte
var err error
jrdBytes, err = response.MarshalJSON()
// ...
webfinger.ServeJRDBytes(responseWriter, request, jrdBytes)
}
Or, alternatively, you can do something similar to:
func serveWebFinger(responseWriter http.ResponseWriter, resource string, rels ...string) {
//@TODO
var response webfinger.Response
// ...
err := json.NewEncoder(responseWriter).Encode(response)
//@TODO
}
var webFingerHandler webfinger.Handler = webfinger.HandlerFunc(serveWebFinger)
var httpHandler http.Handler = webfinger.HTTPHandler(webFingerHandler)
// ...
var path string = webfinger.webFingerHandler // == "/.well-known/webfinger"
// Replace this line of code with however you register handlers with your favorite HTTP mux.
http.Handle(path, httpHandler)
Import
To import package webfinger use import code like the follownig:
import "codeberg.org/reiver/go-webfinger"
Installation
To install package webfinger do the following:
GOPROXY=direct go get codeberg.org/reiver/go-webfinger
Author
Package webfinger was written by Charles Iliya Krempeaux