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

Jsonrpc implementation. More...

#include "compile_time.h"
#include "src/lib/json/json_rpc.h"
#include "src/lib/api.h"
#include "src/lib/json/json_print.h"
#include "src/lib/sds_extras.h"
#include <string.h>
Include dependency graph for json_rpc.c:

Functions

static const char * jsonrpc_facility_name (enum jsonrpc_facilities facility)
 
static const char * jsonrpc_severity_name (enum jsonrpc_severities severity)
 
static const char * jsonrpc_event_name (enum jsonrpc_events event)
 
void send_jsonrpc_notify (enum jsonrpc_facilities facility, enum jsonrpc_severities severity, const char *partition, const char *message)
 
void send_jsonrpc_notify_client (enum jsonrpc_facilities facility, enum jsonrpc_severities severity, unsigned request_id, const char *message)
 
void send_jsonrpc_event (enum jsonrpc_events event, const char *partition)
 
sds jsonrpc_event (sds buffer, enum jsonrpc_events event)
 
sds jsonrpc_notify (sds buffer, enum jsonrpc_facilities facility, enum jsonrpc_severities severity, const char *message)
 
sds jsonrpc_notify_phrase (sds buffer, enum jsonrpc_facilities facility, enum jsonrpc_severities severity, const char *message, int count,...)
 
sds jsonrpc_notify_start (sds buffer, enum jsonrpc_events event)
 
sds jsonrpc_respond_start (sds buffer, enum mympd_cmd_ids cmd_id, unsigned request_id)
 
sds jsonrpc_end (sds buffer)
 
sds jsonrpc_respond_ok (sds buffer, enum mympd_cmd_ids cmd_id, unsigned request_id, enum jsonrpc_facilities facility)
 
sds jsonrpc_respond_with_ok_or_error (sds buffer, enum mympd_cmd_ids cmd_id, unsigned request_id, bool rc, enum jsonrpc_facilities facility, const char *error)
 
sds jsonrpc_respond_with_message_or_error (sds buffer, enum mympd_cmd_ids cmd_id, unsigned request_id, bool rc, enum jsonrpc_facilities facility, const char *message, const char *error)
 
sds jsonrpc_respond_message (sds buffer, enum mympd_cmd_ids cmd_id, unsigned request_id, enum jsonrpc_facilities facility, enum jsonrpc_severities severity, const char *message)
 
sds jsonrpc_respond_message_phrase (sds buffer, enum mympd_cmd_ids cmd_id, unsigned request_id, enum jsonrpc_facilities facility, enum jsonrpc_severities severity, const char *message, int count,...)
 

Variables

static const char * jsonrpc_severity_names [JSONRPC_SEVERITY_MAX]
 
static const char * jsonrpc_facility_names [JSONRPC_FACILITY_MAX]
 
static const char * jsonrpc_event_names [JSONRPC_EVENT_MAX]
 

Detailed Description

Jsonrpc implementation.

Function Documentation

◆ jsonrpc_end()

sds jsonrpc_end ( sds  buffer)

Creates the end of a jsonrpc response

Parameters
bufferpointer to already allocated sds string
Returns
pointer to buffer with jsonrpc string

◆ jsonrpc_event()

sds jsonrpc_event ( sds  buffer,
enum jsonrpc_events  event 
)

Creates a simple jsonrpc notification with the event as method

Parameters
bufferpointer to already allocated sds string
eventthe event to use
Returns
pointer to buffer with jsonrpc string

◆ jsonrpc_event_name()

static const char * jsonrpc_event_name ( enum jsonrpc_events  event)
static

Returns the event name

Parameters
eventenum jsonrpc_events
Returns
name of the event

◆ jsonrpc_facility_name()

static const char * jsonrpc_facility_name ( enum jsonrpc_facilities  facility)
static

This unit provides functions for jsonrpc printing Json parsing is done by mjson private definitions

Returns the facility name

Parameters
facilityenum jsonrpc_facilities
Returns
name of the facility

◆ jsonrpc_notify()

sds jsonrpc_notify ( sds  buffer,
enum jsonrpc_facilities  facility,
enum jsonrpc_severities  severity,
const char *  message 
)

Creates a jsonrpc notification with facility, severity and a message

Parameters
bufferpointer to already allocated sds string
facilityone of enum jsonrpc_facilities
severityone of enum jsonrpc_severities
messagethe message to send
Returns
pointer to buffer with jsonrpc string

◆ jsonrpc_notify_phrase()

sds jsonrpc_notify_phrase ( sds  buffer,
enum jsonrpc_facilities  facility,
enum jsonrpc_severities  severity,
const char *  message,
int  count,
  ... 
)

