/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.dhaval.appstatweb.marketsearch;

import com.gc.android.market.api.MarketSession;
import com.gc.android.market.api.MarketSession.Callback;
import com.gc.android.market.api.model.Market.App;
import com.gc.android.market.api.model.Market.AppsRequest;
import com.gc.android.market.api.model.Market.AppsResponse;
import com.gc.android.market.api.model.Market.ResponseContext;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author dhaval
 */
public class AppMarketSearch {

    private String userName;
    private String password;
    private MarketSession session;

    public AppMarketSearch(String userName, String password) {
        this.userName = userName;
        this.password = password;

        session = new MarketSession();
        session.login(userName, password);
    }

    public void searchByPackage(String packageName, final AppSearchCallback callback) {
        String query = "pname:" + packageName;
        search(query, callback);
    }

    public void search(String name, final AppSearchCallback callback) {
        String query = name;
        AppsRequest appsRequest = AppsRequest.newBuilder().setQuery(query).setStartIndex(0).setEntriesCount(10).setWithExtendedInfo(true).build();

        session.append(appsRequest, new Callback<AppsResponse>() {

            @Override
            public void onResult(ResponseContext context, AppsResponse response) {
                List<MarketApp> apps = new ArrayList<MarketApp>();
                for(App app : response.getAppList()){
                    MarketApp mapp = new MarketApp(app.getId(), app.getTitle(), app.getPackageName(), app.getRating(), app.getRatingsCount(), app.getExtendedInfo().getDownloadsCountText());
                    apps.add(mapp);
                }
                callback.searchResult(apps);
            }
        });
        session.flush();
    }
}
