Setup a third party client
This guide will explain how to setup a connection with a third party client and use it everywhere in your code.
In our example we will use the GitHub Node.JS client OctoKit REST.js (opens new window).
This guide could also be used to setup an Axios client instance.
Installation
First you will have to install the client package in your application by running one of the following commands:
yarn add @octokit/rest
npm install @octokit/rest
Create a hook
To init the client, we will use the hooks system. Hooks let you add new features in your Strapi application.
Hooks are loaded once at server start.
Lets create our GitHub hook.
Path — ./hooks/github/index.js
module.exports = strapi => {
return {
async initialize() {
console.log('my hook is loaded');
},
};
};
When the hook is created, we have set it to enabled
in order for Strapi to load it. You will need to create or edit the file ./config/hook.js
.
Path — ./config/hook.js
module.exports = {
settings: {
github: {
enabled: true,
},
},
};
Now you can start your application, you should see a log my hook is loaded
in your terminal.
Initialize the client
First lets update the config file to add your GitHub token (opens new window). By following the documentation (opens new window) you will also find the way to use GitHub applications.
Path — ./config/hook.js
module.exports = {
settings: {
github: {
enabled: true,
token: process.env.GITHUB_TOKEN,
},
},
};
Path - .env
GITHUB_TOKEN=bf78d4fc3c1767019870476d6d7cc8961383d80f
Now we have to load the GitHub client.
Path — ./hooks/github/index.js
const GitHubAPI = require('@octokit/rest');
module.exports = strapi => {
return {
async initialize() {
const { token } = strapi.config.get('hook.settings.github');
strapi.services.github = new GitHubAPI({
userAgent: `${strapi.config.get('info.name')} v${strapi.config.get('info.version')}`,
auth: `token ${token}`,
});
},
};
};
And here it is.
You can now use strapi.services.github
everywhere in your code to use the GitHub client.
To simply test if it works, let’s update the bootstrap.js
function to log your GitHub profile.
Path — ./config/functions/bootstrap.js
module.exports = async () => {
const data = await strapi.services.github.users.getAuthenticated();
console.log(data);
};
Restart your server and you should see your GitHub profile data.