1
0
mirror of https://github.com/SuperBFG7/ympd synced 2025-05-05 08:54:07 +00:00

fix: respond to all api requests

This commit is contained in:
jcorporation 2018-07-16 23:33:55 +01:00
parent bf33c05f1f
commit 1558a05ae4

View File

@ -121,7 +121,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
} }
free(p_charbuf1); free(p_charbuf1);
} }
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\":\"result\", \"data\": \"ok\"}"); n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
break; break;
case MPD_API_GET_ARTISTALBUMTITLES: case MPD_API_GET_ARTISTALBUMTITLES:
je = json_scanf(msg.p, msg.len, "{ data: { albumartist:%Q, album:%Q } }", &p_charbuf1, &p_charbuf2); je = json_scanf(msg.p, msg.len, "{ data: { albumartist:%Q, album:%Q } }", &p_charbuf1, &p_charbuf2);
@ -136,34 +136,45 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
break; break;
case MPD_API_UPDATE_DB: case MPD_API_UPDATE_DB:
mpd_run_update(mpd.conn, NULL); mpd_run_update(mpd.conn, NULL);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
break; break;
case MPD_API_SET_PAUSE: case MPD_API_SET_PAUSE:
mpd_run_toggle_pause(mpd.conn); mpd_run_toggle_pause(mpd.conn);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
break; break;
case MPD_API_SET_PREV: case MPD_API_SET_PREV:
mpd_run_previous(mpd.conn); mpd_run_previous(mpd.conn);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
break; break;
case MPD_API_SET_NEXT: case MPD_API_SET_NEXT:
mpd_run_next(mpd.conn); mpd_run_next(mpd.conn);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
break; break;
case MPD_API_SET_PLAY: case MPD_API_SET_PLAY:
mpd_run_play(mpd.conn); mpd_run_play(mpd.conn);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
break; break;
case MPD_API_SET_STOP: case MPD_API_SET_STOP:
mpd_run_stop(mpd.conn); mpd_run_stop(mpd.conn);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
break; break;
case MPD_API_RM_ALL: case MPD_API_RM_ALL:
mpd_run_clear(mpd.conn); mpd_run_clear(mpd.conn);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
break; break;
case MPD_API_RM_TRACK: case MPD_API_RM_TRACK:
je = json_scanf(msg.p, msg.len, "{ data: { track:%u } }", &uint_buf1); je = json_scanf(msg.p, msg.len, "{ data: { track:%u } }", &uint_buf1);
if (je == 1) if (je == 1) {
mpd_run_delete_id(mpd.conn, uint_buf1); mpd_run_delete_id(mpd.conn, uint_buf1);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
}
break; break;
case MPD_API_RM_RANGE: case MPD_API_RM_RANGE:
je = json_scanf(msg.p, msg.len, "{ data: { start:%u, end:%u } }", &uint_buf1, &uint_buf2); je = json_scanf(msg.p, msg.len, "{ data: { start:%u, end:%u } }", &uint_buf1, &uint_buf2);
if (je == 2) if (je == 2) {
mpd_run_delete_range(mpd.conn, uint_buf1, uint_buf2); mpd_run_delete_range(mpd.conn, uint_buf1, uint_buf2);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
}
break; break;
case MPD_API_MOVE_TRACK: case MPD_API_MOVE_TRACK:
je = json_scanf(msg.p, msg.len, "{ data: { track:%u, pos:%u } }", &uint_buf1, &uint_buf2); je = json_scanf(msg.p, msg.len, "{ data: { track:%u, pos:%u } }", &uint_buf1, &uint_buf2);
@ -171,40 +182,48 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
uint_buf1 -= 1; uint_buf1 -= 1;
uint_buf2 -= 1; uint_buf2 -= 1;
mpd_run_move(mpd.conn, uint_buf1, uint_buf2); mpd_run_move(mpd.conn, uint_buf1, uint_buf2);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
} }
break; break;
case MPD_API_PLAY_TRACK: case MPD_API_PLAY_TRACK:
je = json_scanf(msg.p, msg.len, "{ data: { track:%u } }", &uint_buf1); je = json_scanf(msg.p, msg.len, "{ data: { track:%u } }", &uint_buf1);
if (je == 1) if (je == 1) {
mpd_run_play_id(mpd.conn, uint_buf1); mpd_run_play_id(mpd.conn, uint_buf1);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
}
break; break;
case MPD_API_GET_OUTPUTNAMES: case MPD_API_GET_OUTPUTNAMES:
n = mympd_put_outputnames(mpd.buf); n = mympd_put_outputnames(mpd.buf);
break; break;
case MPD_API_TOGGLE_OUTPUT: case MPD_API_TOGGLE_OUTPUT:
je = json_scanf(msg.p, msg.len, "{ data: { output:%u, state:%u } }", &uint_buf1, &uint_buf2); je = json_scanf(msg.p, msg.len, "{ data: { output:%u, state:%u } }", &uint_buf1, &uint_buf2);
if (je == 2) if (je == 2) {
{
if (uint_buf2) if (uint_buf2)
mpd_run_enable_output(mpd.conn, uint_buf1); mpd_run_enable_output(mpd.conn, uint_buf1);
else else
mpd_run_disable_output(mpd.conn, uint_buf1); mpd_run_disable_output(mpd.conn, uint_buf1);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
} }
break; break;
case MPD_API_SET_VOLUME: case MPD_API_SET_VOLUME:
je = json_scanf(msg.p, msg.len, "{ data: { volume:%u } }", &uint_buf1); je = json_scanf(msg.p, msg.len, "{ data: { volume:%u } }", &uint_buf1);
if (je == 1) if (je == 1) {
mpd_run_set_volume(mpd.conn, uint_buf1); mpd_run_set_volume(mpd.conn, uint_buf1);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
}
break; break;
case MPD_API_SET_SEEK: case MPD_API_SET_SEEK:
je = json_scanf(msg.p, msg.len, "{ data: { songid:%u, seek:%u } }", &uint_buf1, &uint_buf2); je = json_scanf(msg.p, msg.len, "{ data: { songid:%u, seek:%u } }", &uint_buf1, &uint_buf2);
if (je == 2) if (je == 2) {
mpd_run_seek_id(mpd.conn, uint_buf1, uint_buf2); mpd_run_seek_id(mpd.conn, uint_buf1, uint_buf2);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
}
break; break;
case MPD_API_GET_QUEUE: case MPD_API_GET_QUEUE:
je = json_scanf(msg.p, msg.len, "{ data: { offset:%u } }", &uint_buf1); je = json_scanf(msg.p, msg.len, "{ data: { offset:%u } }", &uint_buf1);
if (je == 1) if (je == 1) {
n = mympd_put_queue(mpd.buf, uint_buf1); n = mympd_put_queue(mpd.buf, uint_buf1);
}
break; break;
case MPD_API_GET_CURRENT_SONG: case MPD_API_GET_CURRENT_SONG:
n = mympd_put_current_song(mpd.buf); n = mympd_put_current_song(mpd.buf);
@ -251,6 +270,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
if (je == 2) { if (je == 2) {
mpd_run_add_id_to(mpd.conn, p_charbuf1, uint_buf1); mpd_run_add_id_to(mpd.conn, p_charbuf1, uint_buf1);
free(p_charbuf1); free(p_charbuf1);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
} }
break; break;
case MPD_API_REPLACE_TRACK: case MPD_API_REPLACE_TRACK:
@ -260,6 +280,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
mpd_run_add(mpd.conn, p_charbuf1); mpd_run_add(mpd.conn, p_charbuf1);
free(p_charbuf1); free(p_charbuf1);
mpd_run_play(mpd.conn); mpd_run_play(mpd.conn);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
} }
break; break;
case MPD_API_ADD_TRACK: case MPD_API_ADD_TRACK:
@ -267,6 +288,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
if (je == 1) { if (je == 1) {
mpd_run_add(mpd.conn, p_charbuf1); mpd_run_add(mpd.conn, p_charbuf1);
free(p_charbuf1); free(p_charbuf1);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
} }
break; break;
case MPD_API_ADD_PLAY_TRACK: case MPD_API_ADD_PLAY_TRACK:
@ -276,6 +298,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
if(int_buf != -1) if(int_buf != -1)
mpd_run_play_id(mpd.conn, int_buf); mpd_run_play_id(mpd.conn, int_buf);
free(p_charbuf1); free(p_charbuf1);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
} }
break; break;
case MPD_API_REPLACE_PLAYLIST: case MPD_API_REPLACE_PLAYLIST:
@ -285,6 +308,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
mpd_run_load(mpd.conn, p_charbuf1); mpd_run_load(mpd.conn, p_charbuf1);
free(p_charbuf1); free(p_charbuf1);
mpd_run_play(mpd.conn); mpd_run_play(mpd.conn);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
} }
break; break;
case MPD_API_ADD_PLAYLIST: case MPD_API_ADD_PLAYLIST:
@ -292,6 +316,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
if (je == 1) { if (je == 1) {
mpd_run_load(mpd.conn, p_charbuf1); mpd_run_load(mpd.conn, p_charbuf1);
free(p_charbuf1); free(p_charbuf1);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
} }
break; break;
case MPD_API_SAVE_QUEUE: case MPD_API_SAVE_QUEUE:
@ -299,6 +324,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
if (je == 1) { if (je == 1) {
mpd_run_save(mpd.conn, p_charbuf1); mpd_run_save(mpd.conn, p_charbuf1);
free(p_charbuf1); free(p_charbuf1);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
} }
break; break;
case MPD_API_SEARCH_QUEUE: case MPD_API_SEARCH_QUEUE:
@ -327,6 +353,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
break; break;
case MPD_API_SEND_SHUFFLE: case MPD_API_SEND_SHUFFLE:
mpd_run_shuffle(mpd.conn); mpd_run_shuffle(mpd.conn);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
break; break;
case MPD_API_SEND_MESSAGE: case MPD_API_SEND_MESSAGE:
je = json_scanf(msg.p, msg.len, "{ data: { channel:%Q, text:%Q } }", &p_charbuf1, &p_charbuf2); je = json_scanf(msg.p, msg.len, "{ data: { channel:%Q, text:%Q } }", &p_charbuf1, &p_charbuf2);
@ -334,6 +361,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
mpd_run_send_message(mpd.conn, p_charbuf1, p_charbuf2); mpd_run_send_message(mpd.conn, p_charbuf1, p_charbuf2);
free(p_charbuf1); free(p_charbuf1);
free(p_charbuf2); free(p_charbuf2);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
} }
break; break;
case MPD_API_RM_PLAYLIST: case MPD_API_RM_PLAYLIST:
@ -341,6 +369,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
if (je == 1) { if (je == 1) {
mpd_run_rm(mpd.conn, p_charbuf1); mpd_run_rm(mpd.conn, p_charbuf1);
free(p_charbuf1); free(p_charbuf1);
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"result\", \"data\": \"ok\"}");
} }
break; break;
case MPD_API_GET_SETTINGS: case MPD_API_GET_SETTINGS:
@ -355,7 +384,7 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
if (mpd.conn_state == MPD_CONNECTED && mpd_connection_get_error(mpd.conn) != MPD_ERROR_SUCCESS) if (mpd.conn_state == MPD_CONNECTED && mpd_connection_get_error(mpd.conn) != MPD_ERROR_SUCCESS)
{ {
#ifdef DEBUG #ifdef DEBUG
fprintf(stdout,"Error: %s\n",mpd_connection_get_error_message(mpd.conn)); fprintf(stderr,"Error: %s\n", mpd_connection_get_error_message(mpd.conn));
#endif #endif
n = snprintf(mpd.buf, MAX_SIZE, "{\"type\":\"error\", \"data\": \"%s\"}", n = snprintf(mpd.buf, MAX_SIZE, "{\"type\":\"error\", \"data\": \"%s\"}",
mpd_connection_get_error_message(mpd.conn)); mpd_connection_get_error_message(mpd.conn));
@ -365,19 +394,21 @@ void callback_mympd(struct mg_connection *nc, const struct mg_str msg)
mpd.conn_state = MPD_FAILURE; mpd.conn_state = MPD_FAILURE;
} }
if (n > 0) { if (n == 0) {
if (is_websocket(nc)) { n = snprintf(mpd.buf, MAX_SIZE, "{\"type\": \"error\", \"data\": \"No response for cmd %s\"}", cmd);
#ifdef DEBUG }
fprintf(stdout,"Send websocket response:\n %s\n",mpd.buf);
#endif if (is_websocket(nc)) {
mg_send_websocket_frame(nc, WEBSOCKET_OP_TEXT, mpd.buf, n); #ifdef DEBUG
} fprintf(stdout,"Send websocket response:\n %s\n",mpd.buf);
else { #endif
#ifdef DEBUG mg_send_websocket_frame(nc, WEBSOCKET_OP_TEXT, mpd.buf, n);
fprintf(stdout,"Send http response:\n %s\n",mpd.buf); }
#endif else {
mg_send_http_chunk(nc, mpd.buf, n); #ifdef DEBUG
} fprintf(stdout,"Send http response:\n %s\n",mpd.buf);
#endif
mg_send_http_chunk(nc, mpd.buf, n);
} }
} }