method()) { case 'POST': $result = [ 'name' => 'required|unique:external_services|max:255', 'service_type' => 'required|max:255', ]; switch ($this->get('service_type')) { case ExternalService::DROPBOX: case ExternalService::FACEBOOK: case ExternalService::GOOGLE: case ExternalService::TWITTER: // Standard OAuth services $result['app_id'] = 'sometimes|required'; $result['app_secret'] = 'sometimes|required'; break; } break; case 'PATCH': case 'PUT': $serviceId = intval($this->segment(3)); $service = ExternalService::find($serviceId); $result = [ 'name' => 'required|max:255|unique:external_services,name,' . $serviceId ]; switch ($service->service_type) { case ExternalService::DROPBOX: case ExternalService::FACEBOOK: case ExternalService::GOOGLE: case ExternalService::TWITTER: // Standard OAuth services $result['app_id'] = 'sometimes|required'; $result['app_secret'] = 'sometimes|required'; break; } break; } return $result; } }