Aion-Surf
view release on metacpan or search on metacpan
lib/Aion/Surf.pm view on Meta::CPAN
my $form = delete $set{form};
$form = $data, undef $data if not defined $form and ref $data eq "ARRAY";
if(defined $form) {
$validate_data->();
$data = 1;
$request->header('Content-Type' => 'application/x-www-form-urlencoded');
$request->content(Aion::Format::Url::to_url_params $form);
}
if($headers = delete($set{headers}) // $headers) {
if(ref $headers eq 'HASH') {
$request->header($_, $headers->{$_}) for sort keys %$headers;
} else {
for my ($key, $val) (@$headers) {
$request->header($key, $val);
}
}
}
if(my $cookie_href = delete $set{cookies}) {
my $jar = $ua->cookie_jar;
my $url_href = Aion::Format::Url::parse_url $url;
my $domain = $url_href->{domain};
$domain = "localhost.local" if $domain eq "localhost";
$cookie_href = {@$cookie_href} if ref $cookie_href eq "ARRAY";
for my $key (sort keys %$cookie_href) {
my $av;
my $val = $cookie_href->{$key};
$av = $val, $val = shift @$av, $av = {@$av} if ref $val;
$jar->set_cookie(
delete($a->{version}),
Aion::Format::Url::to_url_param $key
=> Aion::Format::Url::to_url_param $val,
delete($av->{path}) // "/",
delete($av->{domain}) // $domain,
delete($av->{port}),
delete($av->{path_spec}),
delete($av->{secure}),
delete($av->{maxage}),
delete($av->{discard}),
$av
);
}
}
my $response_set = delete $set{response};
die "Unknown keys: " . join ", ", keys %set if keys %set;
my $response = $ua->request($request);
$$response_set = $response if ref $response_set;
return $response->is_success if $method eq "HEAD";
my $content = $response->decoded_content;
eval { $content = Aion::Format::Json::from_json($content) } if $content =~ m!^\{!;
$content
}
sub head (;$) { my $x = @_ == 0? $_: shift; surf HEAD => ref $x? @{$x}: $x }
sub get (;$) { my $x = @_ == 0? $_: shift; surf GET => ref $x? @{$x}: $x }
sub post (@) { my $x = @_ == 0? $_: \@_; surf POST => ref $x? @{$x}: $x }
sub put (@) { my $x = @_ == 0? $_: \@_; surf PUT => ref $x? @{$x}: $x }
sub patch(@) { my $x = @_ == 0? $_: \@_; surf PATCH => ref $x? @{$x}: $x }
sub del (;$) { my $x = @_ == 0? $_: shift; surf DELETE => ref $x? @{$x}: $x }
use config TELEGRAM_BOT_TOKEN => undef;
# ÐÑпÑавлÑÐµÑ ÑообÑение ÑелегÑам
sub chat_message($$) {
my ($chat_id, $message) = @_;
my $ok = post "https://api.telegram.org/bot${\ TELEGRAM_BOT_TOKEN}/sendMessage", response => \my $response, json => {
chat_id => $chat_id,
text => $message,
disable_web_page_preview => 1,
parse_mode => 'Html',
};
die $ok->{description} if !$ok->{ok};
$ok
}
use config TELEGRAM_BOT_CHAT_ID => undef;
use config TELEGRAM_BOT_TECH_ID => undef;
# ÐÑпÑавлÑÐµÑ ÑообÑение в ÑелегÑам-боÑ
sub bot_message(;$) { chat_message TELEGRAM_BOT_CHAT_ID, @_ == 0? $_: $_[0] }
# ÐÑпÑавлÑÐµÑ ÑообÑение в ÑеÑ
ниÑеÑкий ÑелегÑам канал
sub tech_message(;$) { chat_message TELEGRAM_BOT_TECH_ID, @_ == 0? $_: $_[0] }
# ÐолÑÑÐ°ÐµÑ Ð¿Ð¾Ñледние ÑообÑÐµÐ½Ð¸Ñ Ð¾ÑпÑавленнÑе боÑÑ
sub bot_update() {
my @updates;
for(my $offset = 0;;) {
my $ok = post "https://api.telegram.org/bot${\ TELEGRAM_BOT_TOKEN}/getUpdates", json => {
offset => $offset,
};
die $ok->{description} if !$ok->{ok};
my $result = $ok->{result};
return \@updates if !@$result;
push @updates, map $_->{message}, grep $_->{message}, @$result;
$offset = $result->[$#$result]{update_id} + 1;
}
( run in 1.998 second using v1.01-cache-2.11-cpan-39bf76dae61 )