summaryrefslogtreecommitdiff
path: root/src/libpiano/piano.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libpiano/piano.h')
-rw-r--r--src/libpiano/piano.h79
1 files changed, 56 insertions, 23 deletions
diff --git a/src/libpiano/piano.h b/src/libpiano/piano.h
index d582844..8a21d05 100644
--- a/src/libpiano/piano.h
+++ b/src/libpiano/piano.h
@@ -31,11 +31,13 @@ THE SOFTWARE.
* all strings _must_ be utf-8 encoded. i won't care, but pandora does. so
* be nice and check the encoding of your strings. thanks :) */
-#define PIANO_RPC_HOST "www.pandora.com"
-#define PIANO_RPC_PORT "80"
+/* Pandora API documentation is available at
+ * http://pan-do-ra-api.wikia.com
+ */
+
+#define PIANO_RPC_HOST "tuner.pandora.com"
typedef struct PianoUserInfo {
- char *webAuthToken;
char *listenerId;
char *authToken;
} PianoUserInfo_t;
@@ -66,10 +68,8 @@ typedef enum {
typedef struct PianoSong {
char *artist;
- char *artistMusicId;
char *stationId;
char *album;
- char *userSeed;
char *audioUrl;
char *coverArt;
char *musicId;
@@ -106,12 +106,13 @@ typedef struct PianoGenreCategory {
} PianoGenreCategory_t;
typedef struct PianoHandle {
- char routeId[9];
PianoUserInfo_t user;
/* linked lists */
PianoStation_t *stations;
PianoGenreCategory_t *genreStations;
int timeOffset;
+ char *partnerAuthToken;
+ unsigned int partnerId;
} PianoHandle_t;
typedef struct PianoSearchResult {
@@ -235,26 +236,58 @@ typedef struct {
PianoStation_t *station;
} PianoRequestDataDeleteSeed_t;
+/* pandora error code offset */
+#define PIANO_RET_OFFSET 1024
typedef enum {
PIANO_RET_ERR = 0,
PIANO_RET_OK = 1,
- PIANO_RET_XML_INVALID = 2,
- PIANO_RET_AUTH_TOKEN_INVALID = 3,
- PIANO_RET_AUTH_USER_PASSWORD_INVALID = 4,
- PIANO_RET_CONTINUE_REQUEST = 5,
- PIANO_RET_NOT_AUTHORIZED = 6,
- PIANO_RET_PROTOCOL_INCOMPATIBLE = 7,
- PIANO_RET_READONLY_MODE = 8,
- PIANO_RET_STATION_CODE_INVALID = 9,
- PIANO_RET_IP_REJECTED = 10,
- PIANO_RET_STATION_NONEXISTENT = 11,
- PIANO_RET_OUT_OF_MEMORY = 12,
- PIANO_RET_OUT_OF_SYNC = 13,
- PIANO_RET_PLAYLIST_END = 14,
- PIANO_RET_QUICKMIX_NOT_PLAYABLE = 15,
- PIANO_RET_REMOVING_TOO_MANY_SEEDS = 16,
- PIANO_RET_EXCESSIVE_ACTIVITY = 17,
- PIANO_RET_DAILY_SKIP_LIMIT_REACHED = 18,
+ PIANO_RET_INVALID_RESPONSE = 2,
+ PIANO_RET_CONTINUE_REQUEST = 3,
+ PIANO_RET_OUT_OF_MEMORY = 4,
+
+ PIANO_RET_P_INTERNAL = PIANO_RET_OFFSET+0,
+ PIANO_RET_P_API_VERSION_NOT_SUPPORTED = PIANO_RET_OFFSET+11,
+ PIANO_RET_P_BIRTH_YEAR_INVALID = PIANO_RET_OFFSET+1025,
+ PIANO_RET_P_BIRTH_YEAR_TOO_YOUNG = PIANO_RET_OFFSET+1026,
+ PIANO_RET_P_CALL_NOT_ALLOWED = PIANO_RET_OFFSET+1008,
+ PIANO_RET_P_CERTIFICATE_REQUIRED = PIANO_RET_OFFSET+7,
+ PIANO_RET_P_COMPLIMENTARY_PERIOD_ALREADY_IN_USE = PIANO_RET_OFFSET+1007,
+ PIANO_RET_P_DAILY_TRIAL_LIMIT_REACHED = PIANO_RET_OFFSET+1035,
+ PIANO_RET_P_DEVICE_ALREADY_ASSOCIATED_TO_ACCOUNT = PIANO_RET_OFFSET+1014,
+ PIANO_RET_P_DEVICE_DISABLED = PIANO_RET_OFFSET+1034,
+ PIANO_RET_P_DEVICE_MODEL_INVALID = PIANO_RET_OFFSET+1023,
+ PIANO_RET_P_DEVICE_NOT_FOUND = PIANO_RET_OFFSET+1009,
+ PIANO_RET_P_EXPLICIT_PIN_INCORRECT = PIANO_RET_OFFSET+1018,
+ PIANO_RET_P_EXPLICIT_PIN_MALFORMED = PIANO_RET_OFFSET+1020,
+ PIANO_RET_P_INSUFFICIENT_CONNECTIVITY = PIANO_RET_OFFSET+13,
+ PIANO_RET_P_INVALID_AUTH_TOKEN = PIANO_RET_OFFSET+1001,
+ PIANO_RET_P_INVALID_COUNTRY_CODE = PIANO_RET_OFFSET+1027,
+ PIANO_RET_P_INVALID_GENDER = PIANO_RET_OFFSET+1027,
+ PIANO_RET_P_INVALID_PARTNER_LOGIN = PIANO_RET_OFFSET+1002,
+ PIANO_RET_P_INVALID_PASSWORD = PIANO_RET_OFFSET+1012,
+ PIANO_RET_P_INVALID_SPONSOR = PIANO_RET_OFFSET+1036,
+ PIANO_RET_P_INVALID_USERNAME = PIANO_RET_OFFSET+1011,
+ PIANO_RET_P_LICENSING_RESTRICTIONS = PIANO_RET_OFFSET+12,
+ PIANO_RET_P_MAINTENANCE_MODE = PIANO_RET_OFFSET+1,
+ PIANO_RET_P_MAX_STATIONS_REACHED = PIANO_RET_OFFSET+1005,
+ PIANO_RET_P_PARAMETER_MISSING = PIANO_RET_OFFSET+9,
+ PIANO_RET_P_PARAMETER_TYPE_MISMATCH = PIANO_RET_OFFSET+8,
+ PIANO_RET_P_PARAMETER_VALUE_INVALID = PIANO_RET_OFFSET+10,
+ PIANO_RET_P_PARTNER_NOT_AUTHORIZED = PIANO_RET_OFFSET+1010,
+ PIANO_RET_P_READ_ONLY_MODE = PIANO_RET_OFFSET+1000,
+ PIANO_RET_P_SECURE_PROTOCOL_REQUIRED = PIANO_RET_OFFSET+6,
+ PIANO_RET_P_STATION_DOES_NOT_EXIST = PIANO_RET_OFFSET+1006,
+ PIANO_RET_P_UPGRADE_DEVICE_MODEL_INVALID = PIANO_RET_OFFSET+1015,
+ PIANO_RET_P_URL_PARAM_MISSING_AUTH_TOKEN = PIANO_RET_OFFSET+3,
+ PIANO_RET_P_URL_PARAM_MISSING_METHOD = PIANO_RET_OFFSET+2,
+ PIANO_RET_P_URL_PARAM_MISSING_PARTNER_ID = PIANO_RET_OFFSET+4,
+ PIANO_RET_P_URL_PARAM_MISSING_USER_ID = PIANO_RET_OFFSET+5,
+ PIANO_RET_P_USERNAME_ALREADY_EXISTS = PIANO_RET_OFFSET+1013,
+ PIANO_RET_P_USER_ALREADY_USED_TRIAL = PIANO_RET_OFFSET+1037,
+ PIANO_RET_P_USER_NOT_ACTIVE = PIANO_RET_OFFSET+1003,
+ PIANO_RET_P_USER_NOT_AUTHORIZED = PIANO_RET_OFFSET+1004,
+ PIANO_RET_P_ZIP_CODE_INVALID = PIANO_RET_OFFSET+1024,
+
} PianoReturn_t;
void PianoInit (PianoHandle_t *);