Documentation
¶
Overview ¶
Package storehttp is used to create an HTTP server from a store adapter.
It serves the following routes:
GET /
Renders information about the fossilizer.
POST /segments
Saves then renders a segment.
Body should be a JSON encoded segment.
GET /segments/:linkHash
Renders a segment.
DELETE /segments/:linkHash
Deletes then renders a segment.
GET /segments?[offset=offset]&[limit=limit]&[mapId=mapId]&[prevLinkHash=prevLinkHash]&[tags=list+of+tags]
Finds and renders segments.
GET /maps?[offset=offset]&[limit=limit]
Finds and renders map IDs.
GET /websocket
A web socket that broadcasts messages when a segment is saved:
{ "type": "didSave", "data": [segment] }
Example ¶
This example shows how to create a server from a dummystore. It also tests the root route of the server using net/http/httptest.
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"net/http/httptest"
"time"
"github.com/stratumn/sdk/dummystore"
"github.com/stratumn/sdk/jsonhttp"
"github.com/stratumn/sdk/jsonws"
"github.com/stratumn/sdk/store/storehttp"
)
func main() {
// Create a dummy adapter.
a := dummystore.New(&dummystore.Config{Version: "0.1.0", Commit: "abc"})
httpConfig := &jsonhttp.Config{
Address: "5555",
}
basicConfig := &jsonws.BasicConfig{}
bufConnConfig := &jsonws.BufferedConnConfig{
Size: 256,
WriteTimeout: 10 * time.Second,
PongTimeout: 70 * time.Second,
PingInterval: time.Minute,
MaxMsgSize: 1024,
}
// Create a server.
s := storehttp.New(a, httpConfig, basicConfig, bufConnConfig)
go s.Start()
defer s.Shutdown()
// Create a test server.
ts := httptest.NewServer(s)
defer ts.Close()
// Test the root route.
res, err := http.Get(ts.URL)
if err != nil {
log.Fatal(err)
}
info, err := ioutil.ReadAll(res.Body)
res.Body.Close()
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", info)
}
Output: {"adapter":{"name":"dummy","description":"Stratumn Dummy Store","version":"0.1.0","commit":"abc"}}
Index ¶
Examples ¶
Constants ¶
View Source
const ( // DefaultAddress is the default address of the server. DefaultAddress = ":5000" // DefaultWebSocketReadBufferSize is the default size of the web socket // read buffer in bytes. DefaultWebSocketReadBufferSize = 1024 // DefaultWebSocketWriteBufferSize is the default size of the web socket // write buffer in bytes. DefaultWebSocketWriteBufferSize = 1024 // DefaultWebSocketWriteChanSize is the default size of a web socket // buffered connection channel. DefaultWebSocketWriteChanSize = 256 // DefaultWebSocketWriteTimeout is the default timeout of a web socket // write. DefaultWebSocketWriteTimeout = 10 * time.Second // DefaultWebSocketPongTimeout is the default timeout of a web socket // expected pong. DefaultWebSocketPongTimeout = time.Minute // DefaultWebSocketPingInterval is the default interval between web // socket pings. DefaultWebSocketPingInterval = (DefaultWebSocketPongTimeout * 9) / 10 // DefaultWebSocketMaxMsgSize is the default maximum size of a web // socke received message in in bytes. DefaultWebSocketMaxMsgSize = 32 * 1024 )
View Source
const (
// DidSave means a segment was saved.
DidSave = "didSave"
)
Web socket message types.
Variables ¶
This section is empty.
Functions ¶
func Run ¶
func Run( a store.Adapter, httpConfig *jsonhttp.Config, basicConfig *jsonws.BasicConfig, bufConnConfig *jsonws.BufferedConnConfig, )
Run launches a HTTP Store
Types ¶
type Info ¶
type Info struct {
Adapter interface{} `json:"adapter"`
}
Info is the info returned by the root route.
type Server ¶
Server is an HTTP server for stores.
func New ¶
func New( a store.Adapter, httpConfig *jsonhttp.Config, basicConfig *jsonws.BasicConfig, bufConnConfig *jsonws.BufferedConnConfig, ) *Server
New create an instance of a server.
func (*Server) ListenAndServe ¶
ListenAndServe starts the server.
Click to show internal directories.
Click to hide internal directories.