http

package
v0.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 13, 2019 License: GPL-3.0 Imports: 34 Imported by: 0

Documentation

Overview

A simple http server interface to Swarm

Index

Constants

View Source
const SwarmTagHeaderName = "x-swarm-tag"

Variables

View Source
var TemplatesMap = make(map[string]*template.Template)

Functions

func Adapt

func Adapt(h http.Handler, adapters ...Adapter) http.Handler

Adapt chains h (main request handler) main handler to adapters (middleware handlers) Please note that the order of execution for `adapters` is FIFO (adapters[0] will be executed first)

func GetRUID

func GetRUID(ctx context.Context) string

func GetURI

func GetURI(ctx context.Context) *api.URI

func InitLoggingResponseWriter

func InitLoggingResponseWriter(h http.Handler) http.Handler

func InitUploadTag

func InitUploadTag(h http.Handler, tags *chunk.Tags) http.Handler

InitUploadTag creates a new tag for an upload to the local HTTP proxy if a tag is not named using the SwarmTagHeaderName, a fallback name will be used when the Content-Length header is set, an ETA on chunking will be available since the number of chunks to be split is known in advance (not including enclosing manifest chunks) the tag can later be accessed using the appropriate identifier in the request context

func InstrumentOpenTracing

func InstrumentOpenTracing(h http.Handler) http.Handler

func ParseURI

func ParseURI(h http.Handler) http.Handler

func RecoverPanic

func RecoverPanic(h http.Handler) http.Handler

func SetRUID

func SetRUID(ctx context.Context, ruid string) context.Context

func SetRequestHost

func SetRequestHost(h http.Handler) http.Handler

func SetRequestID

func SetRequestID(h http.Handler) http.Handler

func SetURI

func SetURI(ctx context.Context, uri *api.URI) context.Context

func ShowMultipleChoices

func ShowMultipleChoices(w http.ResponseWriter, r *http.Request, list api.ManifestList)

ShowMultipleChoices is used when a user requests a resource in a manifest which results in ambiguous results. It returns a HTML page with clickable links of each of the entry in the manifest which fits the request URI ambiguity. For example, if the user requests bzz:/<hash>/read and that manifest contains entries "readme.md" and "readinglist.txt", a HTML page is returned with this two links. This only applies if the manifest has no default entry

Types

type Adapter

type Adapter func(http.Handler) http.Handler

type ResponseParams

type ResponseParams struct {
	Msg       template.HTML
	Code      int
	Timestamp string

	Details template.HTML
	// contains filtered or unexported fields
}

type RoundTripper

type RoundTripper struct {
	Host string
	Port string
}

func (*RoundTripper) RoundTrip

func (self *RoundTripper) RoundTrip(req *http.Request) (resp *http.Response, err error)

type Server

type Server struct {
	http.Handler
	// contains filtered or unexported fields
}

browser API for registering bzz url scheme handlers: https://developer.mozilla.org/en/docs/Web-based_protocol_handlers electron (chromium) api for registering bzz url scheme handlers: https://github.com/atom/electron/blob/master/docs/api/protocol.md

func NewServer

func NewServer(api *api.API, corsString string) *Server

func (*Server) HandleBzzGet

func (s *Server) HandleBzzGet(w http.ResponseWriter, r *http.Request)

func (*Server) HandleDelete

func (s *Server) HandleDelete(w http.ResponseWriter, r *http.Request)

HandleDelete handles a DELETE request to bzz:/<manifest>/<path>, removes <path> from <manifest> and returns the resulting manifest hash as a text/plain response

func (*Server) HandleGet

func (s *Server) HandleGet(w http.ResponseWriter, r *http.Request)

HandleGet handles a GET request to

  • bzz-raw://<key> and responds with the raw content stored at the given storage key
  • bzz-hash://<key> and responds with the hash of the content stored at the given storage key as a text/plain response

func (*Server) HandleGetFeed

func (s *Server) HandleGetFeed(w http.ResponseWriter, r *http.Request)

HandleGetFeed retrieves Swarm feeds updates: bzz-feed://<manifest address or ENS name> - get latest feed update, given a manifest address - or - specify user + topic (optional), subtopic name (optional) directly, without manifest: bzz-feed://?user=0x...&topic=0x...&name=subtopic name topic defaults to 0x000... if not specified. name defaults to empty string if not specified. thus, empty name and topic refers to the user's default feed.

Optional parameters: time=xx - get the latest update before time (in epoch seconds) hint.time=xx - hint the lookup algorithm looking for updates at around that time hint.level=xx - hint the lookup algorithm looking for updates at around this frequency level meta=1 - get feed metadata and status information instead of performing a feed query NOTE: meta=1 will be deprecated in the near future

func (*Server) HandleGetFile

func (s *Server) HandleGetFile(w http.ResponseWriter, r *http.Request)

HandleGetFile handles a GET request to bzz://<manifest>/<path> and responds with the content of the file at <path> from the given <manifest>

func (*Server) HandleGetList

func (s *Server) HandleGetList(w http.ResponseWriter, r *http.Request)

HandleGetList handles a GET request to bzz-list:/<manifest>/<path> and returns a list of all files contained in <manifest> under <path> grouped into common prefixes using "/" as a delimiter

func (*Server) HandlePostFeed

func (s *Server) HandlePostFeed(w http.ResponseWriter, r *http.Request)

Handles feed manifest creation and feed updates The POST request admits a JSON structure as defined in the feeds package: `feed.updateRequestJSON` The requests can be to a) create a feed manifest, b) update a feed or c) both a+b: create a feed manifest and publish a first update

func (*Server) HandlePostFiles

func (s *Server) HandlePostFiles(w http.ResponseWriter, r *http.Request)

HandlePostFiles handles a POST request to bzz:/<hash>/<path> which contains either a single file or multiple files (either a tar archive or multipart form), adds those files either to an existing manifest or to a new manifest under <path> and returns the resulting manifest hash as a text/plain response

func (*Server) HandlePostRaw

func (s *Server) HandlePostRaw(w http.ResponseWriter, r *http.Request)

HandlePostRaw handles a POST request to a raw bzz-raw:/ URI, stores the request body in swarm and returns the resulting storage address as a text/plain response

func (*Server) HandleRootPaths

func (s *Server) HandleRootPaths(w http.ResponseWriter, r *http.Request)

func (*Server) ListenAndServe

func (s *Server) ListenAndServe(addr string) error

type TestServer

type TestServer interface {
	ServeHTTP(http.ResponseWriter, *http.Request)
}

type TestSwarmServer

type TestSwarmServer struct {
	*httptest.Server
	Hasher    storage.SwarmHash
	FileStore *storage.FileStore
	Tags      *chunk.Tags

	CurrentTime uint64
	// contains filtered or unexported fields
}

func NewTestSwarmServer

func NewTestSwarmServer(t *testing.T, serverFunc func(*api.API) TestServer, resolver api.Resolver) *TestSwarmServer

func (*TestSwarmServer) Close

func (t *TestSwarmServer) Close()

func (*TestSwarmServer) Now

func (t *TestSwarmServer) Now() feed.Timestamp

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL