package Alice::MessageStore;
use AnyEvent::DBI;
use List::Util qw/min/;
use Any::Moose;
use JSON;
has insert => (
is => 'rw',
default => sub {[]},
);
has trim => (
is => 'rw',
default => su
sgid >= ? ORDER BY msgid DESC LIMIT ?",
$id, $max, $min, $limit,
sub { $cb->([map {decode_json $_->[0]} reverse @{$_[1]}]) }
);
}
sub add {
my ($self, $id, $message) = @_;
$self->dbi->
INTO window_buffer (window_id,msgid,message) VALUES (?,?,?)",
$id, $message->{msgid}, encode_json($message), sub {});
$self->trim->{$id} = 1;
}
sub do_trim {
my $self = shift;
my @trim =
package Alice::HTTP::Stream::XHR;
use JSON;
use Time::HiRes qw/time/;
use Any::Moose;
extends 'Alice::HTTP::Stream';
use strict;
use warnings;
my $separator = "xalicex";
our @headers = ('Content-T
$self->clear_queue;
$self->last_send(time);
}
sub to_string {
my $self = shift;
return to_json({
queue => $self->queue,
time => time - $self->offset,
}, {utf8 => 1, shrink => 1});
}
package Alice::HTTP::Stream::WebSocket;
use JSON;
use Any::Moose;
use Digest::MD5 qw/md5/;
use Time::HiRes qw/time/;
extends 'Alice::HTTP::Stream';
has fh => (
is => 'ro',
required => 1,
);
ha
$_[0]->push_read(
'AnyEvent::Handle::Message::WebSocket',
sub { $self->on_read->(from_json $_[1]) }
);
});
$self->handle($h);
$self->send([{type => "identify", id => $self->
lf, $messages) = @_;
$messages = [$messages] unless ref $messages eq "ARRAY";
my $line = to_json(
{queue => $messages},
{utf8 => 1, shrink => 1}
);
$self->send_raw($line);
}
sub
use Alice::HTTP::Request;
use Alice::HTTP::Stream::XHR;
use Alice::HTTP::Stream::WebSocket;
use JSON;
use Encode;
use Any::Moose;
has app => (
is => 'ro',
isa => 'Alice',
required => 1,
);
new_server', $name);
my $listitem = $self->render('server_listitem', $name);
$res->body(to_json({config => $config, listitem => $listitem}));
$res->header("Cache-control" => "no-cache");
$r
$self, $req, $res) = @_;
$res->content_type("text/plain; charset=utf-8");
{
$res->body(to_json($self->app->config->serialized,
{utf8 => 1, pretty => 1}));
}
$res->send;
}
__PACKAGE_