myMPD
Internal API documentation
Loading...
Searching...
No Matches
trigger.c File Reference

myMPD trigger API More...

#include "compile_time.h"
#include "dist/sds/sds.h"
#include "src/lib/sticker.h"
#include "src/mympd_api/trigger.h"
#include "src/lib/api.h"
#include "src/lib/filehandler.h"
#include "src/lib/json/json_print.h"
#include "src/lib/json/json_query.h"
#include "src/lib/json/json_rpc.h"
#include "src/lib/log.h"
#include "src/lib/mem.h"
#include "src/lib/sds_extras.h"
#include "src/lib/state_files.h"
#include "src/scripts/events.h"
#include <errno.h>
#include <string.h>
Include dependency graph for trigger.c:

Functions

static void list_free_cb_trigger_data (struct t_list_node *current)
 
static sds trigger_to_line_cb (sds buffer, struct t_list_node *current, bool newline)
 
void trigger_execute (sds script, enum script_start_events script_event, struct t_list *arguments, const char *partition, unsigned long conn_id, unsigned request_id)
 
const char * mympd_api_event_name (int event)
 
sds mympd_api_trigger_print_event_list (sds buffer)
 
int mympd_api_trigger_execute (struct t_list *trigger_list, enum trigger_events event, const char *partition, struct t_list *arguments)
 
int mympd_api_trigger_execute_http (struct t_list *trigger_list, enum trigger_events event, const char *partition, unsigned long conn_id, unsigned request_id, struct t_list *arguments)
 
int mympd_api_trigger_execute_feedback (struct t_list *trigger_list, sds uri, enum mympd_feedback_type type, int value, const char *partition)
 
bool mympd_api_trigger_save (struct t_list *trigger_list, sds name, int trigger_id, int event, sds partition, struct t_trigger_data *trigger_data, sds *error)
 
bool mympd_api_trigger_delete (struct t_list *trigger_list, unsigned idx, sds *error)
 
sds mympd_api_trigger_list (struct t_list *trigger_list, sds buffer, unsigned request_id, const char *partition)
 
sds mympd_api_trigger_get (struct t_list *trigger_list, sds buffer, unsigned request_id, unsigned trigger_id)
 
bool mympd_api_trigger_file_read (struct t_list *trigger_list, sds workdir)
 
bool mympd_api_trigger_file_save (struct t_list *trigger_list, sds workdir)
 
void mympd_api_trigger_list_clear (struct t_list *trigger_list)
 
struct t_trigger_datamympd_api_trigger_data_new (void)
 
void mympd_api_trigger_data_free (struct t_trigger_data *trigger_data)
 
struct t_event_datamympd_api_event_data_new (int event, struct t_list *arguments)
 
void mympd_api_event_data_free (struct t_event_data *event_data)
 
void mympd_api_event_data_free_void (void *event_data)
 

Variables

static const char *const mpd_event_names []
 
static const char *const trigger_event_names []
 
static const char *const mympd_event_names []
 

Detailed Description

myMPD trigger API

Function Documentation

◆ list_free_cb_trigger_data()

static void list_free_cb_trigger_data ( struct t_list_node current)
static

Private definitions

Private functions Callback function to free user_data of type t_trigger_data

Parameters
currentlist node

◆ mympd_api_event_data_free()

void mympd_api_event_data_free ( struct t_event_data event_data)

Frees the t_event_data struct and arguments list

Parameters
event_datapointer to event data

◆ mympd_api_event_data_free_void()

void mympd_api_event_data_free_void ( void *  event_data)

Frees the t_event_data struct and arguments list

Parameters
event_datapointer to event data

◆ mympd_api_event_data_new()

struct t_event_data * mympd_api_event_data_new ( int  event,
struct t_list arguments 
)

Creates and initializes the t_event_data struct

Parameters
eventEvent id
argumentsArguments list, can be null
Returns
Pointer to allocated t_event_data struct

◆ mympd_api_event_name()

const char * mympd_api_event_name ( int  event)

Public functions Returns the event name

Parameters
eventevent to resolv
Returns
trigger as string

◆ mympd_api_trigger_data_free()

void mympd_api_trigger_data_free ( struct t_trigger_data trigger_data)

Frees the t_trigger_data struct

Parameters
trigger_datapointer to trigger data

◆ mympd_api_trigger_data_new()

struct t_trigger_data * mympd_api_trigger_data_new ( void  )

Creates and initializes the t_trigger_data struct

Returns
pointer to allocated t_trigger_data struct

◆ mympd_api_trigger_delete()

bool mympd_api_trigger_delete ( struct t_list trigger_list,
unsigned  idx,
sds *  error 
)

Deletes a trigger

Parameters
trigger_listtrigger list
idxindex of trigger node to remove
erroralready allocated sds string to append the error message
Returns
true on success, else false

◆ mympd_api_trigger_execute()

int mympd_api_trigger_execute ( struct t_list trigger_list,
enum trigger_events  event,
const char *  partition,
struct t_list arguments 
)

Executes all scripts associated with the trigger

Parameters
trigger_listtrigger list
eventtrigger to execute scripts for
partitionmpd partition
argumentslist of script arguments
Returns
number of executed triggers

◆ mympd_api_trigger_execute_feedback()

