@Nullable
    @WorkerThread
    protected String getGeocodeFromCacheId(final String url, final String host) {
        final Uri uri = Uri.parse(url);
        if (!StringUtils.containsIgnoreCase(uri.getHost(), host)) {
            return null;
        }

        // host.tld/viewcache.php?cacheid=cacheid
        final String id = uri.getPath().startsWith("/viewcache.php") ? uri.getQueryParameter("cacheid") : "";
        if (StringUtils.isNotBlank(id)) {
            final String geocode = Maybe.fromCallable(() -> {
                final String normalizedUrl = StringUtils.replaceIgnoreCase(url, getShortHost(), getShortHost());
                return OkapiClient.getGeocodeByUrl(OCApiConnector.this, normalizedUrl);
            }).subscribeOn(AndroidRxUtils.networkScheduler).blockingGet();

            if (geocode != null && canHandle(geocode)) {
                return geocode;
            }
        }
        return null;
    }
get the OC1234 geocode from an internal cache id, for URLs like host.tld/viewcache.php?cacheid
main/src/main/java/cgeo/geocaching/connector/oc/OCApiConnector.java