mirror of https://github.com/stashapp/stash.git
100 lines
2.3 KiB
Go
100 lines
2.3 KiB
Go
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
|
|
}
|