mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 12:24:38 +03:00
Add plugin tasks (#651)
This commit is contained in:
99
pkg/plugin/common/msg.go
Normal file
99
pkg/plugin/common/msg.go
Normal file
@@ -0,0 +1,99 @@
|
||||
package common
|
||||
|
||||
import "net/http"
|
||||
|
||||
// StashServerConnection represents the connection details needed for a
|
||||
// plugin instance to connect to its parent stash server.
|
||||
type StashServerConnection struct {
|
||||
// http or https
|
||||
Scheme string
|
||||
|
||||
Port int
|
||||
|
||||
// Cookie for authentication purposes
|
||||
SessionCookie *http.Cookie
|
||||
|
||||
// Dir specifies the directory containing the stash server's configuration
|
||||
// file.
|
||||
Dir string
|
||||
|
||||
// PluginDir specifies the directory containing the plugin configuration
|
||||
// file.
|
||||
PluginDir string
|
||||
}
|
||||
|
||||
// PluginArgValue represents a single value parameter for plugin operations.
|
||||
type PluginArgValue interface{}
|
||||
|
||||
// ArgsMap is a map of argument key to value.
|
||||
type ArgsMap map[string]PluginArgValue
|
||||
|
||||
// String returns the string field or an empty string if the string field is
|
||||
// nil
|
||||
func (m ArgsMap) String(key string) string {
|
||||
v, found := m[key]
|
||||
var ret string
|
||||
if !found {
|
||||
return ret
|
||||
}
|
||||
ret, _ = v.(string)
|
||||
return ret
|
||||
}
|
||||
|
||||
// Int returns the int field or 0 if the int field is nil
|
||||
func (m ArgsMap) Int(key string) int {
|
||||
v, found := m[key]
|
||||
var ret int
|
||||
if !found {
|
||||
return ret
|
||||
}
|
||||
ret, _ = v.(int)
|
||||
return ret
|
||||
}
|
||||
|
||||
// Bool returns the boolean field or false if the boolean field is nil
|
||||
func (m ArgsMap) Bool(key string) bool {
|
||||
v, found := m[key]
|
||||
var ret bool
|
||||
if !found {
|
||||
return ret
|
||||
}
|
||||
ret, _ = v.(bool)
|
||||
return ret
|
||||
}
|
||||
|
||||
// Float returns the float field or 0 if the float field is nil
|
||||
func (m ArgsMap) Float(key string) float64 {
|
||||
v, found := m[key]
|
||||
var ret float64
|
||||
if !found {
|
||||
return ret
|
||||
}
|
||||
ret, _ = v.(float64)
|
||||
return ret
|
||||
}
|
||||
|
||||
// PluginInput is the data structure that is sent to plugin instances when they
|
||||
// are spawned.
|
||||
type PluginInput struct {
|
||||
// Server details to connect to the stash server.
|
||||
ServerConnection StashServerConnection `json:"server_connection"`
|
||||
|
||||
// Arguments to the plugin operation.
|
||||
Args ArgsMap `json:"args"`
|
||||
}
|
||||
|
||||
// PluginOutput is the data structure that is expected to be output by plugin
|
||||
// processes when execution has concluded. It is expected that this data will
|
||||
// be encoded as JSON.
|
||||
type PluginOutput struct {
|
||||
Error *string `json:"error"`
|
||||
Output interface{} `json:"output"`
|
||||
}
|
||||
|
||||
// SetError is a convenience method that sets the Error field based on the
|
||||
// provided error.
|
||||
func (o *PluginOutput) SetError(err error) {
|
||||
errStr := err.Error()
|
||||
o.Error = &errStr
|
||||
}
|
||||
Reference in New Issue
Block a user