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:
parent
ef7fd381f1
commit
3538fcd550
84
fhem/FHEM/57_CalDav.pm
Normal file
84
fhem/FHEM/57_CalDav.pm
Normal 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 <url> [<options>]</code>
|
||||
<br/><br/>
|
||||
create single Calendar devices from webdav resources.<br/>
|
||||
<br/>
|
||||
Example for ownCloud / Nextcloud:<br/>
|
||||
<br/>
|
||||
<code>caldav https://<user>:<password>@my.cloudServer.de/remote.php/dav/calendars/<user>/ /?export</code>
|
||||
</ul>
|
||||
|
||||
=end html
|
||||
|
||||
=cut
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user