Skip to content

Latest commit

 

History

History
32 lines (24 loc) · 1.63 KB

OVERVIEW.md

File metadata and controls

32 lines (24 loc) · 1.63 KB

How is the codebase organised?

The two main projects are the Octokit and Octokit.Reactive projects.

The Octokit.Reactive library is a thin wrapper over the Octokit library - for those who want to use Reactive Extensions (Rx) instead of tasks.

The namespaces are organised so that the relevant components are easy to discover:

  • Authentication - everything related to authenticating requests
  • Clients - the logic for interacting with various parts of the GitHub API
  • Exceptions - types which represent exceptional behaviour from the API
  • Helpers - assorted extensions and helpers to keep the code neat and tidy
  • Http - the internal networking components which Octokit requires
  • Models - types which represent request/response objects

Unless you're modifying some core behaviour, the Clients and Models namespaces are likely to be the most interesting areas.

The clients within a project are organized similarly to the endpoints in the GitHub API documentation

Some clients are "sub-clients". For example, when you navigate to the Issues API you'll notice there's an endpoint for issues. But in the right navbar, there are other APIs such as Assignees and Milestones.

We've tried to mirror this structure. So the IObservableMilestoneClient isn't a direct property of IObservableGitHubClient. Instead, it's a property of the IObservableIssuesClient. And thus you can get to it by going to client.Issues.Milestones.