Skip to content

Classes description

Miloslav Hůla edited this page Dec 4, 2021 · 4 revisions

Whole project source code is in the Milo\Github namespace. Every class is in a separated file except for the exceptions. They are all in one file.


Milo\Github - the core of this library

Api       - sends GET, POST, HEAD... requests, decodes JSON responses
Paginator - helps to paginate through the responses which need it

Helpers - static helpers, not so interesting in user space
Strict  - helper, ensures sanity object behaviour, allmost all classes uses it

Milo\Github\Http - things for HTTP communication with GitHub API

IClient        - interface of HTTP clients
AbstractClient - common functionality for a stream and cURL clients (abstract)
CurlClient     - client which uses cURL
StreamClient   - client which uses stream_get_contents()
CachedClient   - client wrapper, cares about caching by ETag, If-Modified...

Message  - common features for HTTP request and response (abstract)
Request  - HTTP request envelope
Response - HTTP response envelope

Milo\Github\OAuth - helpers for obtaining an OAuth token from Github

Configuration - configuration for token obtaining (client ID, client secret, toke scopes)
Token         - OAuth token envelope
Login         - redirects to user's permissions page, fetch the token, persists token

Milo\Github\Storages - default session and cache storages and interfaces

ISessionStorage - session storage interface
SessionStorage  - naive $_SESSION storage implementation

ICache    - cache interface
FileCache - naive filesystem storage implementation