Added relations parameter to get summits endpoint
now user could query summit entities without relations ( only main data ) Change-Id: Id5ad77ac62c3f87a2bde939e6639cffac1283665
This commit is contained in:
parent
86375bd3da
commit
dd78b729b6
@ -79,10 +79,17 @@ final class OAuth2SummitApiController extends OAuth2ProtectedController
|
||||
{
|
||||
try {
|
||||
|
||||
$expand = Request::input('expand', '');
|
||||
$fields = Request::input('fields', '');
|
||||
$relations = Request::input('relations', '');
|
||||
|
||||
$relations = !empty($relations) ? explode(',', $relations) : [];
|
||||
$fields = !empty($fields) ? explode(',', $fields) : [];
|
||||
|
||||
$summits = [];
|
||||
|
||||
foreach($this->_getSummits() as $summit){
|
||||
$summits[] = SerializerRegistry::getInstance()->getSerializer($summit)->serialize(Input::get('expand',''));
|
||||
$summits[] = SerializerRegistry::getInstance()->getSerializer($summit)->serialize($expand, $fields, $relations);
|
||||
}
|
||||
|
||||
$response = new PagingResponse
|
||||
|
@ -27,8 +27,6 @@ final class SummitSerializer extends SilverStripeSerializer
|
||||
'Name' => 'name:json_string',
|
||||
'BeginDate' => 'start_date:datetime_epoch',
|
||||
'EndDate' => 'end_date:datetime_epoch',
|
||||
'BeginDate' => 'start_date:datetime_epoch',
|
||||
'EndDate' => 'end_date:datetime_epoch',
|
||||
'SubmissionBeginDate' => 'submission_begin_date:datetime_epoch',
|
||||
'SubmissionEndDate' => 'submission_end_date:datetime_epoch',
|
||||
'VotingBeginDate' => 'voting_begin_date:datetime_epoch',
|
||||
@ -56,6 +54,13 @@ final class SummitSerializer extends SilverStripeSerializer
|
||||
'SpeakerAnnouncementEmailAlternateRejectedCount' => 'speaker_announcement_email_alternate_rejected_count:json_int',
|
||||
];
|
||||
|
||||
protected static $allowed_relations = [
|
||||
|
||||
'ticket_types',
|
||||
'locations',
|
||||
'wifi_connections',
|
||||
];
|
||||
|
||||
/**
|
||||
* @param null $expand
|
||||
* @param array $fields
|
||||
@ -70,6 +75,7 @@ final class SummitSerializer extends SilverStripeSerializer
|
||||
$values = parent::serialize($expand, $fields, $relations, $params);
|
||||
$time_zone_list = timezone_identifiers_list();
|
||||
$time_zone_id = $summit->getTimeZoneId();
|
||||
if(!count($relations)) $relations = $this->getAllowedRelations();
|
||||
$values['time_zone'] = null;
|
||||
|
||||
if (!empty($time_zone_id) && isset($time_zone_list[$time_zone_id])) {
|
||||
@ -95,25 +101,31 @@ final class SummitSerializer extends SilverStripeSerializer
|
||||
$values['schedule_event_detail_url'] = sprintf("%ssummit/%s/%s/%s", Config::get("server.assets_base_url", 'https://www.openstack.org/'), $main_page, $schedule_page, 'events/:event_id/:event_title');
|
||||
|
||||
// tickets
|
||||
$ticket_types = [];
|
||||
foreach ($summit->getTicketTypes() as $ticket) {
|
||||
$ticket_types[] = SerializerRegistry::getInstance()->getSerializer($ticket)->serialize($expand);
|
||||
if(in_array('ticket_types', $relations)) {
|
||||
$ticket_types = [];
|
||||
foreach ($summit->getTicketTypes() as $ticket) {
|
||||
$ticket_types[] = SerializerRegistry::getInstance()->getSerializer($ticket)->serialize($expand);
|
||||
}
|
||||
$values['ticket_types'] = $ticket_types;
|
||||
}
|
||||
$values['ticket_types'] = $ticket_types;
|
||||
|
||||
//locations
|
||||
$locations = [];
|
||||
foreach ($summit->getLocations() as $location) {
|
||||
$locations[] = SerializerRegistry::getInstance()->getSerializer($location)->serialize($expand);
|
||||
if(in_array('locations', $relations)) {
|
||||
$locations = [];
|
||||
foreach ($summit->getLocations() as $location) {
|
||||
$locations[] = SerializerRegistry::getInstance()->getSerializer($location)->serialize($expand);
|
||||
}
|
||||
$values['locations'] = $locations;
|
||||
}
|
||||
$values['locations'] = $locations;
|
||||
|
||||
// wifi connections
|
||||
$wifi_connections = [];
|
||||
foreach ($summit->getWifiConnections() as $wifi_connection) {
|
||||
$wifi_connections[] = SerializerRegistry::getInstance()->getSerializer($wifi_connection)->serialize($expand);
|
||||
if(in_array('wifi_connections', $relations)) {
|
||||
$wifi_connections = [];
|
||||
foreach ($summit->getWifiConnections() as $wifi_connection) {
|
||||
$wifi_connections[] = SerializerRegistry::getInstance()->getSerializer($wifi_connection)->serialize($expand);
|
||||
}
|
||||
$values['wifi_connections'] = $wifi_connections;
|
||||
}
|
||||
$values['wifi_connections'] = $wifi_connections;
|
||||
|
||||
if (!empty($expand)) {
|
||||
$expand = explode(',', $expand);
|
||||
@ -229,6 +241,7 @@ final class SummitSerializer extends SilverStripeSerializer
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$values['timestamp'] = time();
|
||||
return $values;
|
||||
}
|
||||
|
@ -18,7 +18,8 @@ final class OAuth2SummitApiTest extends ProtectedApiTest
|
||||
public function testGetSummits()
|
||||
{
|
||||
|
||||
$params = ['expand' => 'type'];
|
||||
$start = time();
|
||||
$params = ['relations'=>'none'];
|
||||
|
||||
$headers = array("HTTP_Authorization" => " Bearer " . $this->access_token);
|
||||
$response = $this->action(
|
||||
@ -33,6 +34,9 @@ final class OAuth2SummitApiTest extends ProtectedApiTest
|
||||
|
||||
$content = $response->getContent();
|
||||
$summits = json_decode($content);
|
||||
$end = time();
|
||||
$delta = $end - $start;
|
||||
echo "execution call " . $delta . " seconds ...";
|
||||
$this->assertTrue(!is_null($summits));
|
||||
$this->assertResponseStatus(200);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user