Added http.Handler interface

This commit is contained in:
Bruce Marriner 2016-06-01 16:49:10 -05:00
parent 97d16a5921
commit bdcd2f75e6
2 changed files with 42 additions and 25 deletions

View File

@ -7,6 +7,7 @@ snowflake is a [Go](https://golang.org/) package that provides
* Methods to parse existing snowflake IDs.
* Methods to convert a snowflake ID into several other data types.
* JSON Marshal/Unmarshal functions to easily use snowflake IDs within a JSON API.
* http.Handler interface to easily serve snowflake IDs over HTTP.
**For help with this package or general Go discussion, please join the [Discord
Gophers](https://discord.gg/0f1SbxBZjYq9jLBk) chat server.**
@ -40,6 +41,8 @@ package main
import (
"fmt"
"net/http"
"github.com/bwmarrin/snowflake"
)
@ -73,6 +76,10 @@ func main() {
// Print out the ID's sequence number
fmt.Printf("ID Step : %d\n", id.Step())
// Start HTTP Server for this Node on port 8080
http.ListenAndServe(":8080", node)
}
```

View File

@ -4,6 +4,7 @@ package snowflake
import (
"encoding/base64"
"fmt"
"net/http"
"strconv"
"strings"
"sync"
@ -85,6 +86,15 @@ func (n *Node) Generate() (ID, error) {
), nil
}
func (n *Node) ServeHTTP(w http.ResponseWriter, r *http.Request) {
id, err := n.Generate()
if err != nil {
http.Error(w, "Internal Error", 500)
}
fmt.Fprint(w, id)
}
// Int64 returns an int64 of the snowflake ID
func (f ID) Int64() int64 {
return int64(f)