api

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: 20 Imported by: 0

Documentation

Overview

Package api - ADMIN API 기능을 제공하는 패키지

Package api - CB-Store 기반 Repository

Package api -

Package api -

Package api -

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrAPIDefinitionNotFound - 레파지토리에 API 정의가 존재하지 않는 경우 오류
	ErrAPIDefinitionNotFound = errors.NewWithCode(http.StatusNotFound, "api definition not found")
	// ErrAPIsNotChanged - 레파지토리에 저장할 API 정의 변경 사항이 존재하지 않는 경우 오류
	ErrAPIsNotChanged = errors.NewWithCode(http.StatusNotModified, "api definitions are not changed")
	// ErrAPINameExists - 레파지토리에 동일한 이름의 API 정의가 존재하는 경우 오류
	ErrAPINameExists = errors.NewWithCode(http.StatusConflict, "api name is already registered")
	// ErrAPIListenPathExists - 레파지토리에 동일한 수신 경로의 API 정의가 존재하는 경우 오류
	ErrAPIListenPathExists = errors.NewWithCode(http.StatusConflict, "api listen path (Endpoint) is already registered")
	// ErrGroupExists - 리파지토리에 동일한 이름의 소스가 존재하는 경우 오류
	ErrGroupExists = errors.NewWithCode(http.StatusConflict, "api group is already registered")
	// ErrGroupNotExists - 리파지토리에 동일한 이름의 소스가 존재하지 않는 경우 오류
	ErrGroupNotExists = errors.NewWithCode(http.StatusNotFound, "api group not found")
	// ErrInvalidRequestData - 요청에서 데이터를 추출하지 못했을 경우 오류
	ErrInvalidRequestData = errors.NewWithCode(http.StatusBadRequest, "invalid requested data")
)

Functions

This section is empty.

Types

type CbStoreRepository

type CbStoreRepository struct {
	*InMemoryRepository
	// contains filtered or unexported fields
}

CbStoreRepository - CB-Store 기반 Repository 관리 정보 형식

func NewCbStoreRepository

func NewCbStoreRepository(sConf *config.ServiceConfig, key string, refreshTime time.Duration) (*CbStoreRepository, error)

NewCbStoreRepository - CB-Store 기반의 Repository 인스턴스 생성

func (*CbStoreRepository) Close

func (csr *CbStoreRepository) Close() error

Close - 사용 중인 Repository 세션 종료

func (*CbStoreRepository) Watch

func (csr *CbStoreRepository) Watch(ctx context.Context, repoChan chan<- RepoChangedMessage)

Watch - CB-STORE 리파지토리의 변경 감시 및 처리 (Timer Reading)

func (*CbStoreRepository) Write

func (csr *CbStoreRepository) Write(definitionMaps []*DefinitionMap) error

Write - 변경된 리파지토리 내용을 대상 파일로 출력

type ConfigChangedMessage

type ConfigChangedMessage struct {
	Operation   ConfigurationOperation
	Name        string
	Definitions []*config.EndpointConfig
}

ConfigChangedMessage - Configuration의 변경이 발생한 경우 전송되는 메시지 형식 (Server to Repository)

type ConfigModel

type ConfigModel struct {
	Name        string                   `json:"name"`
	Definitions []*config.EndpointConfig `json:"definitions"`
}

ConfigModel - 클라이언트와 통신에 사용할 정보 구조

type Configuration

type Configuration struct {
	DefinitionMaps []*DefinitionMap
}

Configuration - API Definitions 관리 구조

func (*Configuration) AddDefinition

func (c *Configuration) AddDefinition(name string, ec *config.EndpointConfig) error

AddDefinition - 지정한 정보를 기준으로 관리 중인 API Definition 추가

func (*Configuration) AddGroup

func (c *Configuration) AddGroup(name string) error

AddGroup - 지정한 정보를 기준으로 API Group 생성

func (*Configuration) AddGroupAndDefinitions

