Socket
Socket
Sign inDemoInstall

@sendgrid/client

Package Overview
Dependencies
Maintainers
4
Versions
47
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sendgrid/client - npm Package Compare versions

Comparing version 6.5.5 to 7.0.0

9

package.json
{
"name": "@sendgrid/client",
"description": "Twilio SendGrid NodeJS API client",
"version": "6.5.5",
"version": "7.0.0",
"author": "Twilio SendGrid <dx@sendgrid.com> (sendgrid.com)",

@@ -30,5 +30,4 @@ "contributors": [

"dependencies": {
"@sendgrid/helpers": "^6.5.5",
"@types/request": "^2.48.4",
"request": "^2.88.0"
"@sendgrid/helpers": "^7.0.0",
"axios": "^0.19.2"
},

@@ -42,3 +41,3 @@ "tags": [

],
"gitHead": "bc3e7371aa73af6c2b53128d6866837b0a60df65"
"gitHead": "ae1148c025261fc831def208782a6e94e0c19138"
}
'use strict';
/**
* Dependencies
*/
const http = require('request');
const axios = require('axios');
const pkg = require('../../package.json');

@@ -13,2 +9,3 @@ const {

classes: {
Response,
ResponseError,

@@ -18,24 +15,15 @@ },

/**
* Twilio SendGrid REST Client
*/
const API_KEY_PREFIX = 'SG.';
class Client {
/**
* Constructor
*/
constructor() {
//API key
this.apiKey = '';
//Default headers
this.defaultHeaders = {
'Accept': 'application/json',
Accept: 'application/json',
'Content-Type': 'application/json',
'User-agent': 'sendgrid/' + pkg.version + ';nodejs',
};
//Empty default request
this.defaultRequest = {
json: true,
baseUrl: 'https://api.sendgrid.com/',

@@ -48,12 +36,18 @@ url: '',

/**
* Set API key
*/
setApiKey(apiKey) {
this.apiKey = apiKey;
if (!this.isValidApiKey(apiKey)) {
console.warn(`API key does not start with "${API_KEY_PREFIX}".`);
}
}
/**
* Set default header
*/
isValidApiKey(apiKey) {
return this.isString(apiKey) && apiKey.trim().startsWith(API_KEY_PREFIX);
}
isString(value) {
return typeof value === 'string' || value instanceof String;
}
setDefaultHeader(key, value) {

@@ -64,5 +58,2 @@ this.defaultHeaders[key] = value;

/**
* Set default request
*/
setDefaultRequest(key, value) {

@@ -73,11 +64,7 @@ this.defaultRequest[key] = value;

/**
* Create headers for request
*/
createHeaders(data) {
//Merge data with default headers
// Merge data with default headers.
const headers = mergeData(this.defaultHeaders, data);
//Add API key, but don't overwrite if header already set
// Add API key, but don't overwrite if header already set.
if (typeof headers.Authorization === 'undefined' && this.apiKey) {

@@ -87,53 +74,46 @@ headers.Authorization = 'Bearer ' + this.apiKey;

//Return
return headers;
}
/**
* Create request
*/
createRequest(data) {
let options = {
url: data.uri || data.url,
baseUrl: data.baseUrl,
method: data.method,
data: data.body,
params: data.qs,
headers: data.headers,
};
//Keep URL parameter consistent
if (data.uri) {
data.url = data.uri;
delete data.uri;
}
// Merge data with default request.
options = mergeData(this.defaultRequest, options);
options.headers = this.createHeaders(options.headers);
options.baseURL = options.baseUrl;
delete options.baseUrl;
//Merge data with empty request
const request = mergeData(this.defaultRequest, data);
//Add headers
request.headers = this.createHeaders(request.headers);
return request;
return options;
}
/**
* Do a request
*/
request(data, cb) {
data = this.createRequest(data);
//Create request
const request = this.createRequest(data);
//Perform request
const promise = new Promise((resolve, reject) => {
http(request, (error, response, body) => {
//Request error
if (error) {
axios(data)
.then(response => {
return resolve([
new Response(response.status, response.data, response.headers),
response.data,
]);
})
.catch(error => {
if (error.response) {
if (error.response.status >= 400) {
return reject(new ResponseError(error.response));
}
}
return reject(error);
}
//Response error
if (response.statusCode >= 400) {
return reject(new ResponseError(response));
}
//Successful response
resolve([response, body]);
});
});
});
// Throw and error incase function not passed
// Throw an error in case a callback function was not passed.
if (cb && typeof cb !== 'function') {

@@ -143,3 +123,2 @@ throw new Error('Callback passed is not a function.');

//Execute callback if provided
if (cb) {

@@ -151,3 +130,2 @@ return promise

//Return promise
return promise;

@@ -157,3 +135,2 @@ }

//Export class
module.exports = Client;

@@ -6,2 +6,3 @@ import {ResponseError} from "@sendgrid/helpers/classes";

declare class Client {
constructor();
/**

@@ -8,0 +9,0 @@ * Set API key

@@ -1,3 +0,3 @@

import {OptionsWithUrl} from "request";
import RequestOptions from "@sendgrid/helpers/classes/request";
export type ClientRequest = OptionsWithUrl;
export type ClientRequest = RequestOptions;

@@ -1,3 +0,3 @@

import {RequestResponse} from "request";
import Response from "@sendgrid/helpers/classes/response";
export type ClientResponse = RequestResponse;
export type ClientResponse = Response;

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc