Я пытаюсь разобрать календарь icloud (CalDav). Календарь доступен через webcal-протокол. Адрес календаря выглядит так: webcal://p19-calendarws.icloud.com/ca/....
Как я могу отправить запрос webcal с node.js?
Так что мой (надеюсь, простой) вопрос: как я могу отправить запрос с webcal-протоколом? Я попробовал это с модулем запроса, но получил это сообщение об ошибке [Error: Invalid protocol: webcal:]
Также HTTP-модуль nativ кажется ему не подходящим.
Edit: Моя попытка с HTTP-модуля: вар URL = «WebCal: //p19-calendarws.icloud.com/ca/************** «;
var http = require('http');
http.get(url, function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
Получить следующее сообщение об ошибке: Error: Protocol:webcal: not supported.
Решение: Сначала я должен заменить webcal://
с https://
в календарном адрес. Apple будет перенаправляться на файл icalendar календаря. Из-за перенаправления я использую модуль request, который очень хорошо обрабатывает перенаправления.
var request = require('request');
var calendarUrl = 'webcal://p19-calendarws.icloud.com/*****';
var options = {
url: calendarUrl.replace('webcal://', 'https://'),
gzip: true
};
request(options, function (error, response, icalData) {
console.log(icalData);
});
Вы пробовали прочитать его с помощью простых http (s)? Единственной альтернативой может быть [это] (https://github.com/mikedeboer/jsDAV). –
Да, я пробовал модуль https, он не работает. Библиотека, которую вы опубликовали, является сервером WebDav. Но мне нужен клиент CalDav, который работает с протоколом webcal. – tschiela
Звучит как возможность написать модуль NPM. –