5 use Mojo::Base -signatures;
10 our $user_agent = 'kas@yenya.net https://www.fi.muni.cz/~kas/git/aoc.git';
11 our $cache_dir = '/home/kas/aoc/cache';
14 sub request($url, $args) {
15 chomp($cookie //= Mojo::File->new("$cache_dir/cookie")->slurp);
17 my ($cache, $cachefile);
18 if ($args->{cache_to}) {
19 $cachefile = $cache_dir . '/' . $args->{cache_to};
20 $cache = Mojo::File->new("$cachefile");
22 if ($args->{max_age}) {
25 && time - $cache->stat->mtime
30 say "\n", white('cached'),
31 " response from $cachefile";
32 return Mojo::DOM->new($cache->slurp);
39 'User-Agent' => $user_agent,
41 my $ua = Mojo::UserAgent->new;
43 $res = $ua->post($url => \%hdrs => form => $args->{form})
46 $res = $ua->get($url => \%hdrs)->result;
49 if (!$res->is_success) {
51 say "body:\n", $res->body;
52 die red("http request failed");
56 $cache->spurt($res->body);
57 # say "Stored response to $cachefile";
59 return $args->{body} ? $res->body : $res->dom;
62 sub cache_del($file) {
63 my $f = Mojo::File->new("$cache_dir/$file");
65 $f->move_to("$cache_dir/old-$file");
68 sub is_cached($file) { Mojo::File->new("$cache_dir/$file")->stat; }
74 sub new($class, $year, $day) {