Tiny, fully-featured REST client for the unofficial devRant API.
- Promise driven via Async / Await
- Typescript support
- Works both in Node and in browsers
- Under 1kb
- Minimal dependencies
- Test suite
I have built this library because existing ones have not been recently maintained, or don't support all existing endpoints.
yarn add devrant-lite
or
npm install devrant-lite
Then you can include the following at the top of your code:
import DevRant from 'devrant-lite';
const client = DevRant.withCredentials('username', 'password');
client.get(...)
client.post(...)
You will need to create an account on https://devrant.com/, if you haven't already.
Otherwise, you will only have access to some public endpoints, like devrant/rants
.
There are three ways of authentication:
-
No Authentication:
const client = new DevRant(); const { rants } = await client.get('devrant/rants');
-
With User Credentials:
I recommend grabbing the auth token with the
.getAuthToken()
method afterwards and using the.withAuthToken()
method next time.const client = DevRant.withCredentials('username', 'password'); const { data } = await client.get('users/me/notif-feed', { last_time: 0 });
-
With Auth Token:
const client = DevRant.withAuthToken({ key: '123abcdefghijklmnopqrstuvxyz', id: 12345678, user_id: 12345 }); const { data } = await client.get('users/me/notif-feed', { last_time: 0 });
The constructor accepts an options
object with the following options:
Sets the base url for the api.
Useful for proxying or testing.
Default: 'https://devrant.com/api'
Sets the app ID to use.
The app id will be sent with every request.
Default: 3
Similar as the app ID, this sets the platform ID,
which will also be sent with every request.
Default: 3
A helper function which creates a new instance of the DevRant
class and then sends a request to the users/auth-token
endpoint to get an auth token.
When the request was successful it sets the auth token with the setAuthToken(auth_token)
method.
A helper function which creates a new instance of the DevRant
class and then sets the auth token with the setAuthToken(auth_token)
method.
Use the post
method for actions that get state.
Returns a Promise resolving to the API response object, or rejecting on error.
The response and error objects will also have a hidden headers
property with the HTTP response headers returned by
the devRant API.
const client = DevRant.withCredentials('username', 'password');
// Get todays top rants
const { rants } = await client.get("devrant/rants", {
sort: 'top',
range: 'day',
limit: 20,
skip: 0,
});
Same return as get()
.
Use the post
method for actions that change or create state.
For example, to post a new rant:
const client = DevRant.withCredentials('username', 'password');
// Post a rant with text "Hello World!"
await client.post('devrant/rants', {
rant: 'Hello World!',
tags: 'hello, world',
type: 6
});
Same return as get()
and post()
.
Use the delete()
method for actions that delete state. For example, to delete a rant:
const client = DevRant.withCredentials('username', 'password');
// Delete rant with ID 12345
await client.delete('devrant/rants/12345');
Sets the auth token to be used for authentication. An auth token object consists of the id
, key
and user_id
properties.
Returns the auth token used for authentication.
You can find many more examples for various resources/endpoints in the tests.
const response = await client.get('devrant/rants');
console.log(`Content Length: ${response.headers.get('Content-Type')}`);
console.log(response.rants[0]);
.get()
, .post()
and .delete()
reject on error, so you can use try/catch to handle errors. The error object contains an error
property with the error message and the default success
property,
which is false
, in this case. The error object will also have a hidden headers
property with the HTTP response headers returned by the devRant API.
try {
const response = await client.get("some/endpoint");
// ... use response here ...
} catch (e) {
if ('success' in e) {
// devRant API error
console.error(e.error);
} else {
// non-API error, e.g. network problem or invalid JSON in response
}
}
- Fork/clone the repo
- Run
yarn/npm install
- Place your credentials in a .env file in the project's root directory, under the following variables:
DEVRANT_USERNAME=... DEVRANT_PASSWORD=...
- Run
yarn/npm test
and make sure all tests pass - Make sure all tests pass. NOTE: tests will take over 10 minutes to finish.
- Commit using a descriptive message (please squash commits into one per fix/improvement!)
- Run
git push
and submit your PR!
Authors: