PHP 8.2.30
Preview: rave.base.js Size: 4.39 KB
/home/byroehnu/.trash/node_modules11/flutterwave-node-v3/lib/rave.base.js

var q = require('q');
const querystring = require('querystring');
var RaveUtils = require('../utils/rave.utils');
var Security = require('./security');

var RaveBase = function (public_key, secret_key, _base_url) {
  RaveUtils.emptyCheck(public_key, 'Public Key required');
  RaveUtils.emptyCheck(secret_key, 'Secret Key required');

  var public_key = public_key;
  var secret_key = secret_key;
  var base_url = 'https://api.flutterwave.com/';

  // Override BaseURL
  if (_base_url && typeof _base_url === 'string') {
    base_url = _base_url;
  }

  this.getPublicKey = function () {
    return public_key;
  };

  this.getSecretKey = function () {
    return secret_key;
  };

  this.getBaseUrl = function () {
    return base_url;
  };

  this.setBaseUrl = function (new_base_url) {
    if (new_base_url) {
      base_url = new_base_url;
    }
  };

  this.request = function (path, payload, callback) {
    var requestOptions = {};
    var requestMethod = RaveUtils.initDefaultValue(
      payload.method,
      'POST' || 'PUT',
    );
    var datakey = requestMethod == 'POST' || 'PUT' ? 'body' : 'qs';
    var requestJSON = datakey == 'body' ? true : false;
    var includeQueryParams = RaveUtils.initDefaultValue(
      payload.excludeQuery,
      false,
    );

    // Build URL
    let fullUrl = this.getBaseUrl() + path;

    // Prepare request options for fetch
    const fetchOptions = {
      method: requestMethod,
      headers: {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${this.getSecretKey()}`,
      },
    };

    // Handle query parameters for GET requests
    if (requestMethod === 'GET') {
      delete payload.method;
      if (!includeQueryParams) {
        delete payload.excludeQuery;
        const queryParams = querystring.stringify(payload);
        if (queryParams) {
          fullUrl += fullUrl.includes('?') ? '&' : '?';
          fullUrl += queryParams;
        }
      }
    } else {
      // Handle request body for non-GET requests
      if (Object.keys(payload).length > 0) {
        // Remove method and excludeQuery properties before sending
        const payloadCopy = { ...payload };
        delete payloadCopy.method;
        delete payloadCopy.excludeQuery;
        fetchOptions.body = JSON.stringify(payloadCopy);
      }
    }

    // Store original options for legacy compatibility
    requestOptions.uri = path;
    requestOptions.baseUrl = this.getBaseUrl();
    requestOptions.method = requestMethod;
    requestOptions[datakey] = RaveUtils.initDefaultValue(payload, {});
    requestOptions.json = requestJSON;
    requestOptions.headers = fetchOptions.headers;

    if (callback) {
      this._makeRequest(fullUrl, fetchOptions, callback);
      return requestOptions;
    } else {
      return this._makePromiseRequest(fullUrl, fetchOptions);
    }
  };
};

RaveBase.prototype.encrypt = function (data) {
  var encryption_key = Security.getEncryptionKey(this.getSecretKey());
  return Security.encrypt(encryption_key, JSON.stringify(data));
};

RaveBase.prototype.getIntegrityHash = function (data) {
  return Security.getIntegrityHash(
    data,
    this.getPublicKey(),
    this.getSecretKey(),
  );
};

RaveBase.prototype._makeRequest = function (url, fetchOptions, callback) {
  fetch(url, fetchOptions)
    .then((response) => {
      const res = {
        statusCode: response.status,
        headers: Object.fromEntries(response.headers.entries()),
      };

      return response
        .json()
        .then((body) => {
          callback(null, res, body);
        })
        .catch((err) => {
          return response.text().then((textBody) => {
            callback(null, res, textBody || {});
          });
        });
    })
    .catch((err) => {
      callback(err, {}, {});
    });
};

RaveBase.prototype._makePromiseRequest = function (url, fetchOptions) {
  return new Promise((resolve, reject) => {
    fetch(url, fetchOptions)
      .then((response) => {
        const res = {
          statusCode: response.status,
          headers: Object.fromEntries(response.headers.entries()),
        };

        return response
          .json()
          .then((body) => {
            resolve({ res, body });
          })
          .catch((err) => {
            return response.text().then((textBody) => {
              resolve({ res, body: textBody || {} });
            });
          });
      })
      .catch((err) => {
        reject(err);
      });
  });
};

module.exports = RaveBase;

Directory Contents

Dirs: 0 × Files: 20

Name Size Perms Modified Actions
354 B lrw-r--r-- 2026-02-21 00:53:50
Edit Download
4.39 KB lrw-r--r-- 2026-02-21 00:53:52
Edit Download
698 B lrw-r--r-- 2026-02-21 00:53:52
Edit Download
2.01 KB lrw-r--r-- 2026-02-21 00:53:54
Edit Download
1.72 KB lrw-r--r-- 2026-02-21 00:54:00
Edit Download
244 B lrw-r--r-- 2026-02-21 00:54:02
Edit Download
337 B lrw-r--r-- 2026-02-21 00:54:04
Edit Download
787 B lrw-r--r-- 2026-02-21 00:54:08
Edit Download
1016 B lrw-r--r-- 2026-02-21 00:54:08
Edit Download
331 B lrw-r--r-- 2026-02-21 00:54:10
Edit Download
826 B lrw-r--r-- 2026-02-21 00:54:10
Edit Download
363 B lrw-r--r-- 2026-02-21 00:54:18
Edit Download
750 B lrw-r--r-- 2026-02-21 00:54:18
Edit Download
674 B lrw-r--r-- 2026-02-21 00:54:18
Edit Download
924 B lrw-r--r-- 2026-02-21 00:54:20
Edit Download
1.13 KB lrw-r--r-- 2026-02-21 00:54:20
Edit Download
973 B lrw-r--r-- 2026-02-21 00:54:22
Edit Download
700 B lrw-r--r-- 2026-02-21 00:54:22
Edit Download
1.51 KB lrw-r--r-- 2026-02-21 00:54:22
Edit Download
2.02 KB lrw-r--r-- 2026-02-21 00:54:24
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).