private boolean updateByFeed(
      ArticleDao articleDao, FeedType feedType, UpdateType updateType, Integer id) {
    Log.d(TAG, "updateByFeed() started");

    InputStream is = null;
    try {
      // TODO: rewrite?
      try {
        is = getInputStream(getFeedUrl(feedType));
      } catch (IOException e) {
        Log.e("FeedUpdater.updateByF", "IOException on " + feedType, e);
        errorMessage = App.getInstance().getString(R.string.feedUpdater_IOException);
        return false;
      } catch (RuntimeException e) {
        Log.e("FeedUpdater.updateByF", "RuntimeException on " + feedType, e);
        errorMessage = e.getMessage();
        return false;
      }

      Log.d(TAG, "updateByFeed() got input stream; processing feed");
      try {
        processFeed(articleDao, is, feedType, updateType, id);
      } catch (IOException e) {
        Log.e("FeedUpdater.updateByF", "IOException on " + feedType, e);
        errorMessage =
            App.getInstance().getString(R.string.feedUpdater_IOExceptionOnProcessingFeed);
        return false;
      } catch (XmlPullParserException e) {
        Log.e("FeedUpdater.updateByF", "XmlPullParserException on " + feedType, e);
        errorMessage = App.getInstance().getString(R.string.feedUpdater_feedProcessingError);
        return false;
      }

      Log.d(TAG, "updateByFeed() finished successfully");

      return true;
    } finally {
      if (is != null) {
        try {
          is.close();
        } catch (IOException ignored) {
        }
      }
    }
  }
  private InputStream getInputStream(String urlStr) throws IOException {
    Request request = WallabagConnection.getRequest(WallabagConnection.getHttpURL(urlStr));

    Response response = WallabagConnection.getClient().newCall(request).execute();

    if (response.isSuccessful()) {
      return response.body().byteStream();
    } else {
      // TODO: fix
      throw new RuntimeException(
          String.format(
              App.getInstance().getString(R.string.unsuccessfulRequest_errorMessage),
              response.code(),
              response.message()));
    }
  }