Ember Data Github
Ember Data abstraction for the GitHub API.
Installation
ember install ember-data-github
Usage
You need to choose how you wish to authenticate your GitHub requests using OAuth. ember-data-github
provides a simple
and direct mechanism that is specific to itself. Alternatively, you can use a more general authentication framework like
ember-simple-auth
.
Authenticating Directly
If you already have a token to use the OAuth endpoints, such as a Personal access token, you must set the property
named githubAccessToken
on github-session
service with the currently logged in user's GitHub access token.
Authenticating with ember-simple-auth
If you are using ember-simple-auth (ESA) to authenticate, perhaps with
torii and ESA's torii-provider
, you can authenticate by creating a github
authorizer and extending ember-data-github
's adapter for each model you use. See the respective addon docs and
GitHub's OAuth docs to set it up.
Once you have a token, the authorizer will look like
import { inject as service } from '@ember/service';
import { isEmpty } from '@ember/utils';
import Base from 'ember-simple-auth/authorizers/base';
export default Base.extend({
session: service(),
authorize(sessionData, block) {
if (this.get('session.isAuthenticated') && !isEmpty(sessionData.access_token)) {
block('Authorization', `token ${sessionData.access_token}`);
}
}
});
assuming access_token
is the name of the property containing the token. This automatically injects the Authorization
header into the API requests using ESA mechanisms.
An extended adapter for github-user
would look like
import GitHubUserAdapter from 'ember-data-github/adapters/github-user';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
export default GitHubUserAdapter.extend(DataAdapterMixin, {
authorizer: 'authorizer:github'
});
Retrieving GitHub Data
The following examples show how to retrieve each supported GitHub entity as you might use it in your model
hook.
this.get('store').findRecord('github-user', '#');
this.get('store').findRecord('github-user', 'jimmay5469');
this.get('store').findRecord('github-user', 917672);
this.get('store').findRecord('github-repository', 'jimmay5469/old-hash');
this.get('store').findRecord('github-repository', 34598603);
this.get('store').findRecord('github-branch', 'jimmay5469/old-hash/branches/master');
this.get('store').queryRecord('github-branch', { repo: 'jimmay5469/old-hash', branch: 'master' });
this.get('store').query('github-branch', { repo: 'jimmay5469/old-hash' });
this.get('store').queryRecord('github-release', { repo: 'jimmay5469/old-hash', releaseId: 1 });
this.get('store').query('github-release', { repo: 'jimmay5469/old-hash' });
this.get('store').queryRecord('github-blob', { repo: 'jimmay5469/old-hash', sha: '47c5438403ca875f170db2aa07d1bfa3689406e3' });
Contributing
Installation
git clone git@github.com:elwayman02/ember-data-github.git
cd ember-data-github
yarn
bower install
Running
Running Tests
npm test
(Runs ember try:each
to test your addon against multiple Ember versions)ember test
ember test --server
Building
For more information on using ember-cli, visit https://ember-cli.com/.