Files
squeezelite-esp32/components/spotify/cspot/include/AccessKeyFetcher.h
2023-07-25 19:08:30 -07:00

41 lines
869 B
C++

#pragma once
#include <atomic> // or std::atomic
#include <functional> // for function
#include <memory> // for shared_ptr
#include <string> // for string
namespace cspot {
struct Context;
class AccessKeyFetcher {
public:
AccessKeyFetcher(std::shared_ptr<cspot::Context> ctx);
/**
* @brief Checks if key is expired
* @returns true when currently held access key is not valid
*/
bool isExpired();
/**
* @brief Fetches a new access key
* @remark In case the key is expired, this function blocks until a refresh is done.
* @returns access key
*/
std::string getAccessKey();
/**
* @brief Forces a refresh of the access key
*/
void updateAccessKey();
private:
std::shared_ptr<cspot::Context> ctx;
std::atomic<bool> keyPending = false;
std::string accessKey;
long long int expiresAt;
};
} // namespace cspot