mirror of
https://github.com/owntone/owntone-server.git
synced 2024-12-29 00:23:23 -05:00
[spotify/jsonapi] Expose access token and user country in JSON API
spoitfy endpoint
This commit is contained in:
parent
d562cb9b6b
commit
7bab990eb3
@ -627,6 +627,7 @@ jsonapi_reply_spotify(struct httpd_request *hreq)
|
|||||||
char *oauth_uri;
|
char *oauth_uri;
|
||||||
struct spotify_status_info info;
|
struct spotify_status_info info;
|
||||||
struct spotifywebapi_status_info webapi_info;
|
struct spotifywebapi_status_info webapi_info;
|
||||||
|
struct spotifywebapi_access_token webapi_token;
|
||||||
|
|
||||||
json_object_object_add(jreply, "enabled", json_object_new_boolean(true));
|
json_object_object_add(jreply, "enabled", json_object_new_boolean(true));
|
||||||
|
|
||||||
@ -647,11 +648,16 @@ jsonapi_reply_spotify(struct httpd_request *hreq)
|
|||||||
spotify_status_info_get(&info);
|
spotify_status_info_get(&info);
|
||||||
json_object_object_add(jreply, "libspotify_installed", json_object_new_boolean(info.libspotify_installed));
|
json_object_object_add(jreply, "libspotify_installed", json_object_new_boolean(info.libspotify_installed));
|
||||||
json_object_object_add(jreply, "libspotify_logged_in", json_object_new_boolean(info.libspotify_logged_in));
|
json_object_object_add(jreply, "libspotify_logged_in", json_object_new_boolean(info.libspotify_logged_in));
|
||||||
json_object_object_add(jreply, "libspotify_user", json_object_new_string(info.libspotify_user));
|
safe_json_add_string(jreply, "libspotify_user", info.libspotify_user);
|
||||||
|
|
||||||
spotifywebapi_status_info_get(&webapi_info);
|
spotifywebapi_status_info_get(&webapi_info);
|
||||||
json_object_object_add(jreply, "webapi_token_valid", json_object_new_boolean(webapi_info.token_valid));
|
json_object_object_add(jreply, "webapi_token_valid", json_object_new_boolean(webapi_info.token_valid));
|
||||||
json_object_object_add(jreply, "webapi_user", json_object_new_string(webapi_info.user));
|
safe_json_add_string(jreply, "webapi_user", webapi_info.user);
|
||||||
|
safe_json_add_string(jreply, "webapi_country", webapi_info.country);
|
||||||
|
|
||||||
|
spotifywebapi_access_token_get(&webapi_token);
|
||||||
|
safe_json_add_string(jreply, "webapi_token", webapi_token.token);
|
||||||
|
json_object_object_add(jreply, "webapi_token_expires_in", json_object_new_int(webapi_token.expires_in));
|
||||||
|
|
||||||
#else
|
#else
|
||||||
json_object_object_add(jreply, "enabled", json_object_new_boolean(false));
|
json_object_object_add(jreply, "enabled", json_object_new_boolean(false));
|
||||||
|
@ -1780,6 +1780,29 @@ spotifywebapi_status_info_get(struct spotifywebapi_status_info *info)
|
|||||||
{
|
{
|
||||||
memcpy(info->user, spotify_user, (sizeof(info->user) - 1));
|
memcpy(info->user, spotify_user, (sizeof(info->user) - 1));
|
||||||
}
|
}
|
||||||
|
if (spotify_user_country)
|
||||||
|
{
|
||||||
|
memcpy(info->country, spotify_user_country, (sizeof(info->country) - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECK_ERR(L_SPOTIFY, pthread_mutex_unlock(&token_lck));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
spotifywebapi_access_token_get(struct spotifywebapi_access_token *info)
|
||||||
|
{
|
||||||
|
token_refresh();
|
||||||
|
|
||||||
|
memset(info, 0, sizeof(struct spotifywebapi_access_token));
|
||||||
|
|
||||||
|
CHECK_ERR(L_SPOTIFY, pthread_mutex_lock(&token_lck));
|
||||||
|
|
||||||
|
if (token_requested > 0)
|
||||||
|
info->expires_in = expires_in - difftime(time(NULL), token_requested);
|
||||||
|
else
|
||||||
|
info->expires_in = 0;
|
||||||
|
|
||||||
|
info->token = safe_strdup(spotify_access_token);
|
||||||
|
|
||||||
CHECK_ERR(L_SPOTIFY, pthread_mutex_unlock(&token_lck));
|
CHECK_ERR(L_SPOTIFY, pthread_mutex_unlock(&token_lck));
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,13 @@ struct spotifywebapi_status_info
|
|||||||
{
|
{
|
||||||
bool token_valid;
|
bool token_valid;
|
||||||
char user[100];
|
char user[100];
|
||||||
|
char country[3]; // ISO 3166-1 alpha-2 country code
|
||||||
|
};
|
||||||
|
|
||||||
|
struct spotifywebapi_access_token
|
||||||
|
{
|
||||||
|
int expires_in;
|
||||||
|
char *token;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -49,5 +56,7 @@ spotifywebapi_pl_remove(const char *uri);
|
|||||||
|
|
||||||
void
|
void
|
||||||
spotifywebapi_status_info_get(struct spotifywebapi_status_info *info);
|
spotifywebapi_status_info_get(struct spotifywebapi_status_info *info);
|
||||||
|
void
|
||||||
|
spotifywebapi_access_token_get(struct spotifywebapi_access_token *info);
|
||||||
|
|
||||||
#endif /* SRC_SPOTIFY_WEBAPI_H_ */
|
#endif /* SRC_SPOTIFY_WEBAPI_H_ */
|
||||||
|
Loading…
Reference in New Issue
Block a user