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_InfoPanel.pm betateilchen Unterstuetzende Dienste
|
||||||
FHEM/55_PIFACE.pm klaus.schauer Einplatinencomputer
|
FHEM/55_PIFACE.pm klaus.schauer Einplatinencomputer
|
||||||
FHEM/56_POKEYS.pm axelberner Sonstiges
|
FHEM/56_POKEYS.pm axelberner Sonstiges
|
||||||
|
FHEM/57_CalDav.pm betateilchen Unterstuetzende Dienste/Kalendermodule
|
||||||
FHEM/57_Calendar.pm neubert Unterstuetzende Dienste/Kalendermodule
|
FHEM/57_Calendar.pm neubert Unterstuetzende Dienste/Kalendermodule
|
||||||
FHEM/57_CALVIEW.pm chris1284 Unterstuetzende Dienste/Kalendermodule
|
FHEM/57_CALVIEW.pm chris1284 Unterstuetzende Dienste/Kalendermodule
|
||||||
FHEM/59_HCS.pm hjr Automatisierung (oder auch PM)
|
FHEM/59_HCS.pm hjr Automatisierung (oder auch PM)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user