Documentation ¶
Overview ¶
Package api - ADMIN API 기능을 제공하는 패키지
Package api - CB-Store 기반 Repository ¶
Package api -
Package api -
Package api -
Index ¶
- Variables
- type CbStoreRepository
- type ConfigChangedMessage
- type ConfigModel
- type Configuration
- func (c *Configuration) AddDefinition(name string, ec *config.EndpointConfig) error
- func (c *Configuration) AddGroup(name string) error
- func (c *Configuration) AddGroupAndDefinitions(name string, ecs []*config.EndpointConfig) error
- func (c *Configuration) ClearRemoved()
- func (c *Configuration) ExistGroup(name string) bool
- func (c *Configuration) Exists(name string, ec *config.EndpointConfig) (bool, error)
- func (c *Configuration) ExistsDefinition(ec *config.EndpointConfig) error
- func (c *Configuration) FindByListenPath(listenPath string) *config.EndpointConfig
- func (c *Configuration) FindByName(gname, dname string) *config.EndpointConfig
- func (c *Configuration) GetAllDefinitions() []*config.EndpointConfig
- func (c *Configuration) GetDefinitionMaps() []*DefinitionMap
- func (c *Configuration) GetGroup(name string) *DefinitionMap
- func (c *Configuration) RemoveDefinition(name string, ec *config.EndpointConfig) error
- func (c *Configuration) RemoveGroup(name string) error
- func (c *Configuration) UpdateDefinition(name string, ec *config.EndpointConfig) error
- type ConfigurationOperation
- type ConfigurationState
- type DefinitionMap
- type FileSystemRepository
- type GroupDefinitions
- type InMemoryRepository
- type Listener
- type RepoChangedMessage
- type Repository
- type Watcher
Constants ¶
This section is empty.
Variables ¶
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 변경 여부 감시용