From: Michael Wagner Date: Sun, 21 Feb 2016 11:51:33 +0000 (+0100) Subject: posaune: mebil file added X-Git-Tag: t2~4 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=eb3ba511c5e1ad9f6467ec7f3c795279be34f14c;p=kivitendo-erp.git posaune: mebil file added --- diff --git a/SL/mebil/ERiC.pm b/SL/mebil/ERiC.pm new file mode 100644 index 000000000..e815cf013 --- /dev/null +++ b/SL/mebil/ERiC.pm @@ -0,0 +1,78 @@ +package SL::mebil::ERiC; + +##################################################### +# Abhängigkeit: libinline-perl +# +##################################################### +use File::Copy qw(copy); +use strict; +use Inline C => Config => BUILD_NOISY => 1, MYEXTLIB => '/home/mebil/workspace_cpp/mERiC/Debug/libmERiC.so'; +use Inline C => <<'C_END'; + +int validate (char*, char*); +int senddata (char*, char*, char*, char*); + +int c_validate(char* datenart, char* xml_file) { + int r = validate(datenart, xml_file); + return r; +} +int c_submit(char* datenart, char* xml_file, char* certificate_path, char* PIN) { + int r = senddata(datenart, xml_file, certificate_path, PIN); + return r; +} + +C_END + +sub new { + # parameter: 1) type of data: xmlfile must be named: .xml + # 2) xml file name + # 3) path to certificate + # 4) password + my $my_data = { + datatype => $_[1], + xml_file => $_[2], + certificate_path => $_[3], + PIN => $_[4]}; + bless $my_data; + return $my_data; +} + +sub validate { + my $self = shift; + + # open xml file for reading + open (FILE, "$self->{xml_file}") or die "cannot open $self->{xml_file}"; + + # check encoding + my $encod = ; + if ($encod =~ /UTF-8/) { + open (OUT, ">:encoding(iso-8859-1)", "data.xml"); + print OUT "\n"; + my $line; + while ($line = ) { + print OUT $line; + } + close (OUT); + close (FILE); + + } + elsif ($encod =~ /8859-15/) { + close (FILE); + copy "$self->{xml_file}", "data.xml"; + } + else { + die "unknown encoding $encod"; + } + + # call ERiC lib + return c_validate($self->{datatype}, "data.xml"); +} + +sub submit { + my $self = shift; + + # call ERiC lib + return c_submit($self->{datatype}, "data.xml", $self->{certificate_path}, $self->{PIN}); +} + +1;