public function listRouters($routerId = null, ListRoutersFilter $filter = null, array $fields = null)
{
$result = null;
$detailed = $routerId !== null ? sprintf("/%s", $this->escape($routerId)) : '';
if (!empty($fields)) {
$acceptedFields = array('status', 'name', 'admin_state_up', 'id', 'tenant_id', 'external_gateway_info', 'admin_state_up');
$fields = join('&fields=', array_map("rawurlencode", array_intersect(array_values($fields), $acceptedFields)));
}
$querystr = ($filter !== null && $detailed == '' ? $filter->getQueryString() : '') . ($fields ? '&fields=' . $fields : '');
$querystr = !empty($querystr) ? '?' . ltrim($querystr, '&') : '';
$response = $this->getClient()->call($this->service, '/routers' . $detailed . $querystr);
if ($response->hasError() === false) {
$result = json_decode($response->getContent());
if (empty($detailed)) {
$result = new DefaultPaginationList($this->service, 'routers', $result->routers, isset($result->routers_links) ? $result->routers_links : null);
} else {
$result = $result->router;
}
}
return $result;
}