unit

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Nov 25, 2022 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Example
package main

import (
	"context"
	"log"
	"net/http"

	"github.com/peknur/nginx-unit-sdk/unit"
	"github.com/peknur/nginx-unit-sdk/unit/client"
	"github.com/peknur/nginx-unit-sdk/unit/config"
	"github.com/peknur/nginx-unit-sdk/unit/config/listener"
	"github.com/peknur/nginx-unit-sdk/unit/config/route"
	"github.com/peknur/nginx-unit-sdk/unit/config/settings"
)

func main() {
	client, err := client.New("http://127.0.0.1:8080", http.DefaultClient)
	if err != nil {
		log.Fatal(err)
	}
	svc := unit.NewService(client)
	cfg := config.Config{
		Settings: config.Settings{
			HTTP: settings.HTTP{
				HeaderReadTimeout: 10,
				BodyReadTimeout:   10,
			},
		},
		Listeners: config.Listeners{
			"*:80": listener.Config{
				Pass: "routes/main",
			},
		},
		Routes: config.Routes{
			"main": []route.Config{
				{
					Match: &route.Match{
						Host: []string{"example.com"},
					},
					Action: &route.Action{
						Return: http.StatusNotFound,
					},
				}},
		},
		AccessLog: config.AccessLog{
			Path:   "/var/log/access.log",
			Format: "$remote_addr - - [$time_local] \"$request_line\" $status $body_bytes_sent \"$header_referer\" \"$header_user_agent\"",
		},
	}

	if err := svc.CreateConfig(context.Background(), cfg); err != nil {
		log.Fatal(err)
	}
}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Certificates added in v0.3.0

type Certificates map[string]certificate.Config

type Service

type Service interface {
	// Applications
	Applications(ctx context.Context) (config.Applications, error)
	CreateApplications(ctx context.Context, c config.Applications) error
	CreateApplication(ctx context.Context, name string, c application.Config) error
	DeleteApplication(ctx context.Context, name string) error

	// Config
	Config(ctx context.Context) (config.Config, error)
	CreateConfig(ctx context.Context, c config.Config) error
	DeleteConfig(ctx context.Context) error

	// Listeners
	Listeners(ctx context.Context) (config.Listeners, error)
	CreateListener(ctx context.Context, name string, c listener.Config) error
	CreateListeners(ctx context.Context, c config.Listeners) error
	DeleteListener(ctx context.Context, name string) error

	// Routes
	Routes(ctx context.Context) (config.Routes, error)
	CreateRoute(ctx context.Context, name string, c []route.Config) error
	CreateRoutes(ctx context.Context, c config.Routes) error
	AppendRoute(ctx context.Context, name string, c route.Config) error
	DeleteRoute(ctx context.Context, name string) error

	// Upstreams
	Upstreams(ctx context.Context) (config.Upstreams, error)
	CreateUpstream(ctx context.Context, name string, c upstream.Config) error
	CreateUpstreams(ctx context.Context, c config.Upstreams) error
	DeleteUpstream(ctx context.Context, name string) error

	// Certificates
	Certificates(ctx context.Context) (certificate.Certificates, error)
	CreateCertificate(ctx context.Context, name string, bundle []byte) error
	DeleteCertificate(ctx context.Context, name string) error

	// Settings
	Settings(ctx context.Context) (config.Settings, error)
	CreateSettings(ctx context.Context, c config.Settings) error
	DeleteSettings(ctx context.Context) error

	// Status
	Status(ctx context.Context) (status.Status, error)
}

Service interface defines methods that can be used to interact with Unit instance.

func NewService added in v0.2.0

func NewService(client service.Client) Service

NewService creates new service instance.

func NewServiceFromURL added in v0.2.0

func NewServiceFromURL(URL string) (Service, error)

NewServiceFromURL creates new service instance using URL as client base URL.

Example
package main

import (
	"context"
	"log"

	"github.com/peknur/nginx-unit-sdk/unit"
)

func main() {
	svc, err := unit.NewServiceFromURL("http://127.0.0.1:8080")
	if err != nil {
		log.Fatal(err)
	}
	svc.Config(context.TODO())
}
Output:

type Unit added in v0.3.0

type Unit struct {
	Certificates certificate.Certificates `json:"certificates,omitempty"`
	Config       config.Config            `json:"config,omitempty"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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