@@ -161,6 +161,28 @@ public List<UserAgent> getBulkUserAgent(String[] uaStrings) {
161161 return userAgents ;
162162 }
163163
164+ public Astronomy getAstronomy () {
165+ return getAstronomy (null );
166+ }
167+
168+ public Astronomy getAstronomy (AstronomyParams params ) {
169+ final JSONObject apiResponse =
170+ (JSONObject )
171+ callAPIEndpoint ("astronomy" ,
172+ buildAstronomyUrlParams (params ),
173+ "GET" ,
174+ null ,
175+ false );
176+ final Astronomy astronomy ;
177+
178+ try {
179+ astronomy = new Astronomy (apiResponse );
180+ } catch (IllegalArgumentException e ) {
181+ throw new IPGeolocationError (e );
182+ }
183+ return astronomy ;
184+ }
185+
164186 private String buildGeolocationUrlParams (final GeolocationParams params ) {
165187 final StringBuilder urlParams = new StringBuilder ();
166188
@@ -259,6 +281,43 @@ private String buildTimezoneUrlParams(final TimezoneParams params) {
259281 return urlParams .toString ();
260282 }
261283
284+ private String buildAstronomyUrlParams (final AstronomyParams params ) {
285+ final StringBuilder urlParams = new StringBuilder ();
286+
287+ urlParams .append ("apiKey=" );
288+ urlParams .append (apiKey );
289+
290+ if (!Objects .isNull (params )) {
291+ if (!Strings .isNullOrEmpty (params .getIpAddress ())) {
292+ urlParams .append ("&ip=" );
293+ urlParams .append (params .getIpAddress ());
294+ }
295+
296+ if (!Strings .isNullOrEmpty (params .getLocation ())) {
297+ urlParams .append ("&location=" );
298+ urlParams .append (params .getLocation ());
299+ }
300+
301+ if (!Objects .isNull (params .getLatitude ()) && !Objects .isNull (params .getLongitude ())) {
302+ urlParams .append ("&lat=" );
303+ urlParams .append (params .getLatitude ());
304+ urlParams .append ("&long=" );
305+ urlParams .append (params .getLongitude ());
306+ }
307+
308+ if (!Strings .isNullOrEmpty (params .getLang ())) {
309+ urlParams .append ("&lang=" );
310+ urlParams .append (params .getLang ());
311+ }
312+
313+ if (!Strings .isNullOrEmpty (params .getDate ())) {
314+ urlParams .append ("&date=" );
315+ urlParams .append (params .getDate ());
316+ }
317+ }
318+ return urlParams .toString ();
319+ }
320+
262321 private Object callAPIEndpoint (
263322 final String endpoint ,
264323 final String requestParams ,
0 commit comments