package com.project.website.canvas.client.shared.searchProviders.flickr;
import com.ghusse.dolomite.flickr.Credentials;
import com.ghusse.dolomite.flickr.PhotosResponse;
import com.ghusse.dolomite.flickr.photos.Search;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.project.website.canvas.client.resources.CanvasResources;
import com.project.website.canvas.client.shared.searchProviders.ImageSearchOptions;
import com.project.website.canvas.client.shared.searchProviders.flickr.adapters.PhotosResponseToImageSearchAdapter;
import com.project.website.canvas.client.shared.searchProviders.interfaces.ImageSearchProvider;
import com.project.website.canvas.client.shared.searchProviders.interfaces.MediaSearchResult;
public class FlickrSearchProvider implements ImageSearchProvider
{
protected Search _searcher = null;
protected Credentials _credentials = null;
public FlickrSearchProvider(String apiKey)
{
this._credentials = new Credentials(apiKey);
this._searcher = new Search(_credentials);
}
@Override
public void search(String query, final AsyncCallback<MediaSearchResult> callback)
{
this._searcher.setText(query);
this._searcher.send(new AsyncCallback<PhotosResponse>() {
@Override
public void onSuccess(PhotosResponse result)
{
if (false == result.getStatus())
{
//TODO: Replace with proper exception.
callback.onFailure(new FlickrSearchErrorException(
result.getMessage()));
return;
}
callback.onSuccess(new PhotosResponseToImageSearchAdapter(
_credentials, result));
}
@Override
public void onFailure(Throwable caught)
{
callback.onFailure(caught);
}
});
}
@Override
public void search(String query, ImageSearchOptions searchOptions,
final AsyncCallback<MediaSearchResult> callback)
{
//TODO: Support search options.
this.search(query, callback);
}
@Override
public String getTitle() {
return "Flickr";
}
@Override
public String getIconUrl() {
return CanvasResources.INSTANCE.flickrLogo16().getSafeUri().asString();
}
}