func (c *Configuration) AddGroupAndDefinitions(name string, ecs []*config.EndpointConfig) error

AddGroupAndDefinitions - 지정한 정보를 기준으로 API Group을 생성하고 Definition들 추가

func (*Configuration) ClearRemoved

func (c *Configuration) ClearRemoved()

ClearRemoved - 현재 관리 중인 API Definition Soruce들 중에서 삭제된 내용을 제거

func (*Configuration) ExistGroup

func (c *Configuration) ExistGroup(name string) bool

ExistGroup - 지정한 Group가 존재하는지 검증

func (*Configuration) Exists

func (c *Configuration) Exists(name string, ec *config.EndpointConfig) (bool, error)

Exists - 지정한 Group내에 지정한 Definition이 존재하는지 검증

func (*Configuration) ExistsDefinition

func (c *Configuration) ExistsDefinition(ec *config.EndpointConfig) error

ExistsDefinition - 지정한 Definition이 존재하는지 검증 (Group에 상관없음)

func (*Configuration) FindByListenPath

func (c *Configuration) FindByListenPath(listenPath string) *config.EndpointConfig

FindByListenPath - 지정한 Path의 Endpoint Definition이 존재하는 검증 (전체 대상)

func (*Configuration) FindByName

func (c *Configuration) FindByName(gname, dname string) *config.EndpointConfig

FindByName - 지정한 이름의 Endpoint Definition이 존재하는지 검증 (동일 소스 대상)

func (*Configuration) GetAllDefinitions

func (c *Configuration) GetAllDefinitions() []*config.EndpointConfig

GetAllDefinitions - 관리하고 있는 API Definition들 반환

func (*Configuration) GetDefinitionMaps

func (c *Configuration) GetDefinitionMaps() []*DefinitionMap

GetDefinitionMaps - 관리하고 있는 API Definition Map들 반환

func (*Configuration) GetGroup

func (c *Configuration) GetGroup(name string) *DefinitionMap

GetGroup - 지정한 Group 정보 반환

func (*Configuration) RemoveDefinition

func (c *Configuration) RemoveDefinition(name string, ec *config.EndpointConfig) error

RemoveDefinition - 지정한 정보를 기준으로 관리 중인 API Definition 삭제

func (*Configuration) RemoveGroup

func (c *Configuration) RemoveGroup(name string) error

RemoveGroup - 지정한 정보를 기준으로 API Group 삭제

func (*Configuration) UpdateDefinition

func (c *Configuration) UpdateDefinition(name string, ec *config.EndpointConfig) error

UpdateDefinition - 지정한 정보를 기준으로 관리 중인 API Definition 갱신

type ConfigurationOperation

type ConfigurationOperation int

ConfigurationOperation - Configuration 변경에 연계되는 Operation 형식

const (
	// RemovedOperation - 설정 제거 작업
	RemovedOperation ConfigurationOperation = iota
	// UpdatedOperation - 설정 변경 작업
	UpdatedOperation
	// AddedOperation - 설정 등록 작업
	AddedOperation
	// RemovedGroupOperation - 소스 제거 작업
	RemovedGroupOperation
	// AddedGroupOperation - 소스 추가 작업
	AddedGroupOperation
	// ApplyGroupsOperation - 설정 변경사항 모두 저장 (File or ETCD, ...)
	ApplyGroupsOperation
)

type ConfigurationState

type ConfigurationState int

ConfigurationState - Configuration 변경 상태 형식

const (
	// NONE - 로드한 후에 변경이 없는 상태
	NONE ConfigurationState = iota
	// ADDED - Group가 신규로 생성된 경우
	ADDED
	// REMOVED - Group가 삭제된 경우
	REMOVED
	// CHANGED - Group 내의 Definition이 추가/수정/삭제된 경우
	CHANGED
)

type DefinitionMap

type DefinitionMap struct {
	Name        string                   `json:"name"`
	State       ConfigurationState       `json:"-"`
	Definitions []*config.EndpointConfig `json:"definitions"`
}

