From 3a196f51581ffca2d2a902e83a9b69ac4702316c Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 10 Aug 2015 10:36:03 +0200 Subject: Add feature to change Pandora settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently exposed settings: Username, password and explicit content filter. New key for settings is ‘!’, changeable with “act_settings”. Fixes issues #524 and #506. --- src/libpiano/request.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/libpiano/request.c') diff --git a/src/libpiano/request.c b/src/libpiano/request.c index cad0907..95ac2d0 100644 --- a/src/libpiano/request.c +++ b/src/libpiano/request.c @@ -402,6 +402,47 @@ PianoReturn_t PianoRequest (PianoHandle_t *ph, PianoRequest_t *req, break; } + case PIANO_REQUEST_GET_SETTINGS: { + method = "user.getSettings"; + break; + } + + case PIANO_REQUEST_CHANGE_SETTINGS: { + PianoRequestDataChangeSettings_t *reqData = req->data; + assert (reqData != NULL); + assert (reqData->currentPassword != NULL); + assert (reqData->currentUsername != NULL); + + json_object_object_add (j, "userInitiatedChange", + json_object_new_boolean (true)); + json_object_object_add (j, "currentUsername", + json_object_new_string (reqData->currentUsername)); + json_object_object_add (j, "currentPassword", + json_object_new_string (reqData->currentPassword)); + + if (reqData->explicitContentFilter != PIANO_UNDEFINED) { + json_object_object_add (j, "isExplicitContentFilterEnabled", + json_object_new_boolean ( + reqData->explicitContentFilter == PIANO_TRUE)); + } + +#define changeIfSet(field) \ + if (reqData->field != NULL) { \ + json_object_object_add (j, #field, \ + json_object_new_string (reqData->field)); \ + } + + changeIfSet (newUsername); + changeIfSet (newPassword); + +#undef changeIfSet + + req->secure = true; + + method = "user.changeSettings"; + break; + } + /* "high-level" wrapper */ case PIANO_REQUEST_RATE_SONG: { /* love/ban song */ -- cgit v1.2.3