Invalid caldav user info

Added error checking for invalid iprincipal url
caldav info

Change-Id: I826d5dad7070eb7b7a748e337b2ca04922348aa6
This commit is contained in:
smarcet 2019-04-30 10:38:43 -03:00
parent c9cc73495b
commit dfb9c528fa
2 changed files with 25 additions and 11 deletions

View File

@ -104,6 +104,13 @@ class CalendarSyncInfoCalDav extends CalendarSyncInfo
*/
public function getServer(){
$result = parse_url($this->user_principal_url);
if(!$result) throw new \InvalidArgumentException(sprintf("user_principal_url %s is invalid", $this->user_principal_url));
if(!isset($result['scheme']))
throw new \InvalidArgumentException(sprintf("user_principal_url %s is invalid", $this->user_principal_url));
if(!isset($result['host']))
throw new \InvalidArgumentException(sprintf("user_principal_url %s is invalid", $this->user_principal_url));
return $result['scheme']."://".$result['host'];
}

View File

@ -13,6 +13,7 @@
**/
use App\Services\Apis\CalendarSync\ICalendarSyncRemoteFacadeFactory;
use models\summit\CalendarSync\CalendarSyncInfo;
use Illuminate\Support\Facades\Log;
/**
* Class CalendarSyncRemoteFacadeFactory
* @package services\apis\CalendarSync
@ -24,17 +25,23 @@ final class CalendarSyncRemoteFacadeFactory implements ICalendarSyncRemoteFacade
* @return ICalendarSyncRemoteFacade|null
*/
public function build(CalendarSyncInfo $sync_calendar_info){
switch($sync_calendar_info->getProvider()){
case CalendarSyncInfo::ProviderGoogle:
return new GoogleCalendarSyncRemoteFacade($sync_calendar_info);
break;
case CalendarSyncInfo::ProvideriCloud:
return new ICloudCalendarSyncRemoteFacade($sync_calendar_info);
break;
case CalendarSyncInfo::ProviderOutlook:
return new OutlookCalendarSyncRemoteFacade($sync_calendar_info);
break;
try {
switch ($sync_calendar_info->getProvider()) {
case CalendarSyncInfo::ProviderGoogle:
return new GoogleCalendarSyncRemoteFacade($sync_calendar_info);
break;
case CalendarSyncInfo::ProvideriCloud:
return new ICloudCalendarSyncRemoteFacade($sync_calendar_info);
break;
case CalendarSyncInfo::ProviderOutlook:
return new OutlookCalendarSyncRemoteFacade($sync_calendar_info);
break;
}
return null;
}
catch (\Exception $ex){
Log::warning($ex);
return null;
}
return null;
}
}