DefinitionMap - 리파지토리의 API Definition 관리 정보 구조 (관리 및 클라이언트 연계용)

func (*DefinitionMap) CheckDuplicates

func (dm *DefinitionMap) CheckDuplicates(group string, eConf *config.EndpointConfig) bool

CheckDuplicates - 관리중인 Definitions에 대해 중복 검증

type FileSystemRepository

type FileSystemRepository struct {
	*InMemoryRepository
	// contains filtered or unexported fields
}

FileSystemRepository - 파일 시스템 기반 Repository 관리 정보 형식

func NewFileSystemRepository

func NewFileSystemRepository(sConf *config.ServiceConfig, dir string) (*FileSystemRepository, error)

NewFileSystemRepository - 파일 시스템 기반의 Repository 인스턴스 생성

func (*FileSystemRepository) Close

func (fsr *FileSystemRepository) Close() error

Close - 사용 중인 Repository 세션 종료

func (*FileSystemRepository) Watch

func (fsr *FileSystemRepository) Watch(ctx context.Context, repoChan chan<- RepoChangedMessage)

Watch - 파일 리파지토리의 대상 파일 변경 감시 및 처리

func (*FileSystemRepository) Write

func (fsr *FileSystemRepository) Write(definitionMaps []*DefinitionMap) error

Write - 변경된 리파지토리 내용을 대상 파일로 출력

type GroupDefinitions

type GroupDefinitions struct {
	Definitions []*config.EndpointConfig `mapstructure:"definitions" yaml:"definitions"`
}

GroupDefinitions - 리파지토리 Group에 저장된 API Definition 구조 (로드/저장용)

type InMemoryRepository

type InMemoryRepository struct {
	sync.RWMutex
	Groups []*DefinitionMap
}

InMemoryRepository - Memory 기반의 Repository 관리 형식

func NewInMemoryRepository

func NewInMemoryRepository() *InMemoryRepository

NewInMemoryRepository creates a in memory repository

func (*InMemoryRepository) Close

func (imr *InMemoryRepository) Close() error

Close - 사용 중인 Memory Repository 세션 종료

func (*InMemoryRepository) FindAll

func (imr *InMemoryRepository) FindAll() ([]*DefinitionMap, error)

FindAll - 사용 가능한 모든 API Routing 설정 검증 및 반환

func (*InMemoryRepository) FindAllByGroup

func (imr *InMemoryRepository) FindAllByGroup(group string) ([]*config.EndpointConfig, error)

FindAllByGroup - 지정한 Group에서 API Routing 설정 정보 반환

func (*InMemoryRepository) FindGroups

func (imr *InMemoryRepository) FindGroups() ([]string, error)

FindGroups - 리포지토리에서 관리하는 API Group 경로들을 반환

type Listener

type Listener interface {
	Listen(ctx context.Context, configurationChan <-chan ConfigChangedMessage)
}

Listener - 관리 중인 API Definition 변경 여부 감시용

type RepoChangedMessage

type RepoChangedMessage struct {
	Configurations *Configuration
}

RepoChangedMessage - Repository의 변경이 발생한 경우 전송되는 메시지 형식 (Repository to Server)

type Repository

type Repository interface {
	io.Closer

	FindAll() ([]*DefinitionMap, error)
	Write([]*DefinitionMap) error
}

Repository - Routing 정보 관리 기능을 제공하는 인터페이스 형식

func BuildRepository

func BuildRepository(sConf *config.ServiceConfig, refreshTime time.Duration) (Repository, error)

BuildRepository - 시스템 설정에 정의된 DSN(Data Group Name) 기준으로 저장소 구성

type Watcher

type Watcher interface {
	Watch(ctx context.Context, configurationChan chan<- RepoChangedMessage)
}

Watcher - Repository에서 API Definition 변경 여부 감시용

Jump to

Keyboard shortcuts

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