Awesome Open Source
Awesome Open Source

Gitter API Client 4.0

Latest Stable Version https://travis-ci.org/SerafimArts/gitter-api Scrutinizer Code Quality License Total Downloads

Installation

composer require serafim/gitter-api

Creating a Gitter Client

use Gitter\Client;

$client = new Client($token); 
// OR
$client = new Client($token, $logger); // $logger are instance of \Psr\Log\LoggerInterface

// ... SOME ACTIONS ...

$client->connect(); // Locks current runtime and starts an EventLoop (for streaming requests)

Resources

// $client = new \Gitter\Client('token');

$client->groups;   // Groups resource (Traversable)
$client->messages; // Messages resource
$client->rooms;    // Rooms resource (Traversable)
$client->users;    // Users resource

Example

foreach ($client->rooms as $room) {
    var_dump($room);
}

Streaming

$observer = $client->rooms->messages('roomId'); // Observer

$observer->subscribe(function ($message) {
    var_dump($message);
});

// Connect to stream!
$client->connect();

Available resources

Groups

List groups the current user is in.

  • $client->groups->all(): array

List of rooms nested under the specified group.

  • $client->groups->rooms(string $roomId): array

Messages

List of messages in a room in historical reversed order.

  • $client->messages->all(string $roomId[, string $query]): \Generator

There is also a way to retrieve a single message using its id.

  • $client->messages->find(string $roomId, string $messageId): array

Send a message to a room.

  • $client->messages->create(string $roomId, string $content): array

Update a message.

  • $client->messages->update(string $roomId, string $messageId, string $content): array

Delete a message.

  • $client->messages->delete(string $roomId, string $messageId): array

Rooms

List rooms the current user is in.

  • $client->rooms->all([string $query]): array

Join user into a room.

  • $client->rooms->joinUser(string $roomId, string $userId): array

Join current user into a room.

  • $client->rooms->join(string $roomId): array

Join current user into a room by room name (URI).

  • $client->rooms->joinByName(string $name): array

Find room by room name (URI).

  • $client->rooms->findByName(string $name): array

Kick user from target room.

  • $client->rooms->kick(string $roomId, string $userId): array

This can be self-inflicted to leave the the room and remove room from your left menu.

  • $client->rooms->leave(string $roomId): array

Sets up a new topic of target room.

  • $client->rooms->topic(string $roomId, string $topic): array

Sets the room is indexed by search engines.

  • $client->rooms->searchIndex(string $roomId, bool $enabled): array

Sets the tags that define the room

  • $client->rooms->tags(string $roomId, array $tags): array

If you hate one of the rooms - you can destroy it!

  • $client->rooms->delete(string $roomId): array

List of users currently in the room.

  • $client->rooms->users(string $roomId[, string $query]: \Generator

Use the streaming API to listen events.

  • $client->rooms->events(string $roomId): Observer

Use the streaming API to listen messages.

  • $client->rooms->messages(string $roomId): Observer

Users

Returns the current user logged in.

  • $client->users->current(): array
  • $client->users->currentUserId(): string

List of Rooms the user is part of.

  • $client->users->rooms([string $userId]): array

You can retrieve unread items and mentions using the following endpoint.

  • $client->users->unreadItems(string $roomId[, string $userId]): array

There is an additional endpoint nested under rooms that you can use to mark chat messages as read

  • $client->users->markAsRead(string $roomId, array $messageIds[, string $userId]): array

List of the user's GitHub Organisations and their respective Room if available.

  • $client->users->orgs([string $userId]): array

List of the user's GitHub Repositories and their respective Room if available.

  • $client->users->repos([string $userId]): array

List of Gitter channels nested under the user.

  • $client->users->channels([string $userId]): array

Custom WebHook Notifications

Create a "Custom Webhook":

  • Open your chat
  • Click on "Room Settings" button
  • Click on "Integrations"
  • Select "Custom"
  • Remember yor Hook Id, like 2b66cf4653faa342bbe8 inside https://webhooks.gitter.im/e/ url.
$client->notify($hookId)
    // ->error($message) - Send "Error" message
    // ->info($message) - Send "Info" message
    // ->withLevel(...) - Sets up level
    ->send('Your message with markdown'); // Send message with markdown content

Custom routing

$route = Route::get('rooms/{roomId}/chatMessages')
    ->with('roomId', $roomId)
    ->toStream();
    
// Contains "GET https://stream.gitter.im/v1/rooms/.../chatMessages" url

$client->viaStream()->request($route)->subscribe(function($message) {
     var_dump($message);
    // Subscribe on every message in target room (Realtime subscribtion)
});

$client->connect();

Available route methods:

  • Route::get(string $route) - GET http method
  • Route::post(string $route) - POST http method
  • Route::put(string $route) - PUT http method
  • Route::patch(string $route) - PATCH http method
  • Route::delete(string $route) - DELETE http method
  • Route::options(string $route) - OPTIONS http method
  • Route::head(string $route) - HEAD http method
  • Route::connect(string $route) - CONNECT http method
  • Route::trace(string $route) - TRACE http method

Route arguments:

  • $route->with(string $key, string $value) - Add route or GET query parameter
  • $route->withMany(array $parameters) - Add route or GET query parameters
  • $route->withBody(string $key, string $value) - Add POST, PUT, DELETE, etc body parameter

See more info about API into Documentation


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
php (16,728
api (1,760
library (1,349
async (499
client (406
streaming (310
php7 (262
gitter (20