2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 16:56:54 +00:00

added: new command caldav

git-svn-id: https://svn.fhem.de/fhem/trunk@18604 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
betateilchen 2019-02-16 00:52:07 +00:00
parent ef7fd381f1
commit 3538fcd550
2 changed files with 85 additions and 0 deletions

84
fhem/FHEM/57_CalDav.pm Normal file
View File

@ -0,0 +1,84 @@
##############################################
# $Id$
package main;
use strict;
use warnings;
use HttpUtils;
use XML::LibXML;
use Data::Dumper;
sub CalDav_Initialize($$)
{
$cmds{caldav} = { Fn => "CommandCaldav",
Hlp=>"url"};
}
sub CommandCaldav($$) {
my ($cl, $params) = @_;
my ($url,$options) = split (" ",$params,2);
$options //= "";
$url .= "/" unless $url =~ /\/$/;
my $hash = ();
$hash->{URL} = $url;
$hash->{NAME} = "caldav_";
$hash->{OPTIONS} = $options;
my %hu_hash = ();
$hu_hash{hash} = $hash;
$hu_hash{url} = $url;
$hu_hash{hideurl} = 1;
$hu_hash{timeout} = 30;
$hu_hash{noshutdown} = 1;
$hu_hash{header} = "Depth: 1\r\nContent-Type: application/xml; charset=utf-8";
$hu_hash{method} = "PROPFIND";
$hu_hash{callback} = \&CalDav_Process;
HttpUtils_NonblockingGet(\%hu_hash);
}
sub CalDav_Process($$$) {
my ($param, $errmsg, $data) = @_;
my $hash = $param->{hash};
my $name = $hash->{NAME};
my $url = $hash->{URL};
my $options = $hash->{OPTIONS};
my $d = XML::LibXML->load_xml(string => $data);
foreach my $r ($d->findnodes('/d:multistatus/d:response/d:href')) {
my $u = $r->to_literal();
next if ($url =~ /$u/);
next if ($u =~ /(inbox|outbox)\/$/);
my @a = split(/\//,$u);
my $t = "define $name$a[-1] Calendar ical url $url$a[-1]$options";
Log3 (3, "caldav", "Creating Calendar: $t");
fhem $t;
}
}
1;
=pod
=item summary create single Calendar devices from webdav server
=item summary_DE erzeugt einzelne Calendar devices aus einem webdav Server
=item command
=begin html
<a name="CalDav"></a>
<h3>caldav</h3>
<ul>
<code>caldav &lt;url&gt; [&lt;options&gt;]</code>
<br/><br/>
create single Calendar devices from webdav resources.<br/>
<br/>
Example for ownCloud / Nextcloud:<br/>
<br/>
<code>caldav https://&lt;user&gt;:&lt;password&gt;@my.cloudServer.de/remote.php/dav/calendars/&lt;user&gt;/ /?export</code>
</ul>
=end html
=cut

View File

@ -289,6 +289,7 @@ FHEM/55_DWD_OpenData.pm jensb Unterstuetzende Dienste/Wetter
FHEM/55_InfoPanel.pm betateilchen Unterstuetzende Dienste
FHEM/55_PIFACE.pm klaus.schauer Einplatinencomputer
FHEM/56_POKEYS.pm axelberner Sonstiges
FHEM/57_CalDav.pm betateilchen Unterstuetzende Dienste/Kalendermodule
FHEM/57_Calendar.pm neubert Unterstuetzende Dienste/Kalendermodule
FHEM/57_CALVIEW.pm chris1284 Unterstuetzende Dienste/Kalendermodule
FHEM/59_HCS.pm hjr Automatisierung (oder auch PM)