Documentation
¶
Index ¶
- Constants
- Variables
- func AesDecrypt(crypted, key []byte) ([]byte, error)
- func AesEncrypt(origData, key []byte) ([]byte, error)
- func AllPlugins() map[string]PluginMeta
- func ConvertStringToTime(timeString string) (t time.Time, err error)
- func DecodeMapStruct(input map[string]interface{}, result interface{}) error
- func Decrypt(encKey, encryptedText string) (string, error)
- func Encrypt(encKey, plainText string) (string, error)
- func FindPluginNameBySubPkgPath(subPkgPath string) (string, error)
- func Iso8601TimeToTime(iso8601Time *Iso8601Time) *time.Time
- func PKCS7Padding(ciphertext []byte, blockSize int) []byte
- func PKCS7UnPadding(origData []byte) []byte
- func RandomCapsStr(len int) string
- func RandomEncKey() string
- func RegisterPlugin(name string, plugin PluginMeta) error
- type ApiResourceHandler
- type ApiResourceInput
- type ApiResourceOutput
- type DateTimeFormatItem
- type ExecContext
- type Iso8601Time
- type LogLevel
- type Logger
- type Migratable
- type PluginApi
- type PluginInit
- type PluginMeta
- type PluginTask
- type ProgressType
- type RunningProgress
- type SubTask
- type SubTaskContext
- type SubTaskEntryPoint
- type SubTaskMeta
- type TaskContext
Constants ¶
const EncodeKeyEnvStr = "ENCODE_KEY"
Variables ¶
var DateTimeFormats []DateTimeFormatItem
Functions ¶
func AesDecrypt ¶ added in v0.8.0
AES decryption
func AesEncrypt ¶ added in v0.8.0
AES encryption, CBC
func AllPlugins ¶
func AllPlugins() map[string]PluginMeta
func ConvertStringToTime ¶ added in v0.4.0
func DecodeMapStruct ¶ added in v0.6.0
mapstructure.Decode with time.Time and Iso8601Time support
func Encrypt ¶ added in v0.10.0
TODO: maybe move encryption/decryption into helper? AES + Base64 encryption using ENCODE_KEY in .env as key
func Iso8601TimeToTime ¶ added in v0.6.0
func Iso8601TimeToTime(iso8601Time *Iso8601Time) *time.Time
func PKCS7Padding ¶ added in v0.8.0
PKCS7 padding
func RandomCapsStr ¶ added in v0.8.0
A random string of length len uppercase characters
func RandomEncKey ¶ added in v0.10.0
func RandomEncKey() string
func RegisterPlugin ¶
func RegisterPlugin(name string, plugin PluginMeta) error
Types ¶
type ApiResourceHandler ¶ added in v0.3.0
type ApiResourceHandler func(input *ApiResourceInput) (*ApiResourceOutput, error)
type ApiResourceInput ¶ added in v0.3.0
type ApiResourceInput struct {
Params map[string]string // path variables
Query url.Values // query string
Body map[string]interface{} // json body
}
Contains api request information
type ApiResourceOutput ¶ added in v0.3.0
type ApiResourceOutput struct {
Body interface{} // response body
Status int
}
Describe response data of a api
type DateTimeFormatItem ¶ added in v0.4.0
TODO: move this to helper
type ExecContext ¶ added in v0.10.0
type ExecContext interface {
GetName() string
GetConfig(name string) string
GetDb() *gorm.DB
GetContext() context.Context
GetLogger() Logger
GetData() interface{}
SetProgress(current int, total int)
IncProgress(quantity int)
}
This interface define all resources that needed for task/subtask execution
type Iso8601Time ¶
type Iso8601Time struct {
// contains filtered or unexported fields
}
type Iso8601Time time.Time
func (Iso8601Time) MarshalJSON ¶
func (jt Iso8601Time) MarshalJSON() ([]byte, error)
func (*Iso8601Time) String ¶
func (jt *Iso8601Time) String() string
func (*Iso8601Time) ToNullableTime ¶ added in v0.9.0
func (jt *Iso8601Time) ToNullableTime() *time.Time
func (*Iso8601Time) ToTime ¶
func (jt *Iso8601Time) ToTime() time.Time
func (*Iso8601Time) UnmarshalJSON ¶
func (jt *Iso8601Time) UnmarshalJSON(b []byte) error
type Logger ¶ added in v0.10.0
type Logger interface {
IsLevelEnabled(level LogLevel) bool
Printf(format string, a ...interface{})
Log(level LogLevel, format string, a ...interface{})
Debug(format string, a ...interface{})
Info(format string, a ...interface{})
Warn(format string, a ...interface{})
Error(format string, a ...interface{})
// return a new logger which output nested log
Nested(name string) Logger
}
General logger interface, can be used any where
type Migratable ¶ added in v0.10.0
type PluginApi ¶ added in v0.10.0
type PluginApi interface {
ApiResources() map[string]map[string]ApiResourceHandler
}
Implement this interface if plugin offered API Code sample to register a api on `sources/:sourceId`:
func (plugin Jira) ApiResources() map[string]map[string]core.ApiResourceHandler {
return map[string]map[string]core.ApiResourceHandler{
"sources/:sourceId": {
"PUT": api.PutSource,
"DELETE": api.DeleteSource,
"GET": api.GetSource,
},
}
}
type PluginInit ¶ added in v0.10.0
Implement this interface if plugin needed some initialization
type PluginMeta ¶ added in v0.10.0
type PluginMeta interface {
Description() string
// PkgPath information lost when compiled as plugin(.so)
RootPkgPath() string
}
Minimal features a plugin should comply, should be implemented by all plugins
func GetPlugin ¶
func GetPlugin(name string) (PluginMeta, error)
type PluginTask ¶ added in v0.10.0
type PluginTask interface {
// return all available subtasks, framework will run them for you in order
SubTaskMetas() []SubTaskMeta
// based on task context and user input options, return data that shared among all subtasks
PrepareTaskData(taskCtx TaskContext, options map[string]interface{}) (interface{}, error)
}
Implement this interface to let framework run tasks for you
type ProgressType ¶ added in v0.10.0
type ProgressType int
const ( TaskSetProgress ProgressType = iota TaskIncProgress SubTaskSetProgress SubTaskIncProgress SetCurrentSubTask )
type RunningProgress ¶ added in v0.10.0
type RunningProgress struct {
Type ProgressType
Current int
Total int
SubTaskName string
SubTaskNumber int
}
type SubTaskContext ¶ added in v0.10.0
type SubTaskContext interface {
ExecContext
TaskContext() TaskContext
}
This interface define all resources that needed for subtask execution
type SubTaskEntryPoint ¶ added in v0.10.0
type SubTaskEntryPoint func(c SubTaskContext) error
All subtasks from plugins should comply to this prototype, so they could be orchestrated by framework
type SubTaskMeta ¶ added in v0.10.0
type SubTaskMeta struct {
Name string
EntryPoint SubTaskEntryPoint
// Required SubTask will be executed no matter what
Required bool
EnabledByDefault bool
Description string
}
Meta data of a subtask
type TaskContext ¶ added in v0.10.0
type TaskContext interface {
ExecContext
SetData(data interface{})
SubTaskContext(subtask string) (SubTaskContext, error)
}
This interface define all resources that needed for task execution