package jp.co.cyberagent.stf.query;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.Context;
import android.util.Log;
import com.google.protobuf.GeneratedMessageLite;
import com.google.protobuf.InvalidProtocolBufferException;
import java.util.ArrayList;
import jp.co.cyberagent.stf.proto.Wire;
public class GetAccountsResponder extends AbstractResponder {
public GetAccountsResponder(Context context) {
super(context);
}
@Override
public GeneratedMessageLite respond(Wire.Envelope envelope) throws InvalidProtocolBufferException {
Wire.GetAccountsRequest request =
Wire.GetAccountsRequest.parseFrom(envelope.getMessage());
String accountType = null;
ArrayList<String> accountsName = new ArrayList<String>();
AccountManager am = AccountManager.get(context);
if(request.hasType()) {
accountType = request.getType();
}
Account[] accounts = am.getAccountsByType(accountType);
for (Account account : accounts) {
accountsName.add(account.name);
}
return Wire.Envelope.newBuilder()
.setId(envelope.getId())
.setType(Wire.MessageType.GET_ACCOUNTS)
.setMessage(Wire.GetAccountsResponse.newBuilder()
.setSuccess(true)
.addAllAccounts(accountsName)
.build()
.toByteString())
.build();
}
@Override
public void cleanup() {
// No-op
}
}