proxy

package
v0.0.0-...-8d8ec1c Latest Latest
Warning

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

Go to latest
Published: Feb 18, 2022 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Overview

Package proxy -

Package proxy - Backend 결과에 대한 Mapping, Whitelist, Blacklist 등의 처리를 수행하는 Formatter 패키지

Package proxy - Backend의 반환 결과를 Router에서 처리하기 위한 Response 객체로 변환처리하는 패키지

Package proxy - Backend의 결과들을 Merge 처리하는 Merging 패키지

Package proxy - Proxy 기능과 사용될 Middleware 인터페이스 정의와 구현체들을 제공

Index

Constants

View Source
const (
	// 미들웨어 식별 자
	MWNamespace = "mw-proxy"
)

===== [ Constants and Variables ] =====

Variables

View Source
var (
	// ErrNoBackends - Backend 미 지정 오류
	ErrNoBackends = errors.New("all endpoints must have at least one backend")
	// ErrTooManyBackends - 너무 많은 Backend 지정 오류
	ErrTooManyBackends = errors.New("too many backends for this proxy")
	// ErrTooManyProxies - ProxyChain 에 너무 많은 ProxyChain 설정 오류
	ErrTooManyProxies = errors.New("too many proxes for this proxy chain")
	// ErrNotEnoughProxies - Proxy 가 부족한 경우 오류
	ErrNotEnoughProxies = errors.New("not enough proxies for this endpoint")
)

Functions

func CloneMapValues

func CloneMapValues(values map[string][]string) map[string][]string

CloneMapValues - map[string][]string 형식의 정보를 복제

func CloneParams

func CloneParams(params map[string]string) map[string]string

CloneParams - 지정한 Parameter 정보 복제

func NewReadCloserWrapper

func NewReadCloserWrapper(ctx context.Context, rc io.ReadCloser) io.Reader

NewReadCloserWrapper - 닫기가 가능한 io.Reader 생성

Types

type BackendFactory

type BackendFactory func(bConf *config.BackendConfig) Proxy

BackendFactory - 지정된 BackendConfig 정보를 기반으로 수행할 Proxy를 반환하는 함수 형식

type CallChain

type CallChain func(next ...Proxy) Proxy

CallChain - 설정에 따른 중첩 Proxy 연계 구조를 위한 함수 형식

func NewLoadBalancedChainWithSubscriber

func NewLoadBalancedChainWithSubscriber(subscriber sd.Subscriber) CallChain

NewLoadBalancedChainWithSubscriber - 지정된 Subscriber를 활용하는 Loadbalacer Chain 구성

func NewMergeDataChain

func NewMergeDataChain(eConf *config.EndpointConfig) CallChain

NewMergeDataChain - 전달된 Endpoint 설정을 기준으로 Backend 갯수에 따라서 Response를 Merging 하는 Proxy Call chain 생성

func NewRequestBuilderChain

func NewRequestBuilderChain(bConf *config.BackendConfig) CallChain

NewRequestBuilderChain - Request 파라미터와 Backend Path를 설정한 Proxy 호출 체인을 생성한다.

type EntityFormatter

type EntityFormatter interface {
	Format(Response) Response
}

EntityFormatter - Response를 Format 처리하는 Entity 기반 인터페이스 정의

func NewEntityFormatter

func NewEntityFormatter(bConf *config.BackendConfig) EntityFormatter

NewEntityFormatter - 지정된 Backend 설정을 기준으로 Response 처리에 사용할 EntityFormatter 생성

type Factory

type Factory interface {
	New(eConf *config.EndpointConfig) (Proxy, error)
}

Factory - 지정된 Endpoint 기준으로 Proxy 호출을 위한 함수를 생성하는 팩토리 인터페이스

func NewDefaultFactory

func NewDefaultFactory(bf BackendFactory, logger logging.Logger) Factory

NewDefaultFactory - 전달된 BackendFactory를 사용하는 기본 ProxyFactory 반환

func NewDefaultFactoryWithSubscriber

func NewDefaultFactoryWithSubscriber(bf BackendFactory, logger logging.Logger, sf sd.SubscriberFactory) Factory

NewDefaultFactoryWithSubscriber - 지정된 Subscriber를 활용하는 BackendFactory를 사용하는 ProxyFactory 반환

