/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.api; import java.io.IOException; import android.content.Context; import android.content.Intent; import android.text.TextUtils; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.content.EsPostsData; import com.galaxy.meetup.client.android.network.PlusiOperation; import com.galaxy.meetup.client.android.network.http.HttpOperation; import com.galaxy.meetup.client.util.SearchUtils; import com.galaxy.meetup.server.client.domain.ActivityFilters; import com.galaxy.meetup.server.client.domain.ActivityRequestData; import com.galaxy.meetup.server.client.domain.ClientEmbedOptions; import com.galaxy.meetup.server.client.domain.FieldRequestOptions; import com.galaxy.meetup.server.client.domain.SearchQuery; import com.galaxy.meetup.server.client.domain.UpdateFilter; import com.galaxy.meetup.server.client.domain.request.SearchQueryRequest; import com.galaxy.meetup.server.client.domain.response.SearchQueryResponse; import com.galaxy.meetup.server.client.v2.request.Request; import com.galaxy.meetup.server.client.v2.response.Response; /** * * @author sihai * */ public class SearchActivitiesOperation extends PlusiOperation { private final String mContinuationToken; private final String mQuery; public SearchActivitiesOperation(Context context, EsAccount esaccount, String s, String s1, Intent intent, HttpOperation.OperationListener operationlistener) { super(context, esaccount, "searchquery", intent, operationlistener, SearchQueryResponse.class); mQuery = s; mContinuationToken = s1; } protected final void handleResponse(Response response) throws IOException { SearchQueryResponse searchqueryresponse = (SearchQueryResponse)response; if(searchqueryresponse.results != null && searchqueryresponse.results.activityResults != null) { EsPostsData.updateStreamActivities(mContext, mAccount, SearchUtils.getSearchKey(mQuery), searchqueryresponse.results.activityResults.stream.update, "DEFAULT", mContinuationToken, searchqueryresponse.results.activityResults.shownActivitiesBlob, null); SearchUtils.insertSearchResults(mContext, mAccount, mQuery, searchqueryresponse.results.activityResults.shownActivitiesBlob); } else { SearchUtils.insertSearchResults(mContext, mAccount, null, null); } } protected final Request populateRequest() { SearchQueryRequest searchqueryrequest = new SearchQueryRequest(); searchqueryrequest.searchQuery = new SearchQuery(); searchqueryrequest.searchQuery.queryText = mQuery; searchqueryrequest.searchQuery.sort = "RECENT"; searchqueryrequest.searchQuery.filter = "TACOS"; searchqueryrequest.activityRequestData = new ActivityRequestData(); if(!TextUtils.isEmpty(mContinuationToken)) searchqueryrequest.activityRequestData.shownActivitiesBlob = mContinuationToken; searchqueryrequest.activityRequestData.activityFilters = new ActivityFilters(); searchqueryrequest.activityRequestData.activityFilters.fieldRequestOptions = new FieldRequestOptions(); searchqueryrequest.activityRequestData.activityFilters.fieldRequestOptions.includeLegacyMediaData = Boolean.FALSE; searchqueryrequest.activityRequestData.activityFilters.fieldRequestOptions.includeEmbedsData = Boolean.TRUE; searchqueryrequest.activityRequestData.activityFilters.updateFilter = new UpdateFilter(); searchqueryrequest.activityRequestData.activityFilters.updateFilter.includeNamespace = EsPostsData.getStreamNamespaces(false); searchqueryrequest.embedOptions = new ClientEmbedOptions(); searchqueryrequest.embedOptions.includeType = EsPostsData.getEmbedsWhitelist(); return searchqueryrequest; } }