/RepubliK-API

Unofficial RepubliK.gg API

Primary LanguageTypeScript

RepubliK API

NPM

Disclaimer: This TypeScript/Node.js project provides access to an unofficial RepubliK API, kind a implementation for informational and educational purposes only. RepubliK API could change at any moment but I will try my best to maintain and keep it up-to-date.

Quickstart

Installation

Using NPM

npm install republik-api

Using YARN

yarn add republik-api

Quick example of usage

import { RepubliKAPI } from "republik-api"

const republikgg = new RepubliKAPI({
  authToken: "ACCESS_TOKEN",
  userId: "USER_ID"
})

republikgg.authenticate()

// Get posts from an user
const getPostsOpt = {
  location: "",
  limit: 25,
  withOwnReactions: true,
  withReactionCounts: true
}
republikgg.getPosts("USER_ID", getPostsOpt)

// Get profile infor from an user
republikgg.getProfile("USER_ID")

Read more about authentication.

📝 Post

republikgg.Self.createPost("CAPTION", ["MEDIA_URL", "MEDIA_FILEPATH"]) // Maximum 3 media, createPost, deletePost
republikgg.Self.createConversation("CAPTION", "MEDIA_URL") // createConversation, deleteConversation

💖 Relationship

republikgg.Self.follow("USER_ID") // follow, unfollow
republikgg.Self.block("USER_ID") // block, unblock

👍 Reaction

Note: postId and activityId kind a same thing.

republikgg.Self.like("ACTIVITY_ID") // like, dislike
republikgg.Self.comment("ACTIVITY_ID", "TEXT") // comment, uncomment

⚙️ Update profile

republikgg.Self.updateProfile.name("DISPLAY NAME")
republikgg.Self.updateProfile.bio("BIO")
republikgg.Self.updateProfile.email("EXAMPLE@MAIL.COM")

// Photo
republikgg.Self.updateProfile.photo("FILE_PATH") // from local file
// or
republikgg.Self.updateProfile.photo("URL") // from url

🔃 Refreshing Token

republikgg.Self.updateToken()

🔒 Authentication

Auth options

const AuthOptions = {
  refreshToken?: string,
  authToken?: string,
  userId?: string
}

There are two ways to do authentication

const republikgg = new RepublikAPI(AuthOptions)
republikgg.authenticate()

// or

const republikgg = new RepublikAPI()
republikgg.authenticate(AuthOptions)

And there are two kind of authentication.

const republikgg = new RepublikAPI()
republikgg.authenticate({ refreshToken })

// or

const republikgg = new RepublikAPI()
republikgg.authenticate({ userId, authToken })

Authentication with refreshToken would be best since authToken only alive for an hour and required userId. For now, it's only tested using Google SSO authentication, not yet tried Facebook signin method.

Auth Token

Its property named authToken on constructing class. Access Token (Bearer) can be obtained via Network Tab on your browser. authToken will expired in 3600s (an hour).

Refresh Token

Used to refresh authToken. Can be found on localStorage. The key named XXXX.XXXX.XXXX.refreshToken. New token will be live for an hour. Refresh token will change while the session closed (logout) from the device.

✏️ Some changes

1.3.x > 1.4.x

Changes:

  • Remove the Postman/Runtine User Agent
  • Allow use to user their own User Agent

This version updated because #4 Issue

1.0.x > 1.1.x

Functions:

  • Self.post() to Self.createPost()
  • refreshAccessToken() to Self.updateToken() No longer return value, new token automatically set.
  • authenticate() Now needed after constructing class.

Feel free to open issue or opening pull request. A star (⭐) would be very amazing!

Legal

This source code is intended to facilitate access to certain online services but is not endorsed or supported by the platform provider(s). Please use this code responsibly and respect the terms of service of the platform(s) you interact with.