Creates a jsonrpc notification with facility, severity and a message phrase. A message phrase can include %{key} placeholders that are replaced on the client side with the value. Key/value pairs are variadic arguments.

Parameters
bufferpointer to already allocated sds string
facilityone of enum jsonrpc_facilities
severityone of enum jsonrpc_severities
messagethe message to send
countnumber of following variadic arguments
...key/value pairs for the phrase
Returns
pointer to buffer with jsonrpc string

◆ jsonrpc_notify_start()

sds jsonrpc_notify_start ( sds  buffer,
enum jsonrpc_events  event 
)

Creates the start of a jsonrpc notification.

Parameters
bufferpointer to already allocated sds string
eventthe event to use
Returns
pointer to buffer with jsonrpc string

◆ jsonrpc_respond_message()

sds jsonrpc_respond_message ( sds  buffer,
enum mympd_cmd_ids  cmd_id,
unsigned  request_id,
enum jsonrpc_facilities  facility,
enum jsonrpc_severities  severity,
const char *  message 
)

Creates a simple jsonrpc response with a custom message

Parameters
bufferpointer to already allocated sds string
cmd_idenum mympd_cmd_ids
request_idid of the jsonrpc request to answer
facilityone of enum jsonrpc_facilities
severityone of enum jsonrpc_severities
messagethe response message
Returns
pointer to buffer with jsonrpc string

◆ jsonrpc_respond_message_phrase()

sds jsonrpc_respond_message_phrase ( sds  buffer,
enum mympd_cmd_ids  cmd_id,
unsigned  request_id,
enum jsonrpc_facilities  facility,
enum jsonrpc_severities  severity,
const char *  message,
int  count,
  ... 
)

Creates a jsonrpc response with facility, severity and a message phrase. A message phrase can include %{key} placeholders that are replaced on the client side with the value. Key/value pairs are variadic arguments.

Parameters
bufferpointer to already allocated sds string
cmd_idenum mympd_cmd_ids
request_idid of the jsonrpc request to answer
facilityone of enum jsonrpc_facilities
severityone of enum jsonrpc_severities
messagethe message to send
countnumber of following variadic arguments
...key/value pairs for the phrase
Returns
pointer to buffer with jsonrpc string

◆ jsonrpc_respond_ok()

sds jsonrpc_respond_ok ( sds  buffer,
enum mympd_cmd_ids  cmd_id,
unsigned  request_id,
enum jsonrpc_facilities  facility 
)

Creates a simple jsonrpc response with "ok" as message

Parameters
bufferpointer to already allocated sds string
cmd_idenum mympd_cmd_ids
request_idid of the jsonrpc request to answer
facilityone of enum jsonrpc_facilities
Returns
pointer to buffer with jsonrpc string

◆ jsonrpc_respond_start()

sds jsonrpc_respond_start ( sds  buffer,
enum mympd_cmd_ids  cmd_id,
unsigned  request_id 
)

Creates the start of a jsonrpc response.

Parameters
bufferpointer to already allocated sds string
cmd_idenum mympd_cmd_ids
request_idid of the jsonrpc request to answer
Returns
pointer to buffer with jsonrpc string

◆ jsonrpc_respond_with_message_or_error()

sds jsonrpc_respond_with_message_or_error ( sds  buffer,
enum mympd_cmd_ids  cmd_id,
unsigned  request_id,
bool  rc,
enum jsonrpc_facilities  facility,
const char *  message,
const char *  error 
)

Checks rc and responses with ok or the message

Parameters
bufferalready allocated sds string for the jsonrpc response
cmd_idenum mympd_cmd_ids
request_idjsonrpc request id to respond
rcreturn code to check
facilityone of enum jsonrpc_facilities
messagethe response message, if rc == true
errorthe response message, if rc == false
Returns
pointer to buffer

◆ jsonrpc_respond_with_ok_or_error()

sds jsonrpc_respond_with_ok_or_error ( sds  buffer,
enum mympd_cmd_ids  cmd_id,
unsigned  request_id,
bool  rc,
enum jsonrpc_facilities  facility,
const char *  error 
)

Checks rc and responses with ok or the message

Parameters
bufferalready allocated sds string for the jsonrpc response
cmd_idenum mympd_cmd_ids
request_idjsonrpc request id to respond
rcreturn code to check
facilityone of enum jsonrpc_facilities
errorthe response message, if rc == false
Returns
pointer to buffer

◆ jsonrpc_severity_name()

static const char * jsonrpc_severity_name ( enum jsonrpc_severities  severity)
static

Returns the severity name

Parameters
severityenum jsonrpc_severities
Returns
name of the severity

