Pergunta
Como posso buscar automaticamente várias páginas de resultados?
Resposta
Às vezes, pode ser conveniente buscar várias páginas de resultados do usuário e colocá-las em um arquivo JSON. Eu criei um script PHP para fazer exatamente isso, que está anexado e colado abaixo.
<?php
$resource = ''; // put the name of the endpoint here, for example organizations, tickets
$start_page = 1; // first page you want to load
$end_page = 10; // last page you want to load (it could take a while if too big)
$subdomain = ''; // your zendesk subdomain
$userpwd = ''; // your zendesk username and password, or username/token and api token. - {username}/token:{token} or {username}:{password}
function makerequest($url, $userpwd) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $userpwd);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
$result = curl_exec($ch);
if (curl_errno($ch)) $result = curl_error($ch);
curl_close($ch);
return $result;
}
function getpages($resource, $start_page, $end_page, $userpwd, $subdomain){
$url = isset($url) ? $url : "https://$subdomain.zendesk.com/api/v2/$resource.json";
$i = $start_page;
$array = Array();
while (1) {
if ($i > $end_page) {
$file = fopen("results.json", "w") or exit("Unable to open file!");
fwrite($file, json_encode(array($resource => $array)));
fclose($file);
break;
}
$results = json_decode(makerequest($url, $userpwd));
$array = array_merge($array, $results->$resource);
$url = $results->next_page;
$i++;
}
}
getpages($resource, $start_page, $end_page, $userpwd, $subdomain);
?>
Baixe esse script ou copie-o e cole-o em um arquivo chamado paginate.php. Preencha as variáveis no início, $resource, $start_page, $end_page, $subdomain e $userpwd, conforme explicado nos comentários do script.
Em seguida, navegue até a pasta onde você baixou o arquivo e, a partir do seu terminal, execute o comando php paginate.php para criar o novo arquivo com seus resultados, em um arquivo chamado results.json. O arquivo foi projetado para substituir e não para anexar.
Depois de receber os resultados, você pode processar conforme necessário. Essas informações podem ser úteis para descobrir quais entradas na matriz eram únicas versus duplicatas. Para fazer isso, envie os resultados para o arquivo results.json, depois execute um dos dois comandos abaixo, o primeiro mostrando a contagem de resultados únicos e o segundo mostrando os valores únicos reais:
cat results.json | jq '.' | grep '"id"' > sort > uniq -c > uniq.txt
cat results.json | jq '.' | grep '"id"' > sort > uniq > uniq.txt
O uso desses comandos também requer que você tenha o jq, que pode ser baixado de: https://stedolan.github.io/jq/download/.
Além disso, essas informações podem ser úteis para exportar os dados para importação em um novo sistema.
Aviso sobre a tradução: este artigo foi traduzido por um software de tradução automática para oferecer a você uma compreensão básica do conteúdo. Medidas razoáveis foram tomadas para fornecer uma tradução precisa, no entanto, a Zendesk não garante a precisão da tradução.
Em caso de dúvidas relacionadas à precisão das informações contidas no artigo traduzido, consulte a versão oficial do artigo em inglês.