seamapi/seam
Composer 安装命令:
composer require seamapi/seam
包简介
README 文档
README
Control locks, lights and other internet of things devices with Seam's simple API.
Check out the documentation or the usage below.
Usage
$seam = new Seam\SeamClient("YOUR_API_KEY"); # Create a Connect Webview to login to a provider $connect_webview = $seam->connect_webviews->create( accepted_providers: ["august"] ); print "Please Login at this url: " . $connect_webview->url; # Poll until connect webview is completed while (true) { $connect_webview = $seam->connect_webviews->get( $connect_webview->connect_webview_id ); if ($connect_webview->status == "authorized") { break; } else { sleep(1); } } $connected_account = $seam->connected_accounts->get( $connect_webview->connected_account_id ); print "Looks like you connected with " . json_encode($connected_account->user_identifier); $devices = $seam->devices->list( connected_account_id: $connected_account->connected_account_id ); print "You have " . count($devices) . " devices"; $device_id = $devices[0]->device_id; # Lock a Door $seam->locks->lock_door($device_id); $updated_device = $seam->devices->get($device_id); $updated_device->properties->locked; // true # Unlock a Door $seam->locks->unlock_door($device_id); $updated_device->properties->locked; // false # Create an access code on a device $access_code = $seam->access_codes->create( device_id: $device_id, code: "1234", name: "Test Code" ); # Check the status of an access code $access_code->status; // 'setting' (it will go to 'set' when active on the device) $seam->access_codes->delete($access_code->access_code_id);
Pagination
Some Seam API endpoints that return lists of resources support pagination.
Use the Paginator class to fetch and process resources across multiple pages.
Manually fetch pages with the next_page_cursor
$pages = $seam->createPaginator( fn($params) => $seam->connected_accounts->list(...$params), ["limit" => 2] ); [$connectedAccounts, $pagination] = $pages->firstPage(); if ($pagination->has_next_page) { [$moreConnectedAccounts] = $pages->nextPage($pagination->next_page_cursor); }
Resume pagination
Get the first page on initial load:
$params = ["limit" => 20]; $pages = $seam->createPaginator( fn($p) => $seam->connected_accounts->list(...$p), $params ); [$connectedAccounts, $pagination] = $pages->firstPage(); // Store pagination state for later use file_put_contents( "/tmp/seam_connected_accounts_list.json", json_encode([$params, $pagination]) );
Get the next page at a later time:
$stored_data = json_decode( file_get_contents("/tmp/seam_connected_accounts_list.json") ?: "[]", false ); $params = $stored_data[0] ?? []; $pagination = $stored_data[1] ?? (object) ["has_next_page" => false, "next_page_cursor" => null]; if ($pagination->has_next_page) { $pages = $seam->createPaginator( fn($p) => $seam->connected_accounts->list(...$p), $params ); [$moreConnectedAccounts] = $pages->nextPage($pagination->next_page_cursor); }
Iterate over all resources
$pages = $seam->createPaginator( fn($p) => $seam->connected_accounts->list(...$p), ["limit" => 20] ); foreach ($pages->flatten() as $connectedAccount) { print $connectedAccount->account_type_display_name . "\n"; }
Return all resources across all pages as an array
$pages = $seam->createPaginator( fn($p) => $seam->connected_accounts->list(...$p), ["limit" => 20] ); $connectedAccounts = $pages->flattenToArray();
Installation
To install the latest version of the automatically generated SDK, run:
composer require seamapi/seam
If you want to install our previous handwritten version, run:
composer require seamapi/seam:1.1
Development Setup
- Run
yarn installto get prettier installed for formatting - Install composer.
- Run
composer installin this directory - Run
composer exec phpunit tests
To run a specific test file, do
composer exec phpunit tests/MyTest.php
Running Tests
You'll need to export SEAM_API_KEY to a sandbox workspace API key.
seamapi/seam 适用场景与选型建议
seamapi/seam 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 124.01k 次下载、GitHub Stars 达 4, 最近一次更新时间为 2022 年 09 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 seamapi/seam 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 seamapi/seam 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 124.01k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 12
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Unknown
- 更新时间: 2022-09-14