diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2014-11-10 00:09:19 +0100 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2014-11-10 00:09:52 +0100 |
| commit | c467e0369916d5462f00bc43dc494740c4b99812 (patch) | |
| tree | d4ab23616aa57cdab0eb0ca18beb7a1573cd5bab | |
| parent | 6f4f2209dae88e058d2ea0508b91478bdfcac3c9 (diff) | |
| download | cgeo-c467e0369916d5462f00bc43dc494740c4b99812.zip cgeo-c467e0369916d5462f00bc43dc494740c4b99812.tar.gz cgeo-c467e0369916d5462f00bc43dc494740c4b99812.tar.bz2 | |
fix #4470: recognize charter members as premium members
5 files changed, 9 insertions, 8 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/GCConstants.java b/main/src/cgeo/geocaching/connector/gc/GCConstants.java index 2adad4b..6c93543 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCConstants.java +++ b/main/src/cgeo/geocaching/connector/gc/GCConstants.java @@ -72,7 +72,8 @@ public final class GCConstants { public static final Pattern PATTERN_LOGIN_NAME = Pattern.compile("\"SignedInProfileLink\">(.*?)</a>"); public static final Pattern PATTERN_MEMBER_STATUS = Pattern.compile("<span id=\"ctl00_litPMLevel\">([^<]+)</span>"); public static final String MEMBER_STATUS_RENEW = "<a id=\"ctl00_hlRenew"; - public static final String MEMBER_STATUS_PM = "Premium Member"; + public static final String MEMBER_STATUS_PREMIUM = "Premium Member"; + public static final String MEMBER_STATUS_CHARTER = "Charter Member"; /** Use replaceAll("[,.]","") on the resulting string before converting to an int */ public static final Pattern PATTERN_CACHES_FOUND = Pattern.compile("<strong[^>]*>.*?([\\d,.]+) Caches? Found", Pattern.DOTALL); public static final Pattern PATTERN_AVATAR_IMAGE_PROFILE_PAGE = Pattern.compile("src=\"(https?://(imgcdn\\.geocaching\\.com|[^>\"]+\\.cloudfront\\.net)/avatar/[0-9a-f-]+\\.jpg)\"[^>]*alt=\""); diff --git a/main/src/cgeo/geocaching/connector/gc/GCLogin.java b/main/src/cgeo/geocaching/connector/gc/GCLogin.java index ff09bb9..9753f12 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCLogin.java +++ b/main/src/cgeo/geocaching/connector/gc/GCLogin.java @@ -188,7 +188,7 @@ public class GCLogin extends AbstractLogin { setActualCachesFound(cachesCount); Settings.setGCMemberStatus(TextUtils.getMatch(page, GCConstants.PATTERN_MEMBER_STATUS, true, null)); if (page.contains(GCConstants.MEMBER_STATUS_RENEW)) { - Settings.setGCMemberStatus(GCConstants.MEMBER_STATUS_PM); + Settings.setGCMemberStatus(GCConstants.MEMBER_STATUS_PREMIUM); } return true; } @@ -243,7 +243,7 @@ public class GCLogin extends AbstractLogin { Settings.setGCMemberStatus(TextUtils.getMatch(profile, GCConstants.PATTERN_MEMBER_STATUS, true, null)); if (profile.contains(GCConstants.MEMBER_STATUS_RENEW)) { - Settings.setGCMemberStatus(GCConstants.MEMBER_STATUS_PM); + Settings.setGCMemberStatus(GCConstants.MEMBER_STATUS_PREMIUM); } setActualCachesFound(Integer.parseInt(TextUtils.getMatch(profile, GCConstants.PATTERN_CACHES_FOUND, true, "-1").replaceAll("[,.]", ""))); diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java index 79ee46b..8904b8f 100644 --- a/main/src/cgeo/geocaching/settings/Settings.java +++ b/main/src/cgeo/geocaching/settings/Settings.java @@ -332,8 +332,9 @@ public class Settings { } public static boolean isGCPremiumMember() { - // Basic Member, Premium Member, ??? - return GCConstants.MEMBER_STATUS_PM.equalsIgnoreCase(Settings.getGCMemberStatus()); + final String memberStatus = Settings.getGCMemberStatus(); + return StringUtils.equalsIgnoreCase(memberStatus, GCConstants.MEMBER_STATUS_PREMIUM) || + StringUtils.equalsIgnoreCase(memberStatus, GCConstants.MEMBER_STATUS_CHARTER); } public static String getGCMemberStatus() { diff --git a/tests/src/cgeo/geocaching/SettingsTest.java b/tests/src/cgeo/geocaching/SettingsTest.java index 4c342b3..21e0557 100644 --- a/tests/src/cgeo/geocaching/SettingsTest.java +++ b/tests/src/cgeo/geocaching/SettingsTest.java @@ -2,7 +2,6 @@ package cgeo.geocaching; import static org.assertj.core.api.Assertions.assertThat; -import cgeo.geocaching.connector.gc.GCConstants; import cgeo.geocaching.maps.mapsforge.MapsforgeMapProvider; import cgeo.geocaching.settings.Settings; @@ -29,7 +28,7 @@ public class SettingsTest extends ActivityInstrumentationTestCase2<MainActivity> public static void testSettings() { // unfortunately, several other tests depend on being a premium member and will fail if run by a basic member - assertThat(Settings.getGCMemberStatus()).isEqualTo(GCConstants.MEMBER_STATUS_PM); + assertThat(Settings.isGCPremiumMember()).isTrue(); } public static void testDeviceHasNormalLogin() { diff --git a/tests/src/cgeo/geocaching/utils/TextUtilsTest.java b/tests/src/cgeo/geocaching/utils/TextUtilsTest.java index 29c4864..e04025e 100644 --- a/tests/src/cgeo/geocaching/utils/TextUtilsTest.java +++ b/tests/src/cgeo/geocaching/utils/TextUtilsTest.java @@ -14,7 +14,7 @@ public class TextUtilsTest extends AndroidTestCase { public static void testRegEx() { final String page = MockedCache.readCachePage("GC2CJPF"); assertThat(TextUtils.getMatch(page, GCConstants.PATTERN_LOGIN_NAME, true, "???")).isEqualTo(GCConstantsTest.MOCK_LOGIN_NAME); - assertThat(page.contains("id=\"ctl00_hlRenew\"") || GCConstants.MEMBER_STATUS_PM.equals(TextUtils.getMatch(page, GCConstants.PATTERN_MEMBER_STATUS, true, "???"))).isTrue(); + assertThat(page.contains("id=\"ctl00_hlRenew\"") || GCConstants.MEMBER_STATUS_PREMIUM.equals(TextUtils.getMatch(page, GCConstants.PATTERN_MEMBER_STATUS, true, "???"))).isTrue(); } public static void testReplaceWhitespaces() { |
