#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
cloud_disk.py - 贺简云物联 IoT 设备云盘示例（Python）

演示：只读三接口（disk_stats/disk_list/disk_read）+ report.fs 写类指令。
写类操作需要租户已在 Web 端签署《云盘使用协议》；未开通会被平台拒绝，
此时抛出的 HjyIotError 会携带平台返回的提示。

协议参考：docs/设备接入与公开应用.md §2
"""

from hjyiot import HjyIotDevice, HjyIotError

BASE_URL = "https://www.hjyiot.cn/api.php"
DEVICE_ID = "<your_device_id>"
DEVICE_TOKEN = "<your_device_token>"


def main() -> None:
    dev = HjyIotDevice(BASE_URL, DEVICE_ID, DEVICE_TOKEN)

    # 1) 空间概览（只读）
    try:
        stats = dev.disk_stats()
        print("[disk_stats] used=%s/%s (%s%%) read_only=%s disabled=%s" % (
            stats.get("used_text"), stats.get("limit_text"),
            stats.get("percent"), stats.get("read_only"), stats.get("disabled")))
    except HjyIotError as exc:
        print("[disk_stats] 失败:", exc)
        return

    # 2) 目录浏览（只读）
    try:
        listing = dev.disk_list("")
        print("[disk_list] 根目录条目:", len(listing.get("items", [])))
        for item in listing.get("items", []):
            print("   -", item)
    except HjyIotError as exc:
        print("[disk_list] 失败:", exc)

    # 3) 读取 txt 文件（只读；请改为云盘实际存在的文件）
    try:
        content = dev.disk_read("logs/device.log")
        print("[disk_read] size=%s, content:\n%s" % (content.get("size"), content.get("content", "")[:500]))
    except HjyIotError as exc:
        print("[disk_read] 失败:", exc)

    # 4) report.fs：追加写入运行日志（需已签署协议；单条内容 <=128KB，仅 txt）
    try:
        item = dev.fs_write("logs/device.log",
                            "python-sdk heartbeat at %s\n" % __import__("time").time(),
                            mode="append", create=True)
        print("[fs_write] ok:", item)
    except HjyIotError as exc:
        print("[fs_write] 失败:", exc)

    # 5) report.fs：删除 txt 中指定内容片段（可选演示，先注释）
    # try:
    #     item = dev.fs_delete_content("logs/device.log", "OOM", all_=False)
    #     print("[fs_delete_content] ok:", item)
    # except HjyIotError as exc:
    #     print("[fs_delete_content] 失败:", exc)

    # 6) report.fs：删除文件（可选演示，先注释）
    # try:
    #     item = dev.fs_delete("logs/old.log")
    #     print("[fs_delete] ok:", item)
    # except HjyIotError as exc:
    #     print("[fs_delete] 失败:", exc)


if __name__ == "__main__":
    main()
