Skip to content

Commit

Permalink
Adding correct json body for now_playing and scrobble
Browse files Browse the repository at this point in the history
  • Loading branch information
mariusor committed Nov 28, 2017
1 parent 0ed0391 commit da9389e
Showing 1 changed file with 40 additions and 6 deletions.
46 changes: 40 additions & 6 deletions src/listenbrainz_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@
#define API_CODE_NODE_NAME "code"
#define API_ERROR_NODE_NAME "error"

#define LISTENBRAINZ_AUTH_URL "https://listenbrainz.org/api/auth/?api_key=%s&token=%s"
#define LISTENBRAINZ_API_BASE_URL "api.listenbrainz.org"
#define LISTENBRAINZ_API_VERSION "1"
#define LISTENBRAINZ_AUTH_URL "https://listenbrainz.org/api/auth/?api_key=%s&token=%s"
#define LISTENBRAINZ_API_BASE_URL "api.listenbrainz.org"
#define LISTENBRAINZ_API_VERSION "1"

#define API_ENDPOINT_SUBMIT_LISTEN "submit-listens"
#define API_HEADER_AUTHORIZATION_TOKENIZED "Authorization: %s"
#define API_HEADER_AUTHORIZATION_TOKENIZED "Authorization: Token %s"


static bool listenbrainz_valid_credentials(const struct api_credentials *auth)
Expand Down Expand Up @@ -61,14 +61,20 @@ struct http_request *listenbrainz_api_build_request_now_playing(const struct scr

json_object *root = json_object_new_object();
json_object_object_add(root, API_LISTEN_TYPE_NODE_NAME, json_object_new_string(API_LISTEN_TYPE_NOW_PLAYING));
json_object_object_add(root, API_LISTENED_AT_NODE_NAME, json_object_new_int64(track->start_time));

json_object *payload = json_object_new_array();

json_object *payload_elem = json_object_new_object();
json_object *metadata = json_object_new_object();
json_object_object_add(metadata, API_ALBUM_NAME_NODE_NAME, json_object_new_string(track->album));
json_object_object_add(metadata, API_ARTIST_NAME_NODE_NAME, json_object_new_string(track->artist));
json_object_object_add(metadata, API_TRACK_NAME_NODE_NAME, json_object_new_string(track->title));

json_object_object_add(root, API_METADATA_NODE_NAME, metadata);
//json_object_object_add(payload_elem, API_LISTENED_AT_NODE_NAME, json_object_new_int64(track->start_time));
json_object_object_add(payload_elem, API_METADATA_NODE_NAME, metadata);

json_object_array_add(payload, payload_elem);
json_object_object_add(root, API_PAYLOAD_NODE_NAME, payload);

body = (char*)json_object_to_json_string(root);

Expand All @@ -86,7 +92,9 @@ struct http_request *listenbrainz_api_build_request_now_playing(const struct scr
request->url = api_get_url(request->end_point);
strncpy(request->url + strlen(request->url), API_ENDPOINT_SUBMIT_LISTEN, strlen(API_ENDPOINT_SUBMIT_LISTEN));

#if 0
print_http_request(request);
#endif

return request;
}
Expand All @@ -106,6 +114,29 @@ struct http_request *listenbrainz_api_build_request_scrobble(const struct scrobb
char *body = get_zero_string(MAX_BODY_SIZE);
char *query = get_zero_string(MAX_BODY_SIZE);

json_object *root = json_object_new_object();
json_object_object_add(root, API_LISTEN_TYPE_NODE_NAME, json_object_new_string(API_LISTEN_TYPE_SCROBBLE));

json_object *payload = json_object_new_array();
for (size_t i = 0; i < track_count; i++) {
const struct scrobble *track = tracks[i];
json_object *payload_elem = json_object_new_object();
json_object *metadata = json_object_new_object();
json_object_object_add(metadata, API_ALBUM_NAME_NODE_NAME, json_object_new_string(track->album));
json_object_object_add(metadata, API_ARTIST_NAME_NODE_NAME, json_object_new_string(track->artist));
json_object_object_add(metadata, API_TRACK_NAME_NODE_NAME, json_object_new_string(track->title));

json_object_object_add(payload_elem, API_LISTENED_AT_NODE_NAME, json_object_new_int64(track->start_time));
json_object_object_add(payload_elem, API_METADATA_NODE_NAME, metadata);

json_object_array_add(payload, payload_elem);
}

json_object_object_add(root, API_PAYLOAD_NODE_NAME, payload);

body = (char*)json_object_to_json_string(root);

//json_object_put(root);
struct http_request *request = http_request_new();
request->headers[0] = authorization_header;
request->headers_count++;
Expand All @@ -115,8 +146,11 @@ struct http_request *listenbrainz_api_build_request_scrobble(const struct scrobb
request->body_length = strlen(body);
request->end_point = api_endpoint_new(auth->end_point);
request->url = api_get_url(request->end_point);
strncpy(request->url + strlen(request->url), API_ENDPOINT_SUBMIT_LISTEN, strlen(API_ENDPOINT_SUBMIT_LISTEN));

#if 0
print_http_request(request);
#endif
return request;
}

Expand Down

0 comments on commit da9389e

Please sign in to comment.