[horde] import calendar events into kronolith - using xmlRPC?
Michael J Rubinsky
mrubinsk at horde.org
Thu Jan 21 16:47:01 UTC 2016
Quoting Daniel <horde at daniu.de>:
> Zitat von Michael J Rubinsky <mrubinsk at horde.org>:
>
>> Quoting Michael J Rubinsky <mrubinsk at horde.org>:
>>
>>> Quoting Jan Schneider <jan at horde.org>:
>>>
>>>> Zitat von Daniel <horde at daniu.de>:
>>>>
>>>>> Hi,
>>>>>
>>>>> I am new to the list - hope my request is in the right place here:
>>>>>
>>>>> My final goal is to get a calendar from google into kronolith.
>>>>> Unfortunately my provider did not setup kronolith so that I can
>>>>> do that with kronolith itsself so I think of a cron-job that
>>>>> does that with a php script (I am not talking about syncing -
>>>>> just copying the google calendar to kronolith. Since the google
>>>>> calendar itsself gets populated with a cron-job itsself it's ok
>>>>> to have accurate data only after copying). I can already read
>>>>> all appointments from google (caldav still works) - so I got a
>>>>> string with Vevent infos. The plan is to purge the existing
>>>>> calendar in kronolith and write all events from the string into
>>>>> the existing calendar.
>>>>>
>>>>> I tried to adjust this: http://theupstairsroom.com/66 but don't
>>>>> seem to get it working at all. Partly because I don't have
>>>>> access to horde sources on the server from which I connect to
>>>>> the Horde - so I need to use another RPC-client. I would like to
>>>>> use the RPC-client built in php (epinion.com) which is turned on
>>>>> according to phpinfo. Somehow I cannot really find a good
>>>>> tutorial how to do that.
>>>>>
>>>>> Adjusting a script from php.net gave me the attached attempt.
>>>>> That one does nothing unfortunately ... (but at least no error
>>>>> message)
>>>>>
>>>>> Can someone point me in the right direction? Or is there a
>>>>> simpler way to achieve what I want to do?
>>>>>
>>>>> Is https a problem for what I want to do? Are my adjustments for
>>>>> that correct?
>>>>>
>>>>> Looking at the api it seems like the purge function from import
>>>>> in the GUI did not make it in there ... any chance to still do
>>>>> it or get it in the api?
>>>>>
>>>>> Thanks for any input!
>>>>>
>>>>> (BTW: there is a sourceforge project with exactly that topic,
>>>>> but it does not work any more and the author did not maintain it
>>>>> - I even asked him and he says he cannot help -
>>>>> http://sourceforge.net/projects/kron2gcalsync/)
>>>>>
>>>>> ***
>>>>> function do_call($host, $port, $request) {
>>>>>
>>>>> $url = "https://$host:$port/";
>>>>> //echo $url;
>>>>> $header[] = "Content-type: text/xml";
>>>>> $header[] = "Content-length: ".strlen($request);
>>>>> $to['user']='username';
>>>>> $to['pass']='password';
>>>>> $userpwd = $to['user'] .":". $to['pass'];
>>>>>
>>>>>
>>>>> $ch = curl_init();
>>>>> curl_setopt($ch, CURLOPT_URL, $url);
>>>>> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
>>>>> curl_setopt($ch, CURLOPT_TIMEOUT, 1);
>>>>> curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
>>>>> curl_setopt($ch, CURLOPT_USERPWD, $userpwd);
>>>>> curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
>>>>> curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
>>>>> curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
>>>>>
>>>>> $data = curl_exec($ch);
>>>>> if (curl_errno($ch)) {
>>>>> print curl_error($ch);
>>>>> } else {
>>>>> curl_close($ch);
>>>>> return $data;
>>>>> }
>>>>> }
>>>>>
>>>>> $host="path/rpc.php";
>>>>> $port=443;
>>>>> $request = xmlrpc_encode_request('kronolith.listCalendars', array());
>>>>> $response = do_call($host, $port, $request);
>>>>> echo $response;
>>>>> ***
>>>>>
>>>>> regards
>>>>>
>>>>> --
>>>>> Horde mailing list
>>>>> Frequently Asked Questions: http://horde.org/faq/
>>>>> To unsubscribe, mail: horde-unsubscribe at lists.horde.org
>>>>
>>>> You want to use the kronolith-import-icals script that comes with
>>>> Kronolith.
>>>
>>> This is correct, if you have shell access. If you don't, you
>>> should probably change to JSON as Jan suggests below. In newer
>>> versions of Horde we no longer support xmlrpc.
>>>
>>> Also:
>>> 1) Don't set the port number in CURL when you use https:// already
>>> in the URL.
>>> 2) The proper method name would be "calendar.listCalendars", not
>>> "kronolith.listCalendars".
>>>
>>> So, for example (this is VERY rough and quickly done, so you might
>>> need to tweak some things):
>>>
>>>
>>> function do_call($host, $method, $params) {
>>> $url = "https://$host";
>>> $header[] = "Content-type: application/json";
>>> $data = array('version' => '1.1', 'method' => $request);
>>
>> Sorry, this line should be (substitute $method for $request):
>> $data = array('version' => '1.1', 'method' => $method);
>
> sure - I found that ... works great! THANKS a lot!
>
> So now how about the other things:
> *do I need to delete all events manually or may I beg for a purge to
> be implemented in the api?
Use the calendar.deleteCalendar method.
> *Can I import the events with the api yet?
>
> I tried that one - (function and host omitted)
>
> ***
> $request = 'calendar.import';
> $input = <<<EOF
> BEGIN:VEVENT
> UID:20160901T130000Z-123401 at host.com
> DTSTAMP:20160110T1300Z
> DTSTART:20160110T163000Z
> DTEND:20160110T190000Z
> SUMMARY:Test1
> END:VEVENT
> UID:20160902T130000Z-123401 at host.com
> DTSTAMP:20160111T1300Z
> DTSTART:20160111T163000Z
> DTEND:20160111T190000Z
> SUMMARY:Test2
> END:VEVENT
> EOF;
> $params = array($input,'text/calendar','calendar-id');
> $response = do_call($host, $request, $params);
> echo $response;
> ***
>
> which imported just the first event ... any chance to make it import
> many events with one call? I am afraid that I get a timeout for the
> script otherwise ...
Correct, you can only import one VEVENT at a time.
I'm confused by your statement about a timeout. A single event will
import faster than a large calendar. You are likely to get server
timeouts importing the full calendar at once.
> I'd love to see a function like this:
> public function import_many($content, $contentType, $calendar =
> null, $purge = FALSE)
>
> while it won't help me since my provider would not update Horde just
> for me ...
>
> regards
>
> --
> Horde mailing list
> Frequently Asked Questions: http://horde.org/faq/
> To unsubscribe, mail: horde-unsubscribe at lists.horde.org
--
mike
The Horde Project
http://www.horde.org
https://www.facebook.com/hordeproject
https://www.twitter.com/hordeproject
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5751 bytes
Desc: S/MIME Signature
URL: <http://lists.horde.org/archives/horde/attachments/20160121/483d5fd5/attachment.bin>
More information about the horde
mailing list