commit 6439af17217b5ca593f484bb00900446de33eb26
parent e4e4ec5175e3ed373ec44ed32a6c4c02a5cadbb7
Author: Kyle Milz <kyle@getaddrinfo.net>
Date:   Tue,  5 May 2015 20:57:12 -0600
PriceChart.pm: rename
Diffstat:
7 files changed, 178 insertions(+), 178 deletions(-)
diff --git a/Makefile b/Makefile
@@ -11,7 +11,7 @@ HTDOCS =	$(VAR)/www/htdocs
 DEV_BIN =	/home/kyle/src/pricesloth
 BINS =		ps_html ps_fcgi price_scraper product_scraper
 # WARNING stupid idiom used below if adding > 1 item to LIBS!!
-LIBS =		PriceChart.pm
+LIBS =		PriceSloth.pm
 HTML =		tt logo pricesloth.css pricesloth.jpg
 
 install:
diff --git a/PriceChart.pm b/PriceChart.pm
@@ -1,173 +0,0 @@
-package PriceChart;
-
-use DBI;
-use File::Path qw(make_path);
-use Exporter;
-
-@ISA = ("Exporter");
-@EXPORT = qw(get_config get_dom get_log get_dbh trunc_line new_ua make_path spin);
-
-
-sub get_config
-{
-	my $parser = Config::Grammar->new({
-		_sections => ["general", "http", "retailers"],
-		general => {
-			_vars => [
-				"agent",
-				"email",
-				"smtp",
-				# XXX: add simple regex validation here
-				"addrs",
-				"db_dir",
-				"log_dir",
-			],
-		},
-		http => {
-			_vars => [
-				"socket",
-				"uid",
-				"gid",
-				"chroot",
-				"htdocs",
-			],
-		},
-		retailers => {
-			_sections => ["/[A-Za-z ]+/"],
-			"/[A-Za-z ]+/" => {
-				_vars => [
-					"url",
-					"reg_tag",
-					"sale_tag",
-					"color",
-					"title"
-				]
-			}
-		}
-	});
-
-	my $cfg_file = "/etc/pricesloth.cfg";
-	my $cfg = $parser->parse($cfg_file) or die "error: $parser->{err}\n";
-
-	return $cfg;
-}
-
-sub get_dbh
-{
-	my $db_dir = shift;
-	my $verbose = shift || undef;
-
-	make_path($db_dir, { verbose => $verbose });
-	print "info: get_dbh: opening $db_dir/db\n" if ($verbose);
-	my $dbh = DBI->connect(
-		"dbi:SQLite:dbname=$db_dir/db",
-		"",
-		"",
-		{ RaiseError => 1 }
-	) or die $DBI::errstr;
-
-	return $dbh;
-}
-
-sub get_dom
-{
-	my $url = shift;
-	my $ua = shift;
-	my $verbose = shift;
-	my $log = shift;
-
-	my $resp = $ua->get($url);
-	if ($resp->is_success) {
-		my $short_url = trunc_line($url, length($resp->status_line) + 16);
-		print "info: get_dom: " . $resp->status_line . " $short_url\n" if ($verbose);
-		return HTML::Grabber->new(html => $resp->decoded_content);
-	}
-
-	print $log "error: get_dom: " . $resp->status_line . " $url\n";
-	return undef;
-}
-
-sub new_ua
-{
-	my $cfg = shift;
-	my $verbose = shift || 0;
-	my $ua;
-
-	# it's optional to list ip addresses to scrape on
-	if ($cfg->{addrs}) {
-		my @addresses = split(" ", $cfg->{addrs});
-		my $addr = $addresses[rand @addresses];
-		print "info: new_ua: using ip $addr\n" if ($verbose);
-		$ua = LWP::UserAgent->new(local_address => $addr);
-	}
-	else {
-		$ua = LWP::UserAgent->new();
-	}
-
-	$ua->default_header("Accept" => "*/*");
-	$ua->default_header("Accept-Encoding" => scalar HTTP::Message::decodable());
-	$ua->default_header("Accept-Charset" => "utf-8");
-	$ua->default_header("Accept-Language" => "en-US");
-	$ua->default_header("User-Agent" => $cfg->{agent});
-
-	my $headers = $ua->default_headers;
-	for (sort keys %$headers) {
-		my $header = trunc_line($headers->{$_}, length($_) + 18);
-		print "info: new_ua: $_ => $header\n" if ($verbose);
-	}
-
-	return $ua;
-}
-
-sub get_log
-{
-	my $log_path = shift || return undef;
-	my $verbose = shift || 0;
-
-	# if $log_path has a / in it, make sure the path to it is made
-	make_path(substr($log_path, 0, rindex($log_path, '/')), { verbose => $verbose });
-
-	print "info: get_log: opening $log_path, append mode\n" if ($verbose);
-	open my $log, ">>", $log_path or die "can't open $log_path: $!";
-
-	if ($verbose) {
-		print "info: get_log: outputting to tee\n";
-		open my $std_out, '>&', STDOUT or die "$!";
-
-		return IO::Tee->new($log, $std_out);
-	}
-
-	return IO::Tee->new($log);
-}
-
-#
-# make a possibly long line fit on a single line, with ellipses
-#
-sub trunc_line
-{
-	my $line = shift || return undef;
-	my $prefix = shift || 0;
-
-	# if stdout is not a tty, it's likely a log file, output everything
-	return $line unless (POSIX::isatty(STDOUT));
-
-	my ($term_width) = Term::ReadKey::GetTerminalSize();
-	my $len = $term_width - $prefix - 3;
-	if (length($line) < $len) {
-		return $line;
-	}
-
-	my $chopped = substr($line, 0, $len);
-	return $chopped . "...";
-}
-
-my $state = 0;
-sub spin
-{
-	my @spin_states = ("-", "\\", "|", "/");
-
-	print "\b";
-	print $spin_states[++$state % 4];
-}
-
-1;
diff --git a/PriceSloth.pm b/PriceSloth.pm
@@ -0,0 +1,173 @@
+package PriceSloth;
+
+use DBI;
+use File::Path qw(make_path);
+use Exporter;
+
+@ISA = ("Exporter");
+@EXPORT = qw(get_config get_dom get_log get_dbh trunc_line new_ua make_path spin);
+
+
+sub get_config
+{
+	my $parser = Config::Grammar->new({
+		_sections => ["general", "http", "retailers"],
+		general => {
+			_vars => [
+				"agent",
+				"email",
+				"smtp",
+				# XXX: add simple regex validation here
+				"addrs",
+				"db_dir",
+				"log_dir",
+			],
+		},
+		http => {
+			_vars => [
+				"socket",
+				"uid",
+				"gid",
+				"chroot",
+				"htdocs",
+			],
+		},
+		retailers => {
+			_sections => ["/[A-Za-z ]+/"],
+			"/[A-Za-z ]+/" => {
+				_vars => [
+					"url",
+					"reg_tag",
+					"sale_tag",
+					"color",
+					"title"
+				]
+			}
+		}
+	});
+
+	my $cfg_file = "/etc/pricesloth.cfg";
+	my $cfg = $parser->parse($cfg_file) or die "error: $parser->{err}\n";
+
+	return $cfg;
+}
+
+sub get_dbh
+{
+	my $db_dir = shift;
+	my $verbose = shift || undef;
+
+	make_path($db_dir, { verbose => $verbose });
+	print "info: get_dbh: opening $db_dir/db\n" if ($verbose);
+	my $dbh = DBI->connect(
+		"dbi:SQLite:dbname=$db_dir/db",
+		"",
+		"",
+		{ RaiseError => 1 }
+	) or die $DBI::errstr;
+
+	return $dbh;
+}
+
+sub get_dom
+{
+	my $url = shift;
+	my $ua = shift;
+	my $verbose = shift;
+	my $log = shift;
+
+	my $resp = $ua->get($url);
+	if ($resp->is_success) {
+		my $short_url = trunc_line($url, length($resp->status_line) + 16);
+		print "info: get_dom: " . $resp->status_line . " $short_url\n" if ($verbose);
+		return HTML::Grabber->new(html => $resp->decoded_content);
+	}
+
+	print $log "error: get_dom: " . $resp->status_line . " $url\n";
+	return undef;
+}
+
+sub new_ua
+{
+	my $cfg = shift;
+	my $verbose = shift || 0;
+	my $ua;
+
+	# it's optional to list ip addresses to scrape on
+	if ($cfg->{addrs}) {
+		my @addresses = split(" ", $cfg->{addrs});
+		my $addr = $addresses[rand @addresses];
+		print "info: new_ua: using ip $addr\n" if ($verbose);
+		$ua = LWP::UserAgent->new(local_address => $addr);
+	}
+	else {
+		$ua = LWP::UserAgent->new();
+	}
+
+	$ua->default_header("Accept" => "*/*");
+	$ua->default_header("Accept-Encoding" => scalar HTTP::Message::decodable());
+	$ua->default_header("Accept-Charset" => "utf-8");
+	$ua->default_header("Accept-Language" => "en-US");
+	$ua->default_header("User-Agent" => $cfg->{agent});
+
+	my $headers = $ua->default_headers;
+	for (sort keys %$headers) {
+		my $header = trunc_line($headers->{$_}, length($_) + 18);
+		print "info: new_ua: $_ => $header\n" if ($verbose);
+	}
+
+	return $ua;
+}
+
+sub get_log
+{
+	my $log_path = shift || return undef;
+	my $verbose = shift || 0;
+
+	# if $log_path has a / in it, make sure the path to it is made
+	make_path(substr($log_path, 0, rindex($log_path, '/')), { verbose => $verbose });
+
+	print "info: get_log: opening $log_path, append mode\n" if ($verbose);
+	open my $log, ">>", $log_path or die "can't open $log_path: $!";
+
+	if ($verbose) {
+		print "info: get_log: outputting to tee\n";
+		open my $std_out, '>&', STDOUT or die "$!";
+
+		return IO::Tee->new($log, $std_out);
+	}
+
+	return IO::Tee->new($log);
+}
+
+#
+# make a possibly long line fit on a single line, with ellipses
+#
+sub trunc_line
+{
+	my $line = shift || return undef;
+	my $prefix = shift || 0;
+
+	# if stdout is not a tty, it's likely a log file, output everything
+	return $line unless (POSIX::isatty(STDOUT));
+
+	my ($term_width) = Term::ReadKey::GetTerminalSize();
+	my $len = $term_width - $prefix - 3;
+	if (length($line) < $len) {
+		return $line;
+	}
+
+	my $chopped = substr($line, 0, $len);
+	return $chopped . "...";
+}
+
+my $state = 0;
+sub spin
+{
+	my @spin_states = ("-", "\\", "|", "/");
+
+	print "\b";
+	print $spin_states[++$state % 4];
+}
+
+1;
diff --git a/price_scraper b/price_scraper
@@ -9,7 +9,7 @@ use HTML::Grabber;
 use IO::Tee;
 use List::Util qw(min);
 use LWP::Simple;
-use PriceChart;
+use PriceSloth;
 use POSIX;
 use Term::ReadKey;
 use URI::Escape;
diff --git a/product_scraper b/product_scraper
@@ -10,7 +10,7 @@ use Getopt::Std;
 use HTML::Grabber;
 use IO::Tee;
 use LWP::Simple;
-use PriceChart;
+use PriceSloth;
 use Term::ReadKey;
 use POSIX;
 
diff --git a/ps_fcgi b/ps_fcgi
@@ -16,7 +16,7 @@ use Template::Iterator;
 use Template::Parser;
 use Template::Plugins;
 use Template::Stash::XS;
-use PriceChart;
+use PriceSloth;
 use Unix::Syslog qw(:macros :subs);
 use URI::Escape;
 
diff --git a/ps_html b/ps_html
@@ -8,7 +8,7 @@ use Getopt::Std;
 use Lingua::EN::Inflect qw(PL);
 use Math::MatrixReal;
 use POSIX;
-use PriceChart;
+use PriceSloth;
 use SVG;
 use Template;