Obtenga el número de problemas abiertos de GitHub usando la API de GitHub

Estoy desarrollando una aplicación php donde el usuario ingresa un enlace a cualquier repository público de GitHub y la salida será

(i) Número total de problemas abiertos

(ii) Número de problemas abiertos que se abrieron en las últimas 24 horas

(iii) Número de problemas abiertos que se abrieron hace más de 24 horas pero hace less de 7 días

(iv) Número de problemas abiertos que se abrieron hace más de 7 días

El código para imprimir el (i) Número total de problemas abiertos se proporciona a continuación utilizando github api y php curl y está funcionando bien.
Pero no tengo idea de cómo imprimir los otros tres puntos (ii), (iii) y (iv) .
Cualquier ayuda con respecto a esto será apreciada. Gracias por adelantado.

<?php //Test url $url = "https://api.github.com/repos/anandkgpt03/test"; //Initiate curl $ch = curl_init(); //Set the url curl_setopt($ch, CURLOPT_URL,$url); //Set the User Agent as username curl_setopt($ch, CURLOPT_USERAGENT, "anandkgpt03"); //Accept the response as json curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Accept: application/json')); //Will return the response, if false it print the response curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Execute $result=curl_exec($ch); // Closing curl_close($ch); //Decode the json in associative array $new_result=json_decode($result,true); echo "Total Number of Open Issues:".$new_result["open_issues_count"]; ?> 

Puedes get lo que quieras usando la API de GitHub.

Sigue estos pasos:

  1. Visite la url de problemas con la opción de state open : https://api.github.com/repos/{name}/support/issues?q=state:open .
  2. En los resultados (en formatting JSON) busque la created_at time created_at .
  3. Compare los valores antes mencionados con la timestamp actual y clasifique estas salidas utilizando cualquier function de date y hora.

¡Espero que esto ayude!

He utilizado desde el parámetro disponible en la API de GitHub, que solo devuelven los problemas actualizados a esa hora o después, lo que ayuda a get la cantidad de problemas abiertos abiertos después de cualquier momento.

Esta url puede ser útil para leer más al respecto: https://developer.github.com/v3/issues/

Debajo está el código de trabajo correcto de mi pregunta.

 <html> <head> <title></title> </head> <body> <form action="" method="POST"> <input type="text" name="url" placeholder="Full URL of GitHub repository" size="60"> <input type="submit" name="submitButton"> </form> </body> </html> <?php if(isset($_POST['submitButton'])) { //Example-> https://github.com/Shippable/support/issues $input_url = $_POST['url']; //Break the input url in array format $input_url_array = explode('/',$input_url); //Validate the input url if(strcmp($input_url_array[0],"https:")||strcmp($input_url_array[1],"")||strcmp($input_url_array[2],"github.com")||empty($input_url_array[3])||empty($input_url_array[4])) { die("</br>Invalid Url !!! Url should be in format <b>https://github.com/{org_name or username}/{repo_name}/</b><br>"); } //url for the github Api, $input_url_array[3] contain organisation or username, put_url_array[3] contain repository name $url = "https://api.github.com/repos/".$input_url_array[3]."/".$input_url_array[4]; //call the function and receive the result in associative array format $result = curlRequestOnGitApi($url); //Get total no of open issues using the $result array $total_open_issues = $result["open_issues_count"]; echo "<br>Total Open Issues:<b>".$total_open_issues."</b><br>"; //Date and Time 1 day or 24 hours ago in ISO 8601 Format $time_last24hr = date('Ymd\TH:i:sZ\Z', strtotime('-1 day', time())); //url for the github Api with since parameter equal to time of last 24 hrs that return only issues updated at or after this time $url = "https://api.github.com/repos/".$input_url_array[3]."/".$input_url_array[4]."/issues?since=".$time_last24hr; //call the function and receive the result in associative array format $result = curlRequestOnGitApi($url); //Get no of open issues that were opened in last 24 hours $issues_last24hr = count($result); echo "Number of open issues that were opened in the last 24 hours:<b>".$issues_last24hr."</b><br>"; //Date and Time 1 day or 24 hours ago in ISO 8601 Format $time_7daysago = date('Ymd\TH:i:sZ\Z', strtotime('-7 day', time())); //url for the github Api with since parameter equal to time of 7 days ago that return only issues updated at or after this time $url = "https://api.github.com/repos/".$input_url_array[3]."/".$input_url_array[4]."/issues?since=".$time_7daysago; //call the function and receive the result in associative array format $result = curlRequestOnGitApi($url); //Get no of open issues that were opened in 7 days ago $issues_last7days = count($result); echo "Number of open issues that were opened more than 24 hours ago but less than 7 days ago:<b>".($issues_last7days-$issues_last24hr)."</b><br>"; echo "Number of open issues that were opened more than 7 days ago:<b>".($total_open_issues-$issues_last7days)."</b><br>"; } function curlRequestOnGitApi($url) { $ch = curl_init(); //Set the url curl_setopt($ch, CURLOPT_URL,$url); //Set the User Agent as username curl_setopt($ch, CURLOPT_USERAGENT, "anyusername"); //Accept the response as json curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Accept: application/json')); //Will return the response, if false it print the response curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Execute $result=curl_exec($ch); // Closing curl_close($ch); //Decode the json in array $new_result=json_decode($result,true); //Return array return $new_result; } ?>