Documentation
¶
Overview ¶
Package kodi_jsonrpc provides an interface for communicating with a Kodi/XBMC server via the raw JSON-RPC socket
Extracted from the kodi-callback-daemon.
Released under the terms of the MIT License (see LICENSE).
Index ¶
Examples ¶
Constants ¶
const ( VERSION = `1.0.2` // Minimum Kodi/XBMC API version KODI_MIN_VERSION = 6 LogDebugLevel = log.DebugLevel LogInfoLevel = log.InfoLevel LogWarnLevel = log.WarnLevel LogErrorLevel = log.ErrorLevel LogFatalLevel = log.FatalLevel LogPanicLevel = log.PanicLevel )
Variables ¶
This section is empty.
Functions ¶
func SetLogLevel ¶
SetLogLevel adjusts the level of logger output, level must be one of:
LogDebugLevel LogInfoLevel LogWarnLevel LogErrorLevel LogFatalLevel LogPanicLevel
Types ¶
type Connection ¶
type Connection struct {
Notifications chan Notification
Connected bool
Closed bool
// contains filtered or unexported fields
}
Main type for interacting with Kodi
func New ¶
func New(address string, timeout time.Duration) (conn Connection, err error)
New returns a Connection to the specified address. If timeout (seconds) is greater than zero, connection will fail if initial version query is not returned within this time.
User must ensure Close() is called on returned Connection when finished with it, to avoid leaks.
Example ¶
kodi, err := New(`localhost:9090`, 15) // timeout after 15 secs
defer kodi.Close() // always close to free resources
if err != nil {
panic(fmt.Sprintf(`Couldn't connect to Kodi: %v`, err))
}
request := Request{Method: `JSONRPC.Version`}
response := kodi.Send(request, true) // second param says we need a response
// wait indefinitely for response (timeout 0)
result, err := response.Read(0)
if err != nil {
panic(fmt.Sprintf(`Kodi responded with error: %v`, err))
}
fmt.Println(result)
Output: map[version:map[major:6 minor:14 patch:3]]
type Notification ¶
type Notification struct {
Method string `json:"method" mapstructure:"method"`
Params struct {
Data struct {
Item *struct {
Type string `json:"type" mapstructure:"type"`
} `json:"item" mapstructure:"item"` // Optional
} `json:"data" mapstructure:"data"`
} `json:"params" mapstructure:"params"`
}
Notification stores Kodi server->client notifications.
type Request ¶
type Request struct {
Id *uint32 `json:"id,omitempty"`
Method string `json:"method"`
Params *map[string]interface{} `json:"params,omitempty"`
JsonRPC string `json:"jsonrpc"`
}
RPC Request type