commit 96d13f871076a65c6580ee6cf9f1e6aadb593a39
parent 6f5a2e4f85fc5cb2113a837bb63ea7d7f1c50eb5
Author: Samir Parikh <noreply@samirparikh.com>
Date: Tue, 20 Dec 2022 16:00:58 +0000
get all initial functionaltiy working
Diffstat:
M | aocinit | | | 59 | ++++++++++++++++++++++++++++++++++++++++++++--------------- |
1 file changed, 44 insertions(+), 15 deletions(-)
diff --git a/aocinit b/aocinit
@@ -16,13 +16,13 @@ use Mojo::UserAgent;
my $AOC_FIRST_YEAR = 15; # first event was in 2015
my $HOME = File::HomeDir->my_home;
+my $DOMAIN = 'adventofcode.com';
#
# User-defined constants #####################################################
my $PATH_FROM_HOME = "programs";
my $DIR_PREFIX = "zaoc_20";
-# store your browser cookie session ID in the environment variable
-# `SESSIONID`:
+# store your browser cookie session ID in the environment variable `SESSIONID`:
# $ export SESSIONID="8374....907d"
##############################################################################
#
@@ -52,7 +52,8 @@ sub create_year_directory {
say "$year_directory already exists";
} else {
say "creating $year_directory...";
- mkdir $year_directory, 0755 or die "Cannot create directory $year_directory: $!";
+ mkdir $year_directory, 0755 or
+ die "Cannot create directory $year_directory: $!";
}
}
@@ -62,13 +63,13 @@ sub create_day_subdirectory {
say "$day_subdir already exists.";
} else {
say "creating $day_subdir...";
- mkdir $day_subdir, 0755 or die "Cannot create directory $day_subdir: $!";
+ mkdir $day_subdir, 0755 or
+ die "Cannot create directory $day_subdir: $!";
}
}
sub read_boilerplate {
my ( $year, $day ) = @_;
- say "received $year and $day";
( my $boilerplate = qq[
#!/usr/local/bin/perl
# day 20$year-$day
@@ -86,24 +87,52 @@ sub read_boilerplate {
sub create_boilerplate_file {
my ( $day_file, $boilerplate ) = @_;
+ say "creating boilerplate file...";
open my $bp_file, '>', $day_file;
say $bp_file $boilerplate;
close $bp_file;
}
+sub download_input {
+ my ( $year, $day, $day_subdir ) = @_;
+ $day =~ s/^0//; # remove leading 0
+ my $ua = Mojo::UserAgent->new;
+ my $url = "https://$DOMAIN/20$year/day/$day/input";
+ $ua->cookie_jar->add(
+ Mojo::Cookie::Response->new(
+ name => 'session',
+ value => $ENV{SESSIONID},
+ domain => $DOMAIN,
+ path => '/'
+ )
+ );
+
+ my $res = $ua->get( $url )->result;
+ if ($res->is_success) {
+ say "downloading input file...";
+ my $filename = catfile( $day_subdir, 'input' );
+ open my $input_fh, '>', $filename;
+ say $input_fh $res->body;
+ close $input_fh;
+ }
+ elsif ($res->is_error) {
+ say "unable to dowload input file.\n", $res->message;
+ }
+ elsif ($res->code == 301) {
+ say "input file not found.\n", $res->headers->location;
+ }
+ else {
+ say 'unexpected error encountered while downloading input file.';
+ }
+}
+
my ( $year, $day ) = process_arguments( \@ARGV );
my $year_directory = "$HOME/$PATH_FROM_HOME/$DIR_PREFIX$year";
my $day_subdir = catfile( $year_directory, "day" . $day );
my $day_file = catfile( $day_subdir, "day". $day . ".pl" );
my $boilerplate = read_boilerplate( $year, $day );
-create_year_directory ( $year_directory );
-create_day_subdirectory( $day_subdir );
-create_boilerplate_file( $day_file, $boilerplate );
-
-open my $secret_fh, '<', '/home/compiler/programs/aoc_download/secret';
-chomp( my $secret = <$secret_fh> );
-close $secret_fh;
-say $secret;
-
-say $ENV{SESSIONID};
+create_year_directory ( $year_directory );
+create_day_subdirectory( $day_subdir );
+create_boilerplate_file( $day_file, $boilerplate );
+download_input ( $year, $day, $day_subdir );