Skip to content

OpenReader

Barijaona Ramaholimihaso edited this page Dec 30, 2023 · 2 revisions

When the demise of GoogleReader was announced in April 2013, many developers came to the consensus that synchronization of feeds between various applications should best be achieved through a reimplementation of the GoogleReader API. Changes were supposed to be minimal, essentially going back from OAuth authentication to ClientLogin.

The "not so new" API was rechristened OpenReader, essentially for copyright reasons. The original API was never publicly released or documented, but we tend to consider the documentation set by FeedHQ developers as the reference documentation for OpenReader.

  • Base URL: https://<hostname>/reader/api/0/
  • Queries:
    • ot: startEpoch
    • n: 500, 1000

stream/contents/feed/?client=&comments=false&likes=false&ck=&output=json

OpenReader calls in OpenReader class

  • *LoginBaseURL = @"https://%@/accounts/ClientLogin?accountType=GOOGLE&service=reader"
  • *ClientName = @“ViennaRSS”
  • inoreaderAdditionalHeaders = @{@"AppID": @"1000001359”, @"AppKey": @"rAlfs2ELSuFxZJ5adJAW54qsNbUa45Qn”}
  • APIBaseURL = [NSString stringWithFormat:@"https://%@/reader/api/0/", openReaderHost]

Calls

  • https://<host>/reader/api/0/edit-tag
    • Method: POST
    • Header:
      • a=user/-/state/com.google/read or r=user/-/state/com.google/read
      • async=true
      • i=<article guid>
  • https://<host>/reader/api/0/edit-tag
    • Method: POST
    • Header:
      • Content-Type=application/x-www-form-urlencode
      • T=<token>
      • a=user/-/state/com.google/starred or r=user/-/state/com.google/starred
      • async=true
      • i=<article guid>

Misc

  • RefreshManager depends on OpenReader:
    • -refreshFeed:withLog:shouldIgnoreArticleLimit:
  • OpenReader depends on RefreshManager:
    • MA_Refresh_GoogleFeed
    • -addConnection:
    • -addConnection:completionHandler:
    • -suspendConnectionsQueue
    • -resumeConnectionsQueue
    • -refreshFavIconForFolder: