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 {
|
try {
|
||||||
|
|
||||||
|
$expand = Request::input('expand', '');
|
||||||
|
$fields = Request::input('fields', '');
|
||||||
|
$relations = Request::input('relations', '');
|
||||||
|
|
||||||
|
$relations = !empty($relations) ? explode(',', $relations) : [];
|
||||||
|
$fields = !empty($fields) ? explode(',', $fields) : [];
|
||||||
|
|
||||||
$summits = [];
|
$summits = [];
|
||||||
|
|
||||||
foreach($this->_getSummits() as $summit){
|
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
|
$response = new PagingResponse
|
||||||
|
@ -27,8 +27,6 @@ final class SummitSerializer extends SilverStripeSerializer
|
|||||||
'Name' => 'name:json_string',
|
'Name' => 'name:json_string',
|
||||||
'BeginDate' => 'start_date:datetime_epoch',
|
'BeginDate' => 'start_date:datetime_epoch',
|
||||||
'EndDate' => 'end_date:datetime_epoch',
|
'EndDate' => 'end_date:datetime_epoch',
|
||||||
'BeginDate' => 'start_date:datetime_epoch',
|
|
||||||
'EndDate' => 'end_date:datetime_epoch',
|
|
||||||
'SubmissionBeginDate' => 'submission_begin_date:datetime_epoch',
|
'SubmissionBeginDate' => 'submission_begin_date:datetime_epoch',
|
||||||
'SubmissionEndDate' => 'submission_end_date:datetime_epoch',
|
'SubmissionEndDate' => 'submission_end_date:datetime_epoch',
|
||||||
'VotingBeginDate' => 'voting_begin_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',
|
'SpeakerAnnouncementEmailAlternateRejectedCount' => 'speaker_announcement_email_alternate_rejected_count:json_int',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
protected static $allowed_relations = [
|
||||||
|
|
||||||
|
'ticket_types',
|
||||||
|
'locations',
|
||||||
|
'wifi_connections',
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param null $expand
|
* @param null $expand
|
||||||
* @param array $fields
|
* @param array $fields
|
||||||
@ -70,6 +75,7 @@ final class SummitSerializer extends SilverStripeSerializer
|
|||||||
$values = parent::serialize($expand, $fields, $relations, $params);
|
$values = parent::serialize($expand, $fields, $relations, $params);
|
||||||
$time_zone_list = timezone_identifiers_list();
|
$time_zone_list = timezone_identifiers_list();
|
||||||
$time_zone_id = $summit->getTimeZoneId();
|
$time_zone_id = $summit->getTimeZoneId();
|
||||||
|
if(!count($relations)) $relations = $this->getAllowedRelations();
|
||||||
$values['time_zone'] = null;
|
$values['time_zone'] = null;
|
||||||
|
|
||||||
if (!empty($time_zone_id) && isset($time_zone_list[$time_zone_id])) {
|
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');
|
$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
|
// tickets
|
||||||
$ticket_types = [];
|
if(in_array('ticket_types', $relations)) {
|
||||||
foreach ($summit->getTicketTypes() as $ticket) {
|
$ticket_types = [];
|
||||||
$ticket_types[] = SerializerRegistry::getInstance()->getSerializer($ticket)->serialize($expand);
|
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
|
||||||
$locations = [];
|
if(in_array('locations', $relations)) {
|
||||||
foreach ($summit->getLocations() as $location) {
|
$locations = [];
|
||||||
$locations[] = SerializerRegistry::getInstance()->getSerializer($location)->serialize($expand);
|
foreach ($summit->getLocations() as $location) {
|
||||||
|
$locations[] = SerializerRegistry::getInstance()->getSerializer($location)->serialize($expand);
|
||||||
|
}
|
||||||
|
$values['locations'] = $locations;
|
||||||
}
|
}
|
||||||
$values['locations'] = $locations;
|
|
||||||
|
|
||||||
// wifi connections
|
// wifi connections
|
||||||
$wifi_connections = [];
|
if(in_array('wifi_connections', $relations)) {
|
||||||
foreach ($summit->getWifiConnections() as $wifi_connection) {
|
$wifi_connections = [];
|
||||||
$wifi_connections[] = SerializerRegistry::getInstance()->getSerializer($wifi_connection)->serialize($expand);
|
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)) {
|
if (!empty($expand)) {
|
||||||
$expand = explode(',', $expand);
|
$expand = explode(',', $expand);
|
||||||
@ -229,6 +241,7 @@ final class SummitSerializer extends SilverStripeSerializer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$values['timestamp'] = time();
|
$values['timestamp'] = time();
|
||||||
return $values;
|
return $values;
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,8 @@ final class OAuth2SummitApiTest extends ProtectedApiTest
|
|||||||
public function testGetSummits()
|
public function testGetSummits()
|
||||||
{
|
{
|
||||||
|
|
||||||
$params = ['expand' => 'type'];
|
$start = time();
|
||||||
|
$params = ['relations'=>'none'];
|
||||||
|
|
||||||
$headers = array("HTTP_Authorization" => " Bearer " . $this->access_token);
|
$headers = array("HTTP_Authorization" => " Bearer " . $this->access_token);
|
||||||
$response = $this->action(
|
$response = $this->action(
|
||||||
@ -33,6 +34,9 @@ final class OAuth2SummitApiTest extends ProtectedApiTest
|
|||||||
|
|
||||||
$content = $response->getContent();
|
$content = $response->getContent();
|
||||||
$summits = json_decode($content);
|
$summits = json_decode($content);
|
||||||
|
$end = time();
|
||||||
|
$delta = $end - $start;
|
||||||
|
echo "execution call " . $delta . " seconds ...";
|
||||||
$this->assertTrue(!is_null($summits));
|
$this->assertTrue(!is_null($summits));
|
||||||
$this->assertResponseStatus(200);
|
$this->assertResponseStatus(200);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user