Пример #1
0
  public MDLink parseStandardUrl(String url) {
    Timber.d("Parsing standard topic URL : %s", url);

    Uri parsedUri = Uri.parse(url);

    String categoryId = parsedUri.getQueryParameter("cat");
    String pageNumber = parsedUri.getQueryParameter("page");
    String topicId = parsedUri.getQueryParameter("post");
    String anchor = parsedUri.getFragment();

    // Set default page number as 1 (first page)
    if (pageNumber == null) {
      pageNumber = "1";
    }

    if (categoryId == null || topicId == null) {
      Timber.e("URL '%s' is invalid, category, or topic id not found", url);
      return MDLink.invalid();
    }

    try {
      Category topicCategory = categoriesStore.getCategoryById(Integer.parseInt(categoryId));
      if (topicCategory == null) {
        Timber.e("Category with id '%s' is unknown", categoryId);
        return MDLink.invalid();
      } else {
        Timber.d("Link is for category '%s'", topicCategory.name());
        return MDLink.forTopic(topicCategory, Integer.parseInt(topicId))
            .atPage(Integer.parseInt(pageNumber))
            .atPost(parseAnchor(anchor))
            .build();
      }
    } catch (NumberFormatException e) {
      Timber.e(e, "Error while parsing standard URL");
      return MDLink.invalid();
    }
  }