NAME
Net::RocketChat
SYNOPSIS
Implements the REST API for Rocket.Chat
USAGE
You can also specify the username, password and server in the environment variables ROCKETCHAT_USERNAME, ROCKETCHAT_PASSWORD and ROCKETCHAT_SERVER.
Most errors die. Use eval generously.
use Net::RocketChat;
use YAML::XS;
use strict;
# specifying connection info directly
my $chat = Net::RocketChat->new(username => $username, password => $password, server => 'https://your.server.here');
# or use the environment
$ENV{ROCKETCHAT_USERNAME} = $username;
$ENV{ROCKETCHAT_PASSWORD} = $password;
$ENV{ROCKETCHAT_SERVER} = $server;
my $chat = Net::RocketChat->new;
eval {
$chat->login;
$chat->join(room => "general");
my $messages = $chat->messages(room => "general");
print Dump($messages);
$chat->send(room => "general",message => "your message goes here");
$chat->send(room => "general",message => "```\nmulti-line\npastes\nare\nok```");
$chat->leave(room => "general");
};
if ($@) {
print "caught an error: $@\n";
}
There are also example scripts in the distribution.
ATTRIBUTES
- debug
-
If debug is set, lots of stuff will get dumped to STDERR.
- username
-
If this isn't specified, defaults to $ENV{ROCKETCHAT_USERNAME}
- password
-
If this isn't specified, defaults to $ENV{ROCKETCHAT_PASSWORD}
- server
-
The URL for the server, ie. "https://rocketchat.your.domain.here"
If this isn't specified, defaults to $ENV{ROCKETCHAT_SERVER}
- response
-
Contains the last HTTP response from the server.
METHODS
- version
-
Returns a hashref of versions, currently of the API and server.
"versions": { "api": "0.1", "rocketchat": "0.5" }
- login
-
Logs in.
- logout
-
Logs out.
- publicRooms
-
Fetches a list of rooms, and also stores a mapping of names to ids for future use. Returns the raw decoded JSON response from the server:
my $rooms = $chat->publicRooms; rooms: - _id: GENERAL default: !!perl/scalar:JSON::PP::Boolean 1 lm: 2016-04-30T16:45:32.876Z msgs: 54 name: general t: c ts: 2016-04-30T04:29:53.361Z usernames: - someuser - someotheruser - _id: 8L4QMdEFCYqRH3MNP lm: 2016-04-30T21:08:27.760Z msgs: 2 name: dev t: c ts: 2016-04-30T05:30:59.847Z u: _id: EBbKeYF9Gvppdhhwr username: someuser usernames: - someuser
- has_room(:$room)
-
Returns 1 if a room exists on the server, 0 otherwise.
if ($chat->has_room("general") { $chat->join(room => "general"); $chat->send(room => "general", message => "Hello, world!"); } else { ... }
- join(:$room,:$room)
-
Joins a room. Rooms have a human readable name and an id. You can use either, but if the name isn't known it will automatically fetch a list of rooms.
$chat->join(room => "general");
- leave(:$id,:$room)
-
Leaves a room, specified either by name or id.
$chat->leave(room => "general");
- messages(:$room,:$id)
-
Gets all the messages from a room, specified either by name or id.
my $messages = $chat->messages(room => "general");
- send(:$room,:$id,:$message)
-
Sends a message to a room.
$chat->send(room => "general", message => "Hello, world!");
AUTHOR
Dale Evans, <daleevans@github>
http://devans.mycanadapayday.com
SEE ALSO
https://rocket.chat/docs/master/developer-guides/rest-api/