jippi/php-hipchat-connect

此包已被弃用且不再维护。未建议替代包。

HipChat 连接 (v2) API 辅助工具

dev-master 2015-11-11 16:53 UTC

This package is auto-updated.

Last update: 2024-06-14 06:33:45 UTC


README

此工具包将帮助您构建有效的 HipChat 连接清单文件。

它提供了对最重要键的基本验证,并帮助您避免数小时的令人沮丧的调试,通过引导您通过流畅且一致的界面来配置您的 HipChat Connect 清单文件。

如果在验证过程中发现任何错误,将抛出 HipChat\Exception\ValidationException 异常。此异常实例具有 getValidationErrorCountgetValidationErrors 方法,以帮助检查发现的验证错误。

大部分代码目前位于 HipChat\Manifest\AbstractNodeHipChat\Manifest\Capabilities 类中。

工具包使用 cakephp/validation 进行数据验证

安装

composer.json

{
    "minimum-stability": "dev",
    "require": {
        "jippi/php-hipchat-connect": "dev-master"
    }
}

运行 composer install

composer require jippi/php-hipchat-connect

示例

<?php
require 'vendor/autoload.php';

$generator = new \HipChat\Manifest\Generator();
$generator->name = 'Example App';
$generator->description = 'An integration that does wonderful things with examples';
$generator->key = 'com.example.demo';
$generator->vendor()
    ->set('name', 'Bownty')
    ->set('url', 'bownty.com');
$generator->links()
    ->set('homepage', 'https://addon.example.com/')
    ->set('self', 'https://addon.example.com/capabilities');
$generator->capabilities()
    ->webhook('email_sniffer')
        ->set('url', 'https://addon.example.com/email_sniffer')
        ->set('pattern', '[@]')
        ->set('event', 'room_message')
        ->set('authentication', 'none')
        ->set('name', 'E-mail sniffer');
$generator->capabilities()
    ->action('demo')
        ->set('key', 'message.reminder')
        ->set('name', ['value' => 'Set reminder'])
        ->set('target', 'message.reminder.dialog')
        ->set('location', 'hipchat.message.action');
$generator->capabilities()
    ->dialog('demo')
        ->set('key', 'meh')
        ->set('title', ['value' => 'Add Reminder'])
        ->set('url', 'https://addon.example.com/message/reminders')
        ->set('options', ['filter' => ['placeholder' => ['value' => 'muh']]]);
$generator->capabilities()
    ->glance('demo')
        ->set('key', 'meh')
        ->set('icon', [
            'url' => 'https://addon.example.com/small.jpg',
            'url@2x' => 'https://addon.example.com/small@2x.jpg'
        ])
        ->set('name', ['value' => 'Locked Repositories'])
        ->set('target', ['value' => 'locked.repos.sidebar'])
        ->set('queryUrl', 'https://addon.example.com/glance/example');
$generator->capabilities()
    ->installable()
        ->set('allowGlobal', true)
        ->set('allowRoom', true);

$generator->validate();

echo json_encode($generator);
?>

将输出

{
  "name": "Example App",
  "description": "An integration that does wonderful things with examples",
  "key": "com.example.demo",
  "vendor": {
    "name": "Bownty",
    "url": "bownty.com"
  },
  "links": {
    "homepage": "https://addon.example.com/",
    "self": "https://addon.example.com/capabilities"
  },
  "capabilities": {
    "action": [
      {
        "key": "message.reminder",
        "name": {
          "value": "Set reminder"
        },
        "target": "message.reminder.dialog",
        "location": "hipchat.message.action"
      }
    ],
    "webhook": [
      {
        "url": "https://addon.example.com/email_sniffer",
        "pattern": "[@]",
        "event": "room_message",
        "authentication": "none",
        "name": "E-mail sniffer"
      }
    ],
    "dialog": [
      {
        "key": "meh",
        "title": {
          "value": "Add Reminder"
        },
        "url": "https://addon.example.com/message/reminders",
        "options": {
          "filter": {
            "placeholder": {
              "value": "muh"
            }
          }
        }
      }
    ],
    "glance": [
      {
        "key": "meh",
        "icon": {
          "url": "https://addon.example.com/small.jpg",
          "url@2x": "https://addon.example.com/small@2x.jpg"
        },
        "name": {
          "value": "Locked Repositories"
        },
        "target": {
          "value": "locked.repos.sidebar"
        },
        "queryUrl": "https://addon.example.com/glance/example"
      }
    ],
    "installable": {
      "allowGlobal": true,
      "allowRoom": true
    }
  }
}