JavaFX/Classes/api/fetchSources.java

54 lines
1.3 KiB
Java

package Classes.api;
import org.json.JSONArray;
import org.json.JSONObject;
import Classes.Event;
import Interfaces.Callback;
import model.NewsListModel;
public class fetchSources implements Callback{
private NewsListModel context;
private String nextQuery;
public fetchSources(NewsListModel context){
this.context = context;
this.nextQuery = nextQuery;
}
@Override
public void onSuccess(JSONObject response){
//on récupère toutes les sources (dans la limite de 20 sources)
JSONArray arr = response.getJSONArray("sources");
for(int i = 0;i<arr.length() && i<20;i++){
String source_i = (JSONObject) arr.get(i);
this.context.sources.add( source_i.getString("id") );
}
this.context.isRetreivingSources = false;
this.context.apiError = false;
//tout s'est bien passé, on peut notifier du succès
this.context.notifyObservers(new Event("NewsModel", "SourcesUpdated"));
}
@Override
public void onError(String errDesc) {
//on notifie de l'échec et on garde en mémoire le fait que l'on a échoué (afin d'annuler la recherche de news qui va suivre)
this.context.isRetreivingSources = false;
this.context.apiError = true;
this.context.notifyObservers(new Event("NewsModel", "SourcesUpdateFailed"));
}
}