#!/usr/bin/perl -w

use CGI;
use HTTP::Date;

my $query = new CGI;
@names = $query->param;
my $expiresInFutureIn304 = $query->param('expires-in-future-in-304') || 0;
my $delay = $query->param('delay') || 0;
my $body = $query->param('body') || 0;
my $status = $query->param('Status') || 0;
my $range = $query->param('Range') || '';
my $location = $query->param('Location') || '';

if ($body eq "unique") {
    $body = sprintf "%08X\n", rand(0xffffffff)
}

my $hasStatusCode = 0;
my $hasLocation = 0;
if ($status == 301 || $status == 302 || $status == 303 || $status == 307) {
    if ($location eq "unique-cacheable") {
        my $redirectBody = sprintf "%08X", rand(0xffffffff);
        print "Status: ". $status . "\n";
        my $uniqueId = $query->param('uniqueId');
        print "Location: generate-response.cgi?body=" . $redirectBody . "&Cache-control=max-age%3D1000&uniqueId=" . $uniqueId . "\n";
        $hasLocation = 1;
        $hasStatusCode = 1;
    }
}

my $hasExpiresHeader = 0;
my $ifNoneMatchHeader = $query->http("If-None-Match");
if (defined $ifNoneMatchHeader and $ifNoneMatchHeader eq "match") {
    print "Status: 304\n";
    $hasStatusCode = 1;
    if ($expiresInFutureIn304) {
        print "Expires: " . HTTP::Date::time2str(time() + 100) . "\n";
        $hasExpiresHeader = 1;
    }
}

if ($range =~ /bytes=(\d+)-(\d+)/) {

    if ($1 < 6 && $2 < 6) {
        print "Status: 206\n";
    } else {
        print "Status: 416\n";
    }

    $hasStatusCode = 1;
}

foreach (@names) {
    next if ($_ eq "uniqueId");
    next if ($_ eq "delay");
    next if ($_ eq "body");
    next if ($_ eq "Location" and $hasLocation);
    next if ($_ eq "Status" and $hasStatusCode);
    next if ($_ eq "Expires" and $hasExpiresHeader);
    print $_ . ": " . $query->param($_) . "\n";
}
print "\n";
if ($delay) {
    # Include some padding so headers and full body are sent separately.
    for (my $i=0; $i < 1024; $i++) {
        print "                                                                                ";
    }
    sleep $delay;
}
print $body if $body;