type FactoryFunc

type FactoryFunc func(*config.EndpointConfig) (Proxy, error)

FactoryFunc - 지정된 Endpoint 기준으로 Proxy 호출을 위한 함수 Adapter

func (FactoryFunc) New

func (f FactoryFunc) New(eConf *config.EndpointConfig) (Proxy, error)

New - Proxy 를 생성하는 인터페이스 구현

type HTTPResponseParser

type HTTPResponseParser func(context.Context, *http.Response) (*Response, error)

HTTPResponseParser - Backend에서 반환된 http.Response를 Proxy에서 관리하는 Response 로 변환하기 위한 함수 형식

func DefaultHTTPResponseParserFactory

func DefaultHTTPResponseParserFactory(conf HTTPResponseParserConfig) HTTPResponseParser

DefaultHTTPResponseParserFactory - NoOpResponseParser를 사용하지 않는 모든 경우에 사용할 ResponseParser

type HTTPResponseParserConfig

type HTTPResponseParserConfig struct {
	Decoder         encoding.Decoder
	EntityFormatter EntityFormatter
}

HTTPResponseParserConfig - HTTPResponseParser 운영을 위한 설정 형식

type Metadata

type Metadata struct {
	Headers    map[string][]string
	Message    string
	StatusCode int
}

Metadata - http.Response의 Headers와 StatusCode 관리를 위한 Metadata 구조 정의

type Proxy

type Proxy func(ctx context.Context, req *Request) (*Response, error)

Proxy - Context 기반에서 Request를 처리하고 Response 또는 error 를 반환하는 함수 형식

func EmptyChain

func EmptyChain(next ...Proxy) Proxy

EmptyChain - 테스트나 오류 처리를 위한 빈 Proxy Chain 생성

func NewHTTPProxyDetailed

NewHTTPProxyDetailed - 지정된 BackendConfig와 HTTP Reqeust Executor와 응답 처리에 사용할 StatusHandler, Response Parser를 설정한 Proxy 반환

func NewHTTPProxyWithHTTPExecutor

func NewHTTPProxyWithHTTPExecutor(bconf *config.BackendConfig, hre client.HTTPRequestExecutor, dec encoding.Decoder) Proxy

NewHTTPProxyWithHTTPExecutor - 지정된 BackendConfig 와 HTTP Request Executor와 응답 처리에 사용할 Decoder를 설정한 Proxy 반환

type Request

type Request struct {
	IsBypass bool
	Method   string
	URL      *url.URL
	Query    url.Values
	Path     string
	Body     io.ReadCloser
	Params   map[string]string
	Headers  map[string][]string
}

Request - Proxy 구간에서 사용할 Request 구조

func CloneRequest

func CloneRequest(r *Request) *Request

CloneRequest - 지정한 Request에 대한 Deep Copy를 처리

func (*Request) Clone

func (r *Request) Clone() Request

Clone - Request 복제 (단, Thread-safe가 아니므로 Thread-safe가 필요한 경우는 "CloneRequest" 사용)

func (*Request) GeneratePath

func (r *Request) GeneratePath(urlPattern string)

GeneratePath - Params의 정보를 이용해서 URLPattern에 존재하는 파라미터 설정을 실제 값으로 변경

type Response

type Response struct {
	Data       map[string]interface{}
	IsComplete bool
	Metadata   Metadata
	Io         io.Reader
}

Response - Backend 처리를 통해 반환된 http.Response 처리를 위한 Response 구조 정의

func DummyProxy

func DummyProxy(_ context.Context, _ *Request) (*Response, error)

DummyProxy - 테스트나 오류 방지를 위한 Dummcy Proxy 생성

func NoOpHTTPResponseParser

func NoOpHTTPResponseParser(ctx context.Context, resp *http.Response) (*Response, error)

NoOpHTTPResponseParser - http.Response 를 변경없이 전달하는 용도의 ResponseParser

type ResponseCombiner

type ResponseCombiner func(int, []*Response) *Response

ResponseCombiner - 여러 Response의 데이터를 Merging 처리해서 하나의 Response 데이터로 구성하는 함수 정의

Jump to

Keyboard shortcuts

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