diff options
| author | Lars-Dominik Braun <lars@6xq.net> | 2015-08-10 10:36:03 +0200 | 
|---|---|---|
| committer | Lars-Dominik Braun <lars@6xq.net> | 2015-08-10 10:40:50 +0200 | 
| commit | 3a196f51581ffca2d2a902e83a9b69ac4702316c (patch) | |
| tree | e19c3474e46ab4da4c9f08a24f0082cc3290c7e8 /src/libpiano/request.c | |
| parent | bf814cabd1e9913d6153b65f97ad851be3da9b29 (diff) | |
| download | pianobar-3a196f51581ffca2d2a902e83a9b69ac4702316c.tar.gz pianobar-3a196f51581ffca2d2a902e83a9b69ac4702316c.tar.bz2 pianobar-3a196f51581ffca2d2a902e83a9b69ac4702316c.zip | |
Add feature to change Pandora settings
Currently exposed settings: Username, password and explicit content
filter. New key for settings is ‘!’, changeable with “act_settings”.
Fixes issues #524 and #506.
Diffstat (limited to 'src/libpiano/request.c')
| -rw-r--r-- | src/libpiano/request.c | 41 | 
1 files changed, 41 insertions, 0 deletions
| 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 */ | 
