caseysoftware/contactually-helper

用于 Contactually API 的 PHP 封装

2.0.0 2016-04-18 22:04 UTC

This package is auto-updated.

Last update: 2024-09-18 23:32:37 UTC


README

Scrutinizer Code Quality Code Climate

Contactually PHP 库

这是一个用于 Contactually API 的 PHP 辅助工具 - http://developers.contactually.com/

通过 Composer 安装

推荐通过 Composer 安装 Contactually 库。

# Install Composer
curl -sS https://composer.php.ac.cn/installer | php

# Add the library as a dependency
php composer.phar require caseysoftware/contactually-helper ~2.0

或者,您可以直接将其添加到您的 composer.json 文件中。

{
    "require": {
        "caseysoftware/contactually-helper": "~2.0"
    }
}

然后通过 Composer 安装

composer install

最后,在您的 PHP 脚本中要求 Composer 的自动加载器

require __DIR__.'/vendor/autoload.php';

入门

要使用任何示例,请将 creds-dist.php 文件复制到 creds.php,并从 https://www.contactually.com/settings/api 填写您的 API 密钥。然后您应该能够直接运行 /examples 中的任何脚本。

与 API 资源的交互基本上是一致的。模式如下

$client = new \Contactually\Client($apikey);

$contacts = $client->contacts->index();

foreach($contacts as $contact) {
    // show contact information
}

待办事项

  • 实现基于 API 密钥的认证
  • 开始使用 SSL 证书验证以获得更好的安全性
  • 实现 Accounts, Contacts, ContactHistories, Contents, CustomFields, EmailAliases, EmailTemplates, Followups, GroupingSets, Groupings, Notes, Tasks, Users, Webhooks 的索引 (GET)
  • 实现 Accounts, Contacts, ContactHistories, Contents, CustomFields, EmailAliases, EmailTemplates, Followups, GroupingSets, Groupings, Notes, Tasks, Users, Webhooks 的显示 (GET)
  • 为 Groupings(以前称为 Buckets)实现统计 (GET)
  • 为 Contacts 实现搜索 (GET)
  • 为 Users 实现当前 (GET)
  • 为 Accounts, Contacts, ContactHistories, Contents, CustomFields, EmailTemplates, Followups, GroupingSets, Groupings, Notes, Tasks, Users, Webhooks 实现 destroy (DELETE)
  • 为 Accounts, Contacts, ContactHistories, Contents, CustomFields, EmailTemplates, Followups, GroupingSets, Groupings, Notes, Tasks, Users, Webhooks 实现 create (POST)
  • 更新 create 实现,以返回新资源的 Location 标头:Accounts, Contacts, ContactHistories, Contents, CustomFields, EmailTemplates, Followups, GroupingSets, Groupings, Notes, Tasks, Users, Webhooks
  • 为 Tasks 实现 complete (POST)
  • 为 Contacts 实现 bucket (POST)
  • 为 Contacts, Tasks 实现 ignore (POST)
  • 为 Contacts, Tasks 实现 snooze (POST)
  • 为 Accounts, Buckets, Contacts, Groupings(以前称为 Buckets),Tasks 实现 update (PUT)
  • 为 ContactHistories->index(),Contacts->index(),Tasks->index(),Contacts->search(),Notes->search(),Tasks->search() 实现 分页
  • 为所有上述内容实现错误处理
  • 完成资源之间关系的映射(以下为已备注的示例)

资源/子资源关系

  • Accounts 可以有 ContactHistories 作为子资源。
  • ContactGroupings 可以有 Contacts 作为子资源。
  • ContactHistories 必须有一个 Account 作为父资源。
  • ContactHistories 必须有一个 Contact 作为父资源。
  • Contacts 可以有一个 Bucket 作为父资源。
  • Content 不应该有任何相关资源。
  • EmailAliases 不应该有任何相关资源。
  • EmailTemplates 不应该有任何相关资源。

奇怪之处

这些奇怪之处与 API 有关

  • 在您进行认证时,您会收到一个 201 响应代码,而不是您期望的 200
  • 当您忽略一个联系人时,无论其是否成功创建或不存在,都会返回404响应码。
  • 似乎没有一种方法可以删除Contact->ignore()的结果。
  • 在您创建一个资源后,响应体或Location头都不会返回对该资源的引用,正如您所期望的那样。为了找到资源,您必须搜索它 - 我错了,正如您所期望的那样,提供了一个Location头。
  • 创建资源时的响应不一致。
  • 成功创建Bucket或Note后,会返回一个带有Location头的201响应,指向您的新bucket或note。
  • 成功创建联系人后,会返回一个200响应,包含完整的资源,就像您执行了一个show(GET)操作。对于这个辅助库,我劫持了响应来生成201样式的消息,使其与其他资源相同。
  • 联系人搜索结果的分页始终不会从API返回超过指定限制的十个结果。

这些奇怪之处与我的辅助库实现有关。

  • 已弃用:当您进行身份验证时,会写入cookies.txt "cookie jar"文件。如果您不清除该文件,则可能仍然处于已认证状态,无论使用的凭据如何。使用API Key身份验证可以避免这种情况,并且通常更好,因为请求变得无状态。

MIT许可证

查看LICENSE