Skip to content

Instantly share code, notes, and snippets.

@calvinnr7
Created June 24, 2016 02:37
Show Gist options
  • Save calvinnr7/643ac2eddba04836a5b35b012842462b to your computer and use it in GitHub Desktop.
Save calvinnr7/643ac2eddba04836a5b35b012842462b to your computer and use it in GitHub Desktop.
public class AsteroidsController {
//Aura enabled needs to be static
@AuraEnabled
public static List<AsteroidWrapper> getAsteroids(String fromDate, String toDate) {
DateTime startDate;
DateTime endDate;
List<AsteroidWrapper> asteroidList = new List<AsteroidWrapper>();
System.debug('***fromDate is: ' + fromDate);
System.debug('***toDate is: ' + toDate);
if(String.isBlank(fromDate) && String.isBlank(toDate))
{
//Yesterday
startDate = Date.today();
//Yesterday + 7 days
endDate = startDate.addDays(3);
}
else
{
//Locale datetime format issue- so format incoming date consistently as yyyy-MM-dd
List<String> dateParts = fromDate.split('-');
startDate = DateTime.newInstance(Integer.valueOf(dateParts[0]),Integer.valueOf(dateParts[1]),Integer.valueOf(dateParts[2]));
dateParts = toDate.split('-');
endDate = DateTime.newInstance(Integer.valueOf(dateParts[0]),Integer.valueOf(dateParts[1]),Integer.valueOf(dateParts[2]));
}
System.debug('***startDate is: ' + startDate);
System.debug('***endDate is: ' + endDate);
String endpoint = 'https://api.nasa.gov/neo/rest/v1/feed?start_date='+startDate.format('yyyy-MM-dd')+'&end_date='+endDate.format('yyyy-MM-dd')+'&api_key=REPLACE_WITH_YOUR_KEY';
System.debug('***endpoint is: ' + endpoint);
HttpRequest req = new HttpRequest();
//req.setEndpoint('https://api.nasa.gov/neo/rest/v1/feed?start_date=2016-06-06&end_date=2016-06-13&api_key=REPLACE_WITH_YOUR_KEY');
req.setEndpoint(endpoint);
req.setMethod('GET');
Http http = new Http();
HttpResponse response = http.send(req);
String resJSON = response.getBody();
//System.debug('resJSON is: ' + resJSON);
//Parse the JSON response from NASA - YAY!!!
JSONParser parser = JSON.createParser(response.getBody());
while (parser.nextToken() != null) {
if (parser.getCurrentToken() == JSONToken.START_ARRAY) {
while (parser.nextToken() != null) {
if (parser.getCurrentToken() == JSONToken.START_OBJECT) {
AsteroidData ad = (AsteroidData)parser.readValueAs(AsteroidData.class);
System.debug('AsteroidData :' + ad);
//Add to the list
if(ad.name != null)
{
AsteroidWrapper astro = new AsteroidWrapper();
astro.str_Asteroid_Name = ad.Name;
astro.str_Magnitude = ad.absolute_magnitude_h;
astro.str_Estimated_Diameter_Max_Kms = ad.estimated_diameter.kilometers.estimated_diameter_max;
astro.isAsteroidDangerous = (!ad.is_potentially_hazardous_asteroid)? 'No':'Yes';
astro.str_closest_Approach_Earth_Date = ad.close_approach_data[0].close_approach_date;
astro.str_velocity_per_sec_kms = ad.close_approach_data[0].relative_velocity.kilometers_per_second;
astro.str_misses_Earth_by_kms = ad.close_approach_data[0].miss_distance.kilometers;
astro.str_NASA_URL = ad.nasa_jpl_url;
asteroidList.add(astro);
}
}
}
}
}
//System.debug('asteroidList is:' + asteroidList);
//System.debug('asteroidList.size() is:' + asteroidList.size());
return asteroidList;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment