NAME
WebService::HipChat
VERSION
version 0.2001
SYNOPSIS
my $hc = WebService::HipChat->new( auth_token => 'abc' );
$hc ->send_notification( 'Room42' , { color => 'green' , message => 'allo' });
my $res = $hc ->get_emoticons;
my @emoticons = @{ $res ->{items} };
while ( $res = $hc -> next ( $res )) {
push @emoticons , @{ $res ->{items} };
}
|
DESCRIPTION
This module provides bindings for the HipChat API v2. It also provides the command line utility hipchat-send.
METHODS
All methods return a hashref. The $room
param can be the id or name of the room. The $user
param can be the id, email address, or @mention name of the user. If a resource does not exist for the given parameters, undef is returned.
get_rooms
get_rooms()
get_rooms( query => { 'start-index' => 0, 'max-results' => 100 });
|
Example response:
{
items => [
{
id => 2,
links => {
},
name => "General Discussion" ,
},
{
id => 3,
links => {
},
name => "Important Stuff" ,
},
maxResults => 100,
startIndex => 0,
}
|
get_room
Example response:
{
created => "2014-06-25T02:28:04" ,
guest_access_url => undef ,
id => 2,
is_archived => 0,
is_guest_accessible 0,
last_active => "2014-07-19T02:40:55+00:00" ,
links => {
},
name => "General Discussion" ,
owner => {
id => 1,
mention_name => "bob" ,
name => "Bob Williams" ,
},
participants => [],
privacy => "public" ,
statistics => {
},
topic => "hipchat commands" ,
xmpp_jid => "1_general_discussion\@conf.btf.hipchat.com" ,
}
|
create_room
create_room({ name => 'monkeys' })
|
Example response:
update_room
update_room( $room , {
is_archived => JSON::false,
is_guest_accessible => JSON::false,
name => "Jokes" ,
owner => { id => 17 },
privacy => "public" ,
topic => "funny jokes" ,
});
|
set_topic
set_topic( $room , 'new topic' );
|
delete_room
send_notification
send_notification( $room , { color => 'green' , message => 'allo' });
|
get_webhooks
get_webhooks( $room )
get_webhooks( $room , query => { 'start-index' => 0, 'max-results' => 100 });
|
Example response:
{
items => [
{
event => "room_message" ,
id => 1,
name => "hook1" ,
pattern => undef ,
},
],
maxResults => 100,
startIndex => 0,
}
|
get_webhook
get_webhook( $room , $webhook_id );
|
create_webhook
create_webhook( $room , {
event => 'room_message' ,
name => 'hook1' ,
});
|
delete_webhook
delete_webhook( $room , $webhook_id );
|
send_private_msg
send_private_msg( $user , { message => 'allo' });
|
send_room_msg
send_room_msg( $room , { message => 'allo' });
|
get_private_history
$hc ->get_private_history( $user )
$hc ->get_private_history( $user , query => { 'max-results' => 5 });
|
Example response:
{
items [
[0] {
date "2014-11-13T10:48:33.322506+00:00" ,
from {
id 123456,
links {
},
mention_name "Bob" ,
name "Bob Williams"
},
id "38988c8c-9120-44ce-87c5-6731a7a3b6" ,
mentions [],
type "message"
},
[1] {
date "2014-11-13T10:49:02.377436+00:00" ,
from {
id 123456,
links {
},
mention_name "Bob" ,
name "Bob Williams"
},
id "c1f47537-6506-4f46-b820-eaade5adc5" ,
mentions [],
message "A message" ,
type "message"
}
],
links {
},
maxResults 5,
startIndex 0
}
|
get_members
get_members( $room );
get_members( $room , query => { 'start-index' => 0, 'max-results' => 100 });
|
Example response:
{
items => [
{
id => 73,
mention_name => "momma" ,
name => "Yo Momma" ,
},
{
id => 23,
mention_name => "jackie" ,
name => "Jackie Chan" ,
},
],
maxResults => 100,
startIndex => 0,
}
|
add_member
Adds a user to a room.
add_member( $room , $user );
|
remove_member
Removes a user from a room.
remove_member( $room , $user );
|
get_users
get_users()
get_users( query => { 'start-index' => 0, 'max-results' => 100 });
|
Example response:
{
items => [
{
id => 1,
mention_name => "magoo" ,
name => "Matt Wondercookie" ,
},
{
id => 3,
mention_name => "racer" ,
name => "Brian Wilson" ,
},
],
maxResults => 100,
startIndex => 0,
}
|
get_user
Example response:
{
created => "2014-06-20T03:00:28" ,
email => 'matt@foo.com' ,
group => {
id => 1,
name => "Everyone" ,
},
id => 1,
is_deleted => 0,
is_group_admin => 1,
is_guest => 0,
last_active => 1405718128,
mention_name => "magoo" ,
name => "Matt Wondercookie" ,
presence => {
client => {
version => 98,
},
idle => 3853,
is_online => 1,
show => "away" ,
},
timezone => "America/New_York" ,
title => "Hacker" ,
xmpp_jid => '1_1@chat.hipchat.com' ,
}
|
delete_user
get_emoticons
get_emoticons()
get_emoticons( query => { 'start-index' => 0, 'max-results' => 100 });
|
Example response:
{
items => [
{
id => 166,
shortcut => "dog" ,
},
],
maxResults => 100,
startIndex => 0,
}
|
get_emoticon
Example response:
{
creator => {
id => 11,
mention_name => "bob" ,
name => "Bob Ray" ,
},
height => 30,
id => 203,
shortcut => "dog" ,
width => 30,
}
|
get_room_history
$hc ->get_room_history( $room )
$hc ->get_room_history( $room , { 'max-results' => 5 });
|
Example response:
{
items [
[0] {
date "2014-11-13T10:48:33.322506+00:00" ,
from {
id 123456,
links {
},
mention_name "Bob" ,
name "Bob Williams"
},
id "38988c8c-9120-44ce-87c5-6731a7a3b6" ,
mentions [],
type "message"
},
[1] {
date "2014-11-13T10:49:02.377436+00:00" ,
from {
id 123456,
links {
},
mention_name "Bob" ,
name "Bob Williams"
},
id "c1f47537-6506-4f46-b820-eaade5adc5" ,
mentions [],
message "A message" ,
type "message"
}
],
links {
},
maxResults 2,
startIndex 0
}
|
share_link
share_file
$hc ->share_file( $destination , { message => 'msg' , file => '/tmp/file.png' });
|
Shares files with $destination, whether that be a room OR a user. If sent to a user, make sure it is their '@' name OR email address. Otherwise we'll think it is a room. For example: '@JohnQPublic' OR 'johnq@public.test instead of 'SomeRoom'
next
Returns the next page of data for paginated responses.
Example:
my $res = $hc ->get_emoticons;
my @emoticons = @{ $res ->{items} };
while ( $res = $hc -> next ( $res )) {
push @emoticons , @{ $res ->{items} };
}
|
CONTRIBUTORS
AUTHOR
Naveed Massjouni <naveed@vt.edu>
COPYRIGHT AND LICENSE
This software is copyright (c) 2014 by Naveed Massjouni.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.