httpserver

package module
v0.0.0-...-0b6fd76 Latest Latest
Warning

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

Go to latest
Published: Aug 31, 2021 License: Apache-2.0 Imports: 2 Imported by: 0

README

wasmCloud HTTP Server Actor Interface

This actor interface provides wasmCloud actors with an interface to the HTTP Server capability provider. Actors using this interface must have the claim wasmcloud:httpserver in order to have permission to handle requests, and they must have an active, configured link to an HTTP Server capability provider.

The HTTP Server provider is one-way, and only delivers messages to actors. Actors cannot make host calls to this provider.

The following is an example of how to use this provider:

package main

import (
	core "github.com/wasmcloud/actor-interfaces/actor-core/go"
	httpserver "github.com/wasmcloud/actor-interfaces/http-server/go"
)

func main() {
	core.Handlers{HealthRequest: healthRequest}.Register()
	httpserver.Handlers{HandleRequest: handleRequest}.Register()
}

func healthRequest(request core.HealthCheckRequest) (core.HealthCheckResponse, error) {
	return core.HealthCheckResponse{
		Healthy: true,
	}, nil
}

func handleRequest(request httpserver.Request) (httpserver.Response, error) {
	switch method := request.Method; method {
	case "GET":
		return httpserver.Response{
			StatusCode: 200,
			Status:     "OK",
			Body:       []byte("GOT GET"),
		}, nil
	case "POST":
		return httpserver.Response{
			StatusCode: 200,
			Status:     "OK",
			Body:       []byte("GOT POST"),
		}, nil
	default:
		return httpserver.Response{
			StatusCode: 400,
			Status:     "Bad Request",
			Body:       nil,
		}, nil
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Handlers

type Handlers struct {
	// Register a function to handle an incoming HTTP request from a linked provider
	HandleRequest func(request Request) (Response, error)
}

func (Handlers) Register

func (h Handlers) Register()

type Request

type Request struct {
	Method      string
	Path        string
	QueryString string
	Header      map[string]string
	Body        []byte
}

HTTP Request object

func DecodeRequest

func DecodeRequest(decoder *msgpack.Decoder) (Request, error)

func DecodeRequestNullable

func DecodeRequestNullable(decoder *msgpack.Decoder) (*Request, error)

func (*Request) Decode

func (o *Request) Decode(decoder *msgpack.Decoder) error

func (*Request) Encode

func (o *Request) Encode(encoder msgpack.Writer) error

type Response

type Response struct {
	StatusCode uint32
	Status     string
	Header     map[string]string
	Body       []byte
}

HTTP Response object

func DecodeResponse

func DecodeResponse(decoder *msgpack.Decoder) (Response, error)

func DecodeResponseNullable

func DecodeResponseNullable(decoder *msgpack.Decoder) (*Response, error)

func (*Response) Decode

func (o *Response) Decode(decoder *msgpack.Decoder) error

func (*Response) Encode

func (o *Response) Encode(encoder msgpack.Writer) error

Jump to

Keyboard shortcuts

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