package cgeo.geocaching.connector.trackable;
import cgeo.geocaching.R;
import cgeo.geocaching.activity.TokenAuthorizationActivity;
import cgeo.geocaching.network.Network;
import cgeo.geocaching.settings.Settings;
import okhttp3.Response;
import org.apache.commons.lang3.StringUtils;
import android.support.annotation.Nullable;
import java.util.regex.Pattern;
public class GeokretyAuthorizationActivity extends TokenAuthorizationActivity {
private static final Pattern PATTERN_IS_ERROR = Pattern.compile("error ([\\d]+)");
private static final Pattern PATTERN_TOKEN = Pattern.compile("([\\w]+)");
public static final TokenAuthParameters GEOKRETY_TOKEN_AUTH_PARAMS = new TokenAuthParameters(
GeokretyConnector.URL + "/api-login2secid.php",
"login",
"password");
@Override
protected String getCreateAccountUrl() {
return GeokretyConnector.getCreateAccountUrl();
}
@Override
protected void setToken(final String token) {
Settings.setGeokretySecId(token);
}
@Override
protected String getToken() {
return Settings.getGeokretySecId();
}
@Override
protected String getAuthTitle() {
return res.getString(R.string.init_geokrety);
}
@Override
protected Pattern getPatternIsError() {
return PATTERN_IS_ERROR;
}
@Override
protected Pattern getPatternToken() {
return PATTERN_TOKEN;
}
@Override
protected String getAuthDialogCompleted() {
return res.getString(R.string.auth_dialog_completed_geokrety, getAuthTitle());
}
@Override
protected String getExtendedErrorMsg(final Response response) {
final String line = Network.getResponseData(response);
return getExtendedErrorMsg(line);
}
@Override
protected String getExtendedErrorMsg(@Nullable final String response) {
if (StringUtils.equals(response, "1")) {
return res.getString(R.string.err_auth_geokrety_bad_password);
}
return res.getString(R.string.err_auth_geokrety_unknown, getAuthTitle(), response);
}
}