◆ send_jsonrpc_event()

void send_jsonrpc_event ( enum jsonrpc_events  event,
const char *  partition 
)

Creates and sends a jsonrpc event to all connected websockets

Parameters
eventthe event to send
partitionmpd partition

◆ send_jsonrpc_notify()

void send_jsonrpc_notify ( enum jsonrpc_facilities  facility,
enum jsonrpc_severities  severity,
const char *  partition,
const char *  message 
)

public functions Jsonrpc printing Creates and sends a jsonrpc notify to all connected websockets for a partition

Parameters
facilityone of enum jsonrpc_facilities
severityone of enum jsonrpc_severities
partitionmpd partition
messagethe message to send

◆ send_jsonrpc_notify_client()

void send_jsonrpc_notify_client ( enum jsonrpc_facilities  facility,
enum jsonrpc_severities  severity,
unsigned  request_id,
const char *  message 
)

Creates and sends a jsonrpc notify to a client

Parameters
facilityone of enum jsonrpc_facilities
severityone of enum jsonrpc_severities
request_idthe jsonrpc id of the client
messagethe message to send

Variable Documentation

◆ jsonrpc_event_names

const char* jsonrpc_event_names[JSONRPC_EVENT_MAX]
static
Initial value:
= {
[JSONRPC_EVENT_MPD_CONNECTED] = "mpd_connected",
[JSONRPC_EVENT_MPD_DISCONNECTED] = "mpd_disconnected",
[JSONRPC_EVENT_NOTIFY] = "notify",
[JSONRPC_EVENT_UPDATE_DATABASE] = "update_database",
[JSONRPC_EVENT_UPDATE_FINISHED] = "update_finished",
[JSONRPC_EVENT_UPDATE_HOME] = "update_home",
[JSONRPC_EVENT_UPDATE_JUKEBOX] = "update_jukebox",
[JSONRPC_EVENT_UPDATE_LAST_PLAYED] = "update_last_played",
[JSONRPC_EVENT_UPDATE_OPTIONS] = "update_options",
[JSONRPC_EVENT_UPDATE_OUTPUTS] = "update_outputs",
[JSONRPC_EVENT_UPDATE_QUEUE] = "update_queue",
[JSONRPC_EVENT_UPDATE_STARTED] = "update_started",
[JSONRPC_EVENT_UPDATE_STATE] = "update_state",
[JSONRPC_EVENT_UPDATE_STORED_PLAYLIST] = "update_stored_playlist",
[JSONRPC_EVENT_UPDATE_VOLUME] = "update_volume",
[JSONRPC_EVENT_WELCOME] = "welcome",
[JSONRPC_EVENT_UPDATE_CACHE_STARTED] = "update_cache_started",
[JSONRPC_EVENT_UPDATE_CACHE_FINISHED] = "update_cache_finished"
}

Names for myMPD events

◆ jsonrpc_facility_names

const char* jsonrpc_facility_names[JSONRPC_FACILITY_MAX]
static
Initial value:
= {
[JSONRPC_FACILITY_DATABASE] = "database",
[JSONRPC_FACILITY_GENERAL] = "general",
[JSONRPC_FACILITY_HOME] = "home",
[JSONRPC_FACILITY_JUKEBOX] = "jukebox",
[JSONRPC_FACILITY_LYRICS] = "lyrics",
[JSONRPC_FACILITY_MPD] = "mpd",
[JSONRPC_FACILITY_PLAYLIST] = "playlist",
[JSONRPC_FACILITY_PLAYER] = "player",
[JSONRPC_FACILITY_QUEUE] = "queue",
[JSONRPC_FACILITY_SESSION] = "session",
[JSONRPC_FACILITY_SCRIPT] = "script",
[JSONRPC_FACILITY_STICKER] = "sticker",
[JSONRPC_FACILITY_TIMER] = "timer",
[JSONRPC_FACILITY_TRIGGER] = "trigger"
}

Names for enum jsonrpc_facilities

◆ jsonrpc_severity_names

const char* jsonrpc_severity_names[JSONRPC_SEVERITY_MAX]
static
Initial value:
= {
[JSONRPC_SEVERITY_EMERG] = "emerg",
[JSONRPC_SEVERITY_ALERT] = "alert",
[JSONRPC_SEVERITY_CRIT] = "crit",
[JSONRPC_SEVERITY_ERROR] = "error",
[JSONRPC_SEVERITY_WARN] = "warn",
[JSONRPC_SEVERITY_NOTICE] = "notice",
[JSONRPC_SEVERITY_INFO] = "info",
[JSONRPC_SEVERITY_DEBUG] = "debug"
}

Names for enum jsonrpc_events