aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/PhotoStorage.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/PhotoStorage.pm')
-rw-r--r--perllib/FixMyStreet/PhotoStorage.pm41
1 files changed, 41 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/PhotoStorage.pm b/perllib/FixMyStreet/PhotoStorage.pm
new file mode 100644
index 000000000..a441fb718
--- /dev/null
+++ b/perllib/FixMyStreet/PhotoStorage.pm
@@ -0,0 +1,41 @@
+package FixMyStreet::PhotoStorage;
+
+use Moose;
+use Digest::SHA qw(sha1_hex);
+use Module::Load;
+use FixMyStreet;
+
+our $instance; # our, so tests can set to undef when testing different backends
+sub backend {
+ return $instance if $instance;
+ my $class = 'FixMyStreet::PhotoStorage::';
+ $class .= FixMyStreet->config('PHOTO_STORAGE_BACKEND') || 'FileSystem';
+ load $class;
+ $instance = $class->new();
+ return $instance;
+}
+
+sub detect_type {
+ my ($self, $photo) = @_;
+ return 'jpeg' if $photo =~ /^\x{ff}\x{d8}/;
+ return 'png' if $photo =~ /^\x{89}\x{50}/;
+ return 'tiff' if $photo =~ /^II/;
+ return 'gif' if $photo =~ /^GIF/;
+ return '';
+}
+
+=head2 get_fileid
+
+Calculates an identifier for a binary blob of photo data.
+This is just the SHA1 hash of the blob currently.
+
+=cut
+
+sub get_fileid {
+ my ($self, $photo_blob) = @_;
+ return sha1_hex($photo_blob);
+}
+
+
+
+1;