view release on metacpan or search on metacpan
Date : 2017-03-29 20:21:58 +0000
undo css regex modifications
Change: 678bde1390d9c42e2d8cc5f5e2d8b5dacc4c456f
Author: Zach Thompson <zachthompson@users.noreply.github.com>
Date : 2017-03-22 15:02:04 +0000
Merge pull request #387 from duckduckgo/zaahir/log-request-obj
Pass spice headers to GET requests and print HTTP::Request in DuckPAN
output
Change: c8645538e70c7703fb23dfa78252ba601f193ada
Author: Zaahir Moolla <moollaza@duckduckgo.com>
Date : 2017-03-22 16:41:41 +0000
Add headers to GET request when present
Change: f17a5b17def8508eabb601da43c9d97b83e65033
Author: Zaahir Moolla <moollaza@duckduckgo.com>
"File::HomeDir" : "0",
"File::ShareDir::ProjectDistDir" : "0",
"File::Temp" : "0",
"File::Which" : "0",
"Filesys::Notify::Simple" : "0",
"Getopt::Long" : "0",
"HTML::Element" : "0",
"HTML::Entities" : "0",
"HTML::TreeBuilder" : "0",
"HTTP::Headers" : "0",
"HTTP::Request" : "0",
"HTTP::Request::Common" : "0",
"HTTP::Status" : "0",
"JSON" : "0",
"LWP::Simple" : "0",
"LWP::UserAgent" : "0",
"List::MoreUtils" : "0",
"List::Util" : "0",
"Module::Data" : "0",
"Module::Pluggable::Object" : "0",
"Moo" : "0",
"Moo::Role" : "0",
File::HomeDir: '0'
File::ShareDir::ProjectDistDir: '0'
File::Temp: '0'
File::Which: '0'
Filesys::Notify::Simple: '0'
Getopt::Long: '0'
HTML::Element: '0'
HTML::Entities: '0'
HTML::TreeBuilder: '0'
HTTP::Headers: '0'
HTTP::Request: '0'
HTTP::Request::Common: '0'
HTTP::Status: '0'
JSON: '0'
LWP::Simple: '0'
LWP::UserAgent: '0'
List::MoreUtils: '0'
List::Util: '0'
Module::Data: '0'
Module::Pluggable::Object: '0'
Moo: '0'
Moo::Role: '0'
Makefile.PL view on Meta::CPAN
"File::HomeDir" => 0,
"File::ShareDir::ProjectDistDir" => 0,
"File::Temp" => 0,
"File::Which" => 0,
"Filesys::Notify::Simple" => 0,
"Getopt::Long" => 0,
"HTML::Element" => 0,
"HTML::Entities" => 0,
"HTML::TreeBuilder" => 0,
"HTTP::Headers" => 0,
"HTTP::Request" => 0,
"HTTP::Request::Common" => 0,
"HTTP::Status" => 0,
"JSON" => 0,
"LWP::Simple" => 0,
"LWP::UserAgent" => 0,
"List::MoreUtils" => 0,
"List::Util" => 0,
"Module::Data" => 0,
"Module::Pluggable::Object" => 0,
"Moo" => 0,
"Moo::Role" => 0,
Makefile.PL view on Meta::CPAN
"File::Path" => 0,
"File::ShareDir::ProjectDistDir" => 0,
"File::Temp" => 0,
"File::Which" => 0,
"Filesys::Notify::Simple" => 0,
"Getopt::Long" => 0,
"HTML::Element" => 0,
"HTML::Entities" => 0,
"HTML::TreeBuilder" => 0,
"HTTP::Headers" => 0,
"HTTP::Request" => 0,
"HTTP::Request::Common" => 0,
"HTTP::Status" => 0,
"JSON" => 0,
"LWP::Simple" => 0,
"LWP::UserAgent" => 0,
"List::MoreUtils" => 0,
"List::Util" => 0,
"Module::Data" => 0,
"Module::Pluggable::Object" => 0,
"Moo" => 0,
"Moo::Role" => 0,
lib/App/DuckPAN.pm view on Meta::CPAN
# ABSTRACT: The DuckDuckGo DuckPAN client
$App::DuckPAN::VERSION = '1021';
use feature 'state';
use Moo;
use MooX::Cmd;
use MooX::Options;
use App::DuckPAN::Config;
use File::Which;
use Class::Load ':all';
use HTTP::Request::Common qw( GET POST );
use HTTP::Status;
use List::Util qw( first max );
use LWP::UserAgent;
use LWP::Simple;
use Parse::CPAN::Packages::Fast;
use File::Temp qw/ :POSIX /;
use Term::ANSIColor;
use Term::UI;
use Term::ReadLine;
use Carp;
lib/App/DuckPAN/Cmd/Server.pm view on Meta::CPAN
if ($to_file->exists && (time - $to_file->stat->ctime) < $self->app->cachesec) {
$self->app->emit_debug($prefix . $to_file->basename . " recently cached -- no request made.");
}
else {
$self->app->emit_debug($prefix . 'requesting from: ' . $url . '...');
$to_file->remove;
$to_file->touchpath;
my ($expected_length, $bytes_received, $progress);
my $next_update = 0;
my $res = $self->app->http->request(
HTTP::Request->new(GET => $url),
sub {
my ($chunk, $res) = @_;
$bytes_received += length($chunk);
$to_file->append($chunk);
$expected_length //= $res->content_length || 0;
return unless $self->app->verbose; # Progress bar is just for verbose mode;
if ($expected_length && !defined($progress)) {
$progress = Term::ProgressBar->new({
name => $prefix,
count => $expected_length,
lib/App/DuckPAN/Web.pm view on Meta::CPAN
use DDG::Test::Language;
use DDG::Meta::Data;
use Path::Tiny;
use Plack::Request;
use Plack::Response;
use Plack::MIME;
use HTML::Entities;
use HTML::TreeBuilder;
use HTML::Element;
use Data::Printer return_value => 'dump';
use HTTP::Request;
use HTTP::Headers;
use LWP::UserAgent;
use URI::Escape;
use JSON;
has blocks => ( is => 'ro', required => 1 );
has page_root => ( is => 'ro', required => 1 );
has page_spice => ( is => 'ro', required => 1 );
has page_css => ( is => 'ro', required => 1 );
has page_js => ( is => 'ro', required => 1 );
lib/App/DuckPAN/Web.pm view on Meta::CPAN
print "\nAPI key not found. Using DuckDuckGo's endpoint:\n";
}
$to = "https://beta.duckduckgo.com$request_uri" if $use_ddh;
my $h = HTTP::Headers->new( %$headers );
my $res;
my $req;
if ( $post_body && !$use_ddh ) {
$req = HTTP::Request->new(
POST => $to,
$h,
$post_body
);
}
else {
$req = HTTP::Request->new(
GET => $to,
$h
);
}
p($req->as_string);
$res = $self->ua->request($req);
if ($res->is_success) {
$body = $res->decoded_content;
lib/App/DuckPAN/Web.pm view on Meta::CPAN
$page =~ s/####DUCKDUCKHACK-CALL-NRJ####/$calls_nrj/g;
$page =~ s/####DUCKDUCKHACK-CALL-NRC####/$calls_nrc/g;
$page =~ s/####DUCKDUCKHACK-CALL-SCRIPT####/$calls_script/g;
$response->content_type('text/html');
$body = $page;
}
else {
my $res = $self->ua->request(HTTP::Request->new(GET => "http://".$hostname.$request->request_uri));
if ($res->is_success) {
$body = $res->decoded_content;
$response->code($res->code);
$response->content_type($res->content_type);
}
else {
p($res->status_line, color => { string => 'red' });
$body = "";
}
}
lib/App/DuckPAN/WebPublisher.pm view on Meta::CPAN
package App::DuckPAN::WebPublisher;
our $AUTHORITY = 'cpan:DDG';
# ABSTRACT: Webserver for duckpan publisher
$App::DuckPAN::WebPublisher::VERSION = '1021';
use Moo;
with qw( App::DuckPAN::HasApp );
use HTTP::Request;
use Plack::Request;
use Plack::Response;
has sites => ( is => 'ro', required => 1 );
has ports => (
is => 'ro',
lazy => 1,
default => sub {
my ( $self ) = @_;
lib/App/DuckPAN/WebPublisher.pm view on Meta::CPAN
my $file = $uri.'/'.$self->current_language.'.html';
if (defined $site->fullpath_files->{$file}) {
$self->app->emit_info('Request '.$request->path_info.' uses '.$file.' from DDG::Publisher...');
$body = $site->fullpath_files->{$file}->uncached_content;
$response->code("200");
$response->content_type('text/html; charset=utf-8');
}
else {
my $res = $self->app->http->request(HTTP::Request->new(GET => $url.$request->request_uri));
if ($res->is_success) {
$body = $res->decoded_content;
$response->code($res->code);
$response->content_type($res->content_type);
}
else {
$body = "GET ".$url.$request->request_uri.": ".$res->status_line;
warn $body, "\n";
}
}
lib/App/DuckPAN/WebStatic.pm view on Meta::CPAN
package App::DuckPAN::WebStatic;
our $AUTHORITY = 'cpan:DDG';
# ABSTRACT: Webserver for duckpan static
$App::DuckPAN::WebStatic::VERSION = '1021';
use Moo;
use HTTP::Request;
use Plack::Request;
use Plack::Response;
use LWP::UserAgent;
use URI::Escape;
use Path::Tiny;
use JSON;
has sites => ( is => 'ro', required => 1 );
has _ports => ( is => 'rw', default => sub {{}} );
lib/App/DuckPAN/WebStatic.pm view on Meta::CPAN
my $locale = defined $ENV{DDG_LOCALE} ? $ENV{DDG_LOCALE} : 'en_US';
my $site = $self->_ports->{$request->port};
if ($site->{urls}->{$request->request_uri}) {
$body = path($site->{urls}->{$request->request_uri}->{$locale})->slurp_utf8;
$response->code("200");
$response->content_type('text/html');
}
else {
my $res = $self->ua->request(HTTP::Request->new(GET => $site->{base_url}.$request->request_uri));
if ($res->is_success) {
$body = $res->decoded_content;
$response->code($res->code);
$response->content_type($res->content_type);
}
else {
warn $res->status_line, "\n";
$body = "";
}
}