package com.dataart.android.devicehive.commands;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import com.dataart.android.devicehive.ApiInfo;
import com.dataart.android.devicehive.network.DeviceHiveResultReceiver;
import com.dataart.android.devicehive.network.JsonNetworkCommand;
import com.google.gson.Gson;
/**
* Gets meta-information of the current API. As a result returns {@link ApiInfo}
* instance.
*/
public class GetApiInfoCommand extends JsonNetworkCommand {
private final static String NAMESPACE = GetApiInfoCommand.class.getName();
private static final String API_INFO_KEY = NAMESPACE
.concat(".API_INFO_KEY");
/**
* Construct a new command.
*/
public GetApiInfoCommand() {
}
@Override
protected String toJson(Gson gson) {
return null;
}
@Override
protected RequestType getRequestType() {
return RequestType.GET;
}
@Override
protected String getRequestPath() {
return "info";
}
public static Parcelable.Creator<GetApiInfoCommand> CREATOR = new Parcelable.Creator<GetApiInfoCommand>() {
@Override
public GetApiInfoCommand[] newArray(int size) {
return new GetApiInfoCommand[size];
}
@Override
public GetApiInfoCommand createFromParcel(Parcel source) {
return new GetApiInfoCommand();
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
@Override
protected int fromJson(final String response, final Gson gson,
final Bundle resultData) {
final ApiInfo apiInfo = gson.fromJson(response, ApiInfo.class);
resultData.putParcelable(API_INFO_KEY, apiInfo);
return DeviceHiveResultReceiver.MSG_HANDLED_RESPONSE;
}
/**
* Get {@link ApiInfo} object from response {@link Bundle} container.
*
* @param resultData
* {@link Bundle} object containing required response data.
* @return {@link ApiInfo} instance.
*/
public final static ApiInfo getApiInfo(Bundle resultData) {
return resultData.getParcelable(API_INFO_KEY);
}
}