22
33import com .mapzen .pelias .gson .Result ;
44
5- import retrofit .Callback ;
6- import retrofit .RequestInterceptor ;
7- import retrofit .RestAdapter ;
5+ import okhttp3 .OkHttpClient ;
6+ import okhttp3 .logging .HttpLoggingInterceptor ;
7+ import retrofit2 .Callback ;
8+ import retrofit2 .Retrofit ;
9+ import retrofit2 .converter .gson .GsonConverterFactory ;
810
911/**
1012 * Main class for interaction with Pelias.
1113 */
1214public class Pelias {
13- public static final String DEFAULT_SEARCH_ENDPOINT = "https://search.mapzen.com/v1/ " ;
15+ public static final String DEFAULT_SEARCH_ENDPOINT = "https://search.mapzen.com/" ;
1416
1517 private PeliasService service ;
1618 private PeliasLocationProvider locationProvider ;
1719 private PeliasRequestHandler requestHandler ;
1820 private String endpoint = DEFAULT_SEARCH_ENDPOINT ;
19- private RestAdapter .LogLevel logLevel = RestAdapter .LogLevel .NONE ;
20- private RestAdapter restAdapter ;
21+ private boolean debug = false ;
22+ private Retrofit retrofit ;
23+ private RequestInterceptor requestInterceptor ;
2124
2225 /**
2326 * Constructs a {@link Pelias} object configured to use the default search endpoint for requests.
@@ -43,27 +46,26 @@ public Pelias(String url) {
4346 }
4447
4548 private void initService () {
46- restAdapter = new RestAdapter .Builder ()
47- .setEndpoint (endpoint )
48- .setLogLevel (logLevel )
49- .setRequestInterceptor (new RequestInterceptor () {
50- @ Override public void intercept (RequestFacade request ) {
51- if (requestHandler != null ) {
52- if (requestHandler .headersForRequest () != null ) {
53- for (String key : requestHandler .headersForRequest ().keySet ()) {
54- request .addHeader (key , requestHandler .headersForRequest ().get (key ));
55- }
56- }
57- if (requestHandler .queryParamsForRequest () != null ) {
58- for (String key : requestHandler .queryParamsForRequest ().keySet ()) {
59- request .addQueryParam (key , requestHandler .queryParamsForRequest ().get (key ));
60- }
61- }
62- }
63- }
64- })
49+ requestInterceptor = new RequestInterceptor ();
50+ if (requestHandler != null ) {
51+ requestInterceptor .setRequestHandler (requestHandler );
52+ }
53+
54+ final OkHttpClient .Builder clientBuilder = new OkHttpClient .Builder ();
55+ clientBuilder .addNetworkInterceptor (requestInterceptor );
56+
57+ if (debug ) {
58+ final HttpLoggingInterceptor logging = new HttpLoggingInterceptor ();
59+ logging .setLevel (HttpLoggingInterceptor .Level .BODY );
60+ clientBuilder .addNetworkInterceptor (logging );
61+ }
62+
63+ retrofit = new Retrofit .Builder ()
64+ .baseUrl (endpoint )
65+ .client (clientBuilder .build ())
66+ .addConverterFactory (GsonConverterFactory .create ())
6567 .build ();
66- this .service = restAdapter .create (PeliasService .class );
68+ this .service = retrofit .create (PeliasService .class );
6769 }
6870
6971 /**
@@ -72,6 +74,9 @@ private void initService() {
7274 */
7375 public void setRequestHandler (PeliasRequestHandler handler ) {
7476 requestHandler = handler ;
77+ if (requestInterceptor != null ) {
78+ requestInterceptor .setRequestHandler (handler );
79+ }
7580 }
7681
7782 /**
@@ -88,7 +93,7 @@ public void setEndpoint(String endpoint) {
8893 * @param debug
8994 */
9095 public void setDebug (boolean debug ) {
91- this .logLevel = debug ? RestAdapter . LogLevel . FULL : RestAdapter . LogLevel . NONE ;
96+ this .debug = debug ;
9297 initService ();
9398 }
9499
@@ -106,7 +111,7 @@ public void suggest(String query, Callback<Result> callback) {
106111 * point for results The callback will be notified upon success or failure of the query.
107112 */
108113 public void suggest (String query , double lat , double lon , Callback <Result > callback ) {
109- service .getSuggest (query , lat , lon , callback );
114+ service .getSuggest (query , lat , lon ). enqueue ( callback );
110115 }
111116
112117 /**
@@ -124,8 +129,8 @@ public void search(String query, Callback<Result> callback) {
124129 * the query.
125130 */
126131 public void search (String query , BoundingBox box , Callback <Result > callback ) {
127- service .getSearch (query , box .getMinLat (), box .getMinLon (), box .getMaxLat (), box .getMaxLon (),
128- callback );
132+ service .getSearch (query , box .getMinLat (), box .getMinLon (), box .getMaxLat (), box .getMaxLon ())
133+ . enqueue ( callback );
129134 }
130135
131136 /**
@@ -134,23 +139,23 @@ public void search(String query, BoundingBox box, Callback<Result> callback) {
134139 * the query.
135140 */
136141 public void search (String query , double lat , double lon , Callback <Result > callback ) {
137- service .getSearch (query , lat , lon , callback );
142+ service .getSearch (query , lat , lon ). enqueue ( callback );
138143 }
139144
140145 /**
141146 * Issues a reverse geocode request given the lat/lon. The callback will be notified upon success
142147 * or failure of the query.
143148 */
144149 public void reverse (double lat , double lon , Callback <Result > callback ) {
145- service .getReverse (lat , lon , callback );
150+ service .getReverse (lat , lon ). enqueue ( callback );
146151 }
147152
148153 /**
149154 * Issues a place request for a given global identifier. The callback will be notified upon
150155 * success or failure of the query.
151156 */
152157 public void place (String gid , Callback <Result > callback ) {
153- service .getPlace (gid , callback );
158+ service .getPlace (gid ). enqueue ( callback );
154159 }
155160
156161 /**
@@ -174,10 +179,6 @@ public String getEndpoint() {
174179 * @return
175180 */
176181 public boolean getDebug () {
177- if (restAdapter == null ) {
178- return false ;
179- }
180- return (restAdapter .getLogLevel () == RestAdapter .LogLevel .FULL );
182+ return debug ;
181183 }
182-
183184}
0 commit comments