int mympd_api_trigger_execute_feedback ( struct t_list trigger_list,
sds  uri,
enum mympd_feedback_type  type,
int  value,
const char *  partition 
)

Executes the feedback trigger

Parameters
trigger_listtrigger list
urifeedback uri
typefeedback type
valuethe feedback
partitionmpd partition
Returns
number of executed triggers

◆ mympd_api_trigger_execute_http()

int mympd_api_trigger_execute_http ( struct t_list trigger_list,
enum trigger_events  event,
const char *  partition,
unsigned long  conn_id,
unsigned  request_id,
struct t_list arguments 
)

Executes triggers for http output

Parameters
trigger_listtrigger list
eventtrigger to execute scripts for
partitionmpd partition
conn_idmongoose connection id
request_idjsonprc id
argumentslist of script arguments or NULL for no arguments
Returns
number of executed triggers

◆ mympd_api_trigger_file_read()

bool mympd_api_trigger_file_read ( struct t_list trigger_list,
sds  workdir 
)

Reads the trigger file from disc and populates the trigger list

Parameters
trigger_listtrigger list
workdirworking directory
Returns
true on success, else false

◆ mympd_api_trigger_file_save()

bool mympd_api_trigger_file_save ( struct t_list trigger_list,
sds  workdir 
)

Saves the trigger list to disc

Parameters
trigger_listtrigger list
workdirworking directory
Returns
true on success, else false

◆ mympd_api_trigger_get()

sds mympd_api_trigger_get ( struct t_list trigger_list,
sds  buffer,
unsigned  request_id,
unsigned  trigger_id 
)

Prints the trigger with given id as jsonrpc response

Parameters
trigger_listtrigger list
bufferalready allocated sds string to append the response
request_idjsonrpc request id
trigger_idtrigger id to print
Returns
pointer to buffer

◆ mympd_api_trigger_list()

sds mympd_api_trigger_list ( struct t_list trigger_list,
sds  buffer,
unsigned  request_id,
const char *  partition 
)

Prints the trigger list as jsonrpc response

Parameters
trigger_listtrigger list
bufferalready allocated sds string to append the response
request_idjsonrpc request id
partitionmpd partition
Returns
pointer to buffer

◆ mympd_api_trigger_list_clear()

void mympd_api_trigger_list_clear ( struct t_list trigger_list)

Clears the trigger list

Parameters
trigger_listtrigger list to clear

◆ mympd_api_trigger_print_event_list()

sds mympd_api_trigger_print_event_list ( sds  buffer)

Prints all events names as json string

Parameters
bufferalready allocated sds string to append the response
Returns
pointer to buffer

◆ mympd_api_trigger_save()

bool mympd_api_trigger_save ( struct t_list trigger_list,
sds  name,
int  trigger_id,
int  event,
sds  partition,
struct t_trigger_data trigger_data,
sds *  error 
)

Saves a trigger

Parameters
trigger_listtrigger list
nametrigger name
trigger_idexisting trigger id to replace or -1
eventtrigger event
partitionmpd partition
trigger_datathe trigger data (script name and arguments)
erroralready allocated sds string to append the error message
Returns
true on success, else false

◆ trigger_execute()

void trigger_execute ( sds  script,
enum script_start_events  script_event,
struct t_list arguments,
const char *  partition,
unsigned long  conn_id,
unsigned  request_id 
)

Creates and pushes a request to execute a script

Parameters
scriptscript to execute
script_eventscript start event
argumentsscript arguments
partitionmpd partition
conn_idmongoose connection id
request_idjsonprc id

◆ trigger_to_line_cb()

static sds trigger_to_line_cb ( sds  buffer,
struct t_list_node current,
bool  newline 
)
static

Prints a trigger as a json object string

Parameters
bufferalready allocated sds string to append the response
currenttrigger node to print
newlineappend a newline char
Returns
pointer to buffer

Variable Documentation

◆ mpd_event_names

const char* const mpd_event_names[]
static
Initial value:
= {
"mpd_database",
"mpd_stored_playlist",
"mpd_queue",
"mpd_player",
"mpd_mixer",
"mpd_output",
"mpd_options",
"mpd_update",
"mpd_sticker",
"mpd_subscription",
"mpd_message",
"mpd_partition",
"mpd_neighbor",
"mpd_mount",
NULL
}

All MPD idle events

◆ mympd_event_names

const char* const mympd_event_names[]
static
Initial value:
= {
"mympd_scrobble",
"mympd_start",
"mympd_stop",
"mympd_connected",
"mympd_disconnected",
"mympd_feedback",
"mympd_skipped",
"mympd_lyrics",
"mympd_albumart",
"mympd_tagart",
"mympd_jukebox",
"mympd_smartpls",
"mympd_bgimage",
"mympd_playlistart",
"mympd_folderart",
NULL
}

myMPD events for triggers

◆ trigger_event_names

const char* const trigger_event_names[]
static
Initial value:
= {
"mpd_database",
"mpd_stored_playlist",
"mpd_queue",
"mpd_player",
"mpd_mixer",
"mpd_output",
"mpd_options",
"mpd_partition",
"mpd_sticker",
"mpd_subscription",
"mpd_message",
NULL
}

MPD idle events for triggers This events are enabled by the idle bitmask