package WebCoso::Config::Resource;
use strict;
use warnings;
use Class::Std;
use WebCoso::Config;
{
my %sources_of :ATTR( :init_arg<source> :get<sources>);
my %pipelines_of :ATTR( :init_arg<pipeline> :get<pipeline>);
my %dest_of :ATTR( :init_arg<destination> :get<destination>);
sub BUILD {
my ($self,$ident,$args_ref)=@_;
WebCoso::Config->add_resource($self);
}
sub axes {
return 'filename';
}
sub axis {
my ($self,$axis_name)=@_;
if ($axis_name eq 'filename') {
return @{ $self->get_sources() };
}
else {
return;
}
}
sub datastream {
my ($self,$axis_name,$axis_value,@rest)=@_;
if (@rest==0 and $axis_name eq 'filename') {
if ( grep { $_ eq $axis_value }
@{ $self->get_sources() }
) {
return _read_file($axis_value);
}
}
else {
return;
}
}
sub properties {
return ();
}
sub collections {
return ();
}
sub _read_file :PRIVATE {
my ($filename)=@_;
local $/;
open my $fh,'<:raw',$filename or die "Can't open $filename: $!\n";
return scalar <$fh>;
}
}
1;