Add new process to receive files to intradata
This commit is contained in:
parent
cdb5874aab
commit
00c62bf8de
92
process/files/intradata_get.pl
Normal file
92
process/files/intradata_get.pl
Normal file
@ -0,0 +1,92 @@
|
||||
#! /usr/bin/env perl
|
||||
|
||||
use v5.10.1;
|
||||
use strict;
|
||||
use warnings;
|
||||
use Pod::Usage;
|
||||
|
||||
use lib "../../";
|
||||
|
||||
use ACU::Log;
|
||||
use ACU::LDAP;
|
||||
use ACU::Process;
|
||||
|
||||
our $basedir = "/intradata";
|
||||
|
||||
my %actions = (
|
||||
"project" => {
|
||||
"create" => \&update_project,
|
||||
"update" => \&update_project,
|
||||
"delete" => \&delete_project,
|
||||
}
|
||||
);
|
||||
|
||||
sub create_tree($$)
|
||||
{
|
||||
my $year = shift;
|
||||
my $project_id = shift;
|
||||
|
||||
if (! -d "$basedir/$year/") {
|
||||
log ERROR, "No directory for year $year. Ask a root to create it.";
|
||||
return "No directory for year $year. Ask a root to create it.";
|
||||
}
|
||||
|
||||
if (! -e "$basedir/$year/$project_id/") {
|
||||
mkdir "$basedir/$year/$project_id/";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub update_project
|
||||
{
|
||||
my $args = shift;
|
||||
|
||||
my $project_id = $args->{param}{project_id};
|
||||
my $year = $args->{param}{year} // LDAP::get_year;
|
||||
|
||||
if (! $project_id) {
|
||||
log ERROR, "No project_id given.";
|
||||
return "No project_id given";
|
||||
}
|
||||
|
||||
my $butler;
|
||||
if (exists $args->{files}{"butler.xml"}) {
|
||||
$butler = $args->{files}{"butler.xml"};
|
||||
}
|
||||
if (! $butler) {
|
||||
log ERROR, "Invalid butler.xml received!";
|
||||
return "Invalid butler.xml received!";
|
||||
}
|
||||
|
||||
log INFO, "Update $year/$project_id/butler.xml";
|
||||
|
||||
create_tree($project_id, $year);
|
||||
|
||||
open my $out, ">", "$year/$project_id/butler.xml";
|
||||
print $out $butler;
|
||||
close $out;
|
||||
|
||||
return "Ok";
|
||||
}
|
||||
|
||||
sub delete_project
|
||||
{
|
||||
log WARN, "delete_project: not implemented."
|
||||
}
|
||||
|
||||
|
||||
sub process_get
|
||||
{
|
||||
my ($given_args, $args) = @_;
|
||||
|
||||
my $type = $args->{param}{type};
|
||||
my $action = $args->{param}{action} // "update";
|
||||
|
||||
if (! exists $actions{$type}{$action}) {
|
||||
log WARN, "Unknown action '$action' for $type.";
|
||||
}
|
||||
|
||||
return $node_actions{$type}{$action}($args);
|
||||
}
|
||||
|
||||
Process::register("intradata_get", \&process_get);
|
Reference in New Issue
Block a user