diff options
Diffstat (limited to 'app/Services/ImportService.php')
| -rw-r--r-- | app/Services/ImportService.php | 78 |
1 files changed, 76 insertions, 2 deletions
diff --git a/app/Services/ImportService.php b/app/Services/ImportService.php index dace91a22..2c7d64f80 100644 --- a/app/Services/ImportService.php +++ b/app/Services/ImportService.php @@ -161,7 +161,12 @@ class FreshRSS_Import_Service { case strtolower(FreshRSS_Export_Service::TYPE_XML_XPATH): $feed->_kind(FreshRSS_Feed::KIND_XML_XPATH); break; - case strtolower(FreshRSS_Export_Service::TYPE_RSS_ATOM): + case strtolower(FreshRSS_Export_Service::TYPE_JSON_DOTPATH): + $feed->_kind(FreshRSS_Feed::KIND_JSON_DOTPATH); + break; + case strtolower(FreshRSS_Export_Service::TYPE_JSONFEED): + $feed->_kind(FreshRSS_Feed::KIND_JSONFEED); + break; default: $feed->_kind(FreshRSS_Feed::KIND_RSS); break; @@ -213,11 +218,80 @@ class FreshRSS_Import_Service { if (isset($feed_elt['frss:xPathItemUid'])) { $xPathSettings['itemUid'] = $feed_elt['frss:xPathItemUid']; } - if (!empty($xPathSettings)) { $feed->_attribute('xpath', $xPathSettings); } + $jsonSettings = []; + if (isset($feed_elt['frss:jsonItem'])) { + $jsonSettings['item'] = $feed_elt['frss:jsonItem']; + } + if (isset($feed_elt['frss:jsonItemTitle'])) { + $jsonSettings['itemTitle'] = $feed_elt['frss:jsonItemTitle']; + } + if (isset($feed_elt['frss:jsonItemContent'])) { + $jsonSettings['itemContent'] = $feed_elt['frss:jsonItemContent']; + } + if (isset($feed_elt['frss:jsonItemUri'])) { + $jsonSettings['itemUri'] = $feed_elt['frss:jsonItemUri']; + } + if (isset($feed_elt['frss:jsonItemAuthor'])) { + $jsonSettings['itemAuthor'] = $feed_elt['frss:jsonItemAuthor']; + } + if (isset($feed_elt['frss:jsonItemTimestamp'])) { + $jsonSettings['itemTimestamp'] = $feed_elt['frss:jsonItemTimestamp']; + } + if (isset($feed_elt['frss:jsonItemTimeFormat'])) { + $jsonSettings['itemTimeFormat'] = $feed_elt['frss:jsonItemTimeFormat']; + } + if (isset($feed_elt['frss:jsonItemThumbnail'])) { + $jsonSettings['itemThumbnail'] = $feed_elt['frss:jsonItemThumbnail']; + } + if (isset($feed_elt['frss:jsonItemCategories'])) { + $jsonSettings['itemCategories'] = $feed_elt['frss:jsonItemCategories']; + } + if (isset($feed_elt['frss:jsonItemUid'])) { + $jsonSettings['itemUid'] = $feed_elt['frss:jsonItemUid']; + } + if (!empty($jsonSettings)) { + $feed->_attribute('json_dotpath', $jsonSettings); + } + + $curl_params = []; + if (isset($feed_elt['frss:CURLOPT_COOKIE'])) { + $curl_params[CURLOPT_COOKIE] = $feed_elt['frss:CURLOPT_COOKIE']; + } + if (isset($feed_elt['frss:CURLOPT_COOKIEFILE'])) { + $curl_params[CURLOPT_COOKIEFILE] = $feed_elt['frss:CURLOPT_COOKIEFILE']; + } + if (isset($feed_elt['frss:CURLOPT_FOLLOWLOCATION'])) { + $curl_params[CURLOPT_FOLLOWLOCATION] = (bool)$feed_elt['frss:CURLOPT_FOLLOWLOCATION']; + } + if (isset($feed_elt['frss:CURLOPT_HTTPHEADER'])) { + $curl_params[CURLOPT_HTTPHEADER] = preg_split('/\R/', $feed_elt['frss:CURLOPT_HTTPHEADER']) ?: []; + } + if (isset($feed_elt['frss:CURLOPT_MAXREDIRS'])) { + $curl_params[CURLOPT_MAXREDIRS] = (int)$feed_elt['frss:CURLOPT_MAXREDIRS']; + } + if (isset($feed_elt['frss:CURLOPT_POST'])) { + $curl_params[CURLOPT_POST] = (bool)$feed_elt['frss:CURLOPT_POST']; + } + if (isset($feed_elt['frss:CURLOPT_POSTFIELDS'])) { + $curl_params[CURLOPT_POSTFIELDS] = $feed_elt['frss:CURLOPT_POSTFIELDS']; + } + if (isset($feed_elt['frss:CURLOPT_PROXY'])) { + $curl_params[CURLOPT_PROXY] = $feed_elt['frss:CURLOPT_PROXY']; + } + if (isset($feed_elt['frss:CURLOPT_PROXYTYPE'])) { + $curl_params[CURLOPT_PROXYTYPE] = $feed_elt['frss:CURLOPT_PROXYTYPE']; + } + if (isset($feed_elt['frss:CURLOPT_USERAGENT'])) { + $curl_params[CURLOPT_USERAGENT] = $feed_elt['frss:CURLOPT_USERAGENT']; + } + if (!empty($curl_params)) { + $feed->_attribute('curl_params', $curl_params); + } + // Call the extension hook /** @var FreshRSS_Feed|null */ $feed = Minz_ExtensionManager::callHook('feed_before_insert', $feed); |
