public function listSecurityGroupRules($id = null, ListSecurityGroupRulesFilter $filter = null, array $fields = null)
{
$result = null;
$detailed = $id !== null ? sprintf("/%s", $this->escape($id)) : '';
if (!empty($fields)) {
$acceptedFields = ['id', 'security_group_id', 'tenant_id', 'direction', 'ethertype', 'port_range_max', 'port_range_min', 'protocol', 'remote_group_id', 'remote_ip_prefix'];
$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, '/security-group-rules' . $detailed . $querystr);
if ($response->hasError() === false) {
$result = json_decode($response->getContent());
if (empty($detailed)) {
$result = new DefaultPaginationList($this->service, 'security_group_rules', $result->security_group_rules, isset($result->security_group_rules_links) ? $result->security_group_rules_links : null);
} else {
$result = $result->security_group_rule;
}
}
return $result;
}