Giter VIP home page Giter VIP logo

namebasejs's Introduction

NameBaseJS 1.2.0

Promise based namebase.io API wrapper

Usage

npm install namebasejs --save

This wrapper covers up to 90% of the visible endpoints on namebase currently. Submit an issue or PR to fill in the ones I'm missing.

You can get your session from the network tab of Inspect Element under namebase-main. Copy everything after the =. Although, you don't need to instantiate namebasejs with a session, you can also use the local login which will store the session from your login in _auth_session which can be gotten from the api namebasejs.session at any time.

NOTE: Currently NameBase is returning auth0 headers to prevent you from using their API too frequently.

1.2.0 - Added handling for auth0 headers, this can be disabled if it's not working correctly or you want to handle everything yourself. You can read more about auth0 headers here. Disable auth0 like so(after instantiation of namebasejs): namebasejs.auth0 = false; This doesn't stop you from using the API, it just doesn't handle the auth0 headers for you. It will still keep track of the auth0 headers and are available at namebasejs.auth0_headers.

Example: Login using email & password

import NameBaseJS from "namebasejs";

const namebasejs = new NameBaseJS();

namebasejs.auth.login('email', 'password')
    .then(({ data, status, headers, session }) => {
        // This is the only function that returns 'session'
        console.log('My current session: ', session);

        if (status === 200) {
            console.log('Logged in successfully!');
            
            namebasejs.user.self().then(({ data }) => {
                console.log('Current HNS Balance: ', data.hns_balance / 1000000); // convert little to big
            });
        }
    })
    .catch(console.error);

Example: Login using session

import NameBaseJS from "namebasejs";

const namebasejs = new NameBaseJS({session: 'SESSION_TOKEN'});

namebasejs.user.self().then(({ data }) => {
    console.log('Current HNS Balance: ', data.hns_balance / 1000000); // convert little to big
});

Example: Login using Access and Secret keys

import NameBaseJS from "namebasejs";

const namebasejs = new NameBaseJS({
    aKey: '1dXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // 64 Character Access Key
    sKey: 'a2XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' // 64 Character Secret Key
});

// API Keys will restrict the endpoints available to you.
// It only allows the endpoints of:
// - Account
// - Marketplace
// - Trade
// - DNS
// - Ticker
// - a few Domain endpoints

namebasejs.account.self().then(({ data }) => {
    const assetHNS = data.balances.find(b => b.asset === 'HNS');

    console.log('Current HNS Balance: ', assetHNS.unlocked);
    console.log('Order Locked HNS Balance: ', assetHNS.lockedInOrders);
});

Testing with Jest [Broken Currently]

  • Clone repository: https://github.com/ImSeaWorld/namebasejs.git
  • npm install
  • npm run test

Result

We're now using Axios! This means we can now be used in the browser and NodeJS! Referring to the Axios documentation, the response schema is as follows:

{
    data: {}, // The response that was provided by the API
    status: 200, // HTTP status code from the server response
    statusText: 'OK', // HTTP status message from the server response
    headers: {}, // The headers that the server responded with
    config: {}, // The config that was provided to `axios` for the request
    request: {} // The request that generated this response
}

All methods return AxiosPromise, the example above is how EVERY method is returned.

Any parameter with a ? should be considered optional.

NameBaseJS

  • namebasejs({ session?: string, aKey?: string, sKey?: string }) - Constructor
  • namebasejs.axios - The instance of axios used for requests.
  • namebasejs.auth0 - Boolean to enable/disable auth0 headers. Default: true
  • namebasejs.auth0_headers - The auth0 object populated by the headers that are returned from the server. This does include now() function to get the current time(unix).
  • namebasejs.receive_window - The receive window for timed requests. Default: 10000(ms)
  • namebasejs.enums - The enums used for the API.
  • namebasejs.session - The session token used for requests. Default: null
  • namebasejs.auth_key - The access key used for requests. Set with colon delimited access and secret key! Default: null
  • namebasejs.request(_interface, method, paylod?, ...args?) - The request method used for all requests. This is the method that handles the auth0 headers. This method is not meant to be used directly, but is exposed for advanced usage.
  • namebasejs.timedRequest(_interface, method, payload?, ...args?) - The timed request method used for all requests that require a receive_window. This method is not meant to be used directly, but is exposed for advanced usage.
  • namebasejs.account - The account interface.
  • namebasejs.auction - The auction interface.
  • namebasejs.auth - The auth interface.
  • namebasejs.dns - The dns interface.
  • namebasejs.domain - 1.2.0 The domain interface.
  • namebasejs.domains - The domains interface.
  • namebasejs.fiat - The fiat interface.
  • namebasejs.marketplace - The marketplace interface.
  • namebasejs.ticker - The ticker interface.
  • namebasejs.trade - The trade interface.
  • namebasejs.user - The user interface.

Account

Auction

  • auction.bid(domain, bidAmount, blindAmount) - Bid on a domain

Auth

  • auth.login(email, password, token?) - Login using email, password and 2fa token if enabled
  • auth.logout() - Logout of current session
  • auth.apiKeys() - Get all API Keys
  • auth.apiKeyCreate(name) - Create an API Key
  • auth.apiKeyDelete(accessKey) - Delete an API Key

DNS

Domain - 1.2.0

  • domain.get(domain) - 1.2.0 Get domain info
  • domain.watch(domain) - 1.2.0 Watch a domain for updates(toggles)
  • domain.giftSLD(domain, recipientEmail, senderName, note) - 1.2.0 Gift a domain to a friend
  • domain.giftTLD(domain, recipientEmail, senderName, note) - 1.2.0 Gift a domain to a friend

Domains

Fiat

  • fiat.accounts()
  • fiat.transfers()

Marketplace

Ticker

Trade

User

  • user.self() - Get current user
  • user.wallet() - 1.1.2
  • user.domainSummary() - 1.1.2 Domain summary dashboard widget
  • user.messages() - 1.1.2
  • user.referralStats(limit?) - 1.1.2 Referral stats dashboard widget
  • user.pendingHistory() - Pending history dashboard widget
  • user.domains(offset?, sortKey?, sortDirection?, limit?) - Unlisted domains
  • user.transferredDomains(offset?, sortKey?, sortDirection?, limit?) - Domain transfer history
  • user.listedDomains(offset?, limit?) - Domains listed for sale
  • user.mfa() - Check if multifactor authentication is enabled
  • user.offersSent(offset?, sortKey?, sortDirection?)
  • user.offersReceived(offset?, sortKey?, sortDirection?)
  • user.offersNotifications() - Offer notification widget
  • user.openBids(offset?) - Open bids on active auctions
  • user.lostBids(offset?) - Lost bids on ended auctions
  • user.revealingBids(offset?) - Bids that are currently in reveal

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.