mebil
[kivitendo-erp.git] / SL / mebil / ERiC.pm
1 package SL::mebil::ERiC;
2
3 #####################################################
4 # Abhängigkeit: libinline-perl
5 # diese Datei ist im falschen Zweig 
6 #####################################################
7 use File::Copy qw(copy);
8 use strict;
9 use Inline C => Config => BUILD_NOISY => 1, MYEXTLIB => '/home/mebil/workspace_cpp/mERiC/Debug/libmERiC.so';
10 use Inline C => <<'C_END';
11
12 int validate (char*, char*);
13 int senddata (char*, char*, char*, char*);
14
15 int c_validate(char* datenart, char* xml_file) {
16       int r = validate(datenart, xml_file);
17       return r;
18 }
19 int c_submit(char* datenart, char* xml_file, char* certificate_path, char* PIN) {
20       int r = senddata(datenart, xml_file, certificate_path, PIN);
21       return r;
22 }
23
24 C_END
25
26 sub new {
27         # parameter: 1) type of data: xmlfile must be named: <datatype>.xml
28         #            2) xml file name
29         #            3) path to certificate
30         #            4) password
31         my $my_data = {
32                 datatype         => $_[1],
33                 xml_file         => $_[2],
34                 certificate_path => $_[3],
35                 PIN              => $_[4]};
36         bless $my_data;
37         return $my_data;
38 }
39
40 sub validate {
41         my $self = shift;
42         
43         # open xml file for reading
44         open (FILE, "$self->{xml_file}") or die "cannot open $self->{xml_file}";
45         
46         # check encoding
47         my $encod = <FILE>;
48         if ($encod =~ /UTF-8/) {
49                 open (OUT, ">:encoding(iso-8859-1)", "data.xml");
50                 print OUT "<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>\n";
51                 my $line;
52                 while ($line = <FILE>) {
53                         print OUT $line;
54                 }
55                 close (OUT);
56                 close (FILE);
57                 
58         }
59         elsif ($encod =~ /8859-15/) {
60                 close (FILE);
61             copy "$self->{xml_file}", "data.xml";
62         }
63         else {
64                 die "unknown encoding $encod";
65         }               
66
67         # call ERiC lib
68         return c_validate($self->{datatype}, "data.xml");
69 }
70
71 sub submit {
72         my $self = shift;
73
74         # call ERiC lib
75         return c_submit($self->{datatype}, "data.xml", $self->{certificate_path}, $self->{PIN});
76 }
77
78 1;