メインコンテンツへスキップ
リクエストを行うと、アプリケーション情報が返され、その情報が Application オブジェクト自体にキャッシュされます。これは、比較的短い時間内に同じ情報へ再度アクセスする必要があり、更新データのために新たな API リクエストを行うほどの価値がない場合に役立ちます。そのような場合には、Application.cache にアクセスできます。
import squarecloud as square

client = square.Client('API_KEY')

async def example():
    app = await client.app('application_id')

    # Note that, as no requests have been made, * in the cache will be None
    print(app.cache.logs)    # None
    print(app.cache.status)  # None
    print(app.cache.backup)  # None

    # Now let's make some requests
    await app.logs()
    await app.status()
    await app.backup()

    # The cache has been updated 🤯
    print(app.cache.logs)    # LogsData(...)
    print(app.cache.status)  # StatusData(...)
    print(app.cache.backup)  # BackupData(...)

キャッシュを更新せずにリクエストを行う

何らかの理由でリクエスト時にキャッシュを更新したくない場合は、update_cache=False 引数を渡すことができます。
import squarecloud as square

client = square.Client('API_KEY')

async def example():
    app = await client.app('application_id')
    await app.status(update_cache=False)
    print(app.cache.status)  # None
cache.update に渡す引数が StatusDataLogsDataBackupData のいずれかのインスタンスでない場合、SquareException エラーが発生します。

キャッシュを手動でクリアする

cache.clear を使ってキャッシュを手動でクリアできます。
import squarecloud as square

client = square.Client('API_KEY')


async def example():
    app = await client.app('application_id')

    await app.status()
    print(app.cache.status)  # StatusData(...)
    app.cache.clear()
    print(app.cache.status)  # None

キャッシュを手動で更新する

cache.update メソッドを使ってキャッシュを手動で更新することもできます。
import squarecloud as square

client = square.Client('API_KEY')


async def example():
    app = await client.app('application_id')

    logs = await app.logs()
    status = await app.status()
    backup = await app.backup()

    app.cache.clear()  # Clears the cache
    app.cache.update(status, logs, backup)  # Updates the cache

    print(app.cache.logs)    # LogsData(...)
    print(app.cache.status)  # StatusData(...)
    print(app.cache.backup)  # BackupData(...)