Skip to content

Instantly share code, notes, and snippets.

@amit-bhandari
Last active April 14, 2019 14:44
Show Gist options
  • Save amit-bhandari/7d3561982b8be7848e0135942f729a6e to your computer and use it in GitHub Desktop.
Save amit-bhandari/7d3561982b8be7848e0135942f729a6e to your computer and use it in GitHub Desktop.
class QuoteRepository {
private QuoteAPI quoteAPI;
private QuoteDAO quoteDAO;
private Executor executor;
QuoteRepository(){
this.executor = Executors.newSingleThreadExecutor();
MyQuoteDB db = Room.databaseBuilder(context,
MyQuoteDB.class, "database-name").build();
quoteDAO=db.quoteDAO();
}
// …
LiveData<Quote> getQuote(String category, int count) {
refreshQuote(category);
return quoteDAO.getQuote();
}
private void refreshQuote(String category){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl("https://andruxnet-random-famous-quotes.p.mashape.com/")
.client(client)
.addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit = builder.build();
quoteAPI = retrofit.create(QuoteAPI.class);
quoteAPI.getQuote(category, 1).enqueue(new Callback<Quote> () {
@Override
public void onResponse(Call<Quote> call, final Response<Quote> response) {
//update the db once fresh data is available
Executors.newSingleThreadExecutor().execute(new Runnable() {
@Override
public void run() {
quoteDAO.save(response.body());
}
});
}
@Override
public void onFailure(Call<Quote> call, Throwable t) {
Log.v(Constants.TAG, t.getMessage());
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment