Comparing version 10.0.0-beta.21 to 10.0.0-beta.22
@@ -1,5 +0,5 @@ | ||
import { CategoryCode, EndpointDescription, HistoricalFilter, News, RestResponse, RestResponseError, RestResponseSuccess, SourceDetails } from "./types"; | ||
import { RestHelper } from "rest-helper"; | ||
import { CategoryCode, EndpointDescription, HistoricalFilter, News, RestResponseError, RestResponseSuccess, SourceDetails } from "./types"; | ||
export declare class Api { | ||
private apikey; | ||
restEndpoint: string; | ||
restHelper: RestHelper; | ||
constructor(apikey: string, endpoint?: EndpointDescription); | ||
@@ -11,10 +11,2 @@ changeApikey(apikey: string): void; | ||
getSources(): Promise<SourceDetails[]>; | ||
get<T>(path: string, params?: any, errorHandler?: (apiResponse: RestResponseError<T>) => void): Promise<RestResponse<T>>; | ||
delete<T>(path: string, params?: any, errorHandler?: (apiResponse: RestResponseError<T>) => void): Promise<RestResponse<T>>; | ||
post<T, Z>(path: string, body: T, errorHandler?: (apiResponse: RestResponseError<Z>) => void): Promise<RestResponseSuccess<Z>>; | ||
put<T, Z>(path: string, body: T, errorHandler?: (apiResponse: RestResponseError<Z>) => void): Promise<RestResponseSuccess<Z>>; | ||
request<T>(method: string, path: string, params?: object, errorHandler?: (apiResponse: RestResponseError<T>) => void): Promise<RestResponse<T>>; | ||
private requestWithBody; | ||
handle<T>(res: Response, handleError: (apiResponse: RestResponseError<T>) => void): Promise<RestResponse<T>>; | ||
handleError<T>(apiResponse: RestResponseError<T>): Promise<void>; | ||
} |
@@ -11,25 +11,23 @@ "use strict"; | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.Api = void 0; | ||
const rest_helper_1 = require("rest-helper"); | ||
const enums_1 = require("./enums"); | ||
const isomorphic_fetch_1 = __importDefault(require("isomorphic-fetch")); | ||
class Api { | ||
constructor(apikey, endpoint = enums_1.Endpoint.PRODUCTION) { | ||
this.apikey = apikey; | ||
this.restEndpoint = endpoint.restProtocol + "://" + endpoint.host + "/api/v3"; | ||
this.restHelper = new rest_helper_1.RestHelper(endpoint, { | ||
"x-api-key": apikey | ||
}); | ||
} | ||
changeApikey(apikey) { | ||
this.apikey = apikey; | ||
this.restHelper.headers["x-api-key"] = apikey; | ||
} | ||
search(filter, errorHandler = this.handleError) { | ||
search(filter, errorHandler = rest_helper_1.RestHelper.handleError) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
return yield this.post('/news', filter, errorHandler); | ||
return yield this.restHelper.post('/news', filter, errorHandler); | ||
}); | ||
} | ||
getById(id, errorHandler = this.handleError) { | ||
getById(id, errorHandler = rest_helper_1.RestHelper.handleError) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
return (yield this.get(`/news/${id}`, undefined, errorHandler)).data; | ||
return (yield this.restHelper.get(`/news/${id}`, undefined, errorHandler)).data; | ||
}); | ||
@@ -39,3 +37,3 @@ } | ||
return __awaiter(this, void 0, void 0, function* () { | ||
return (yield this.get('/category-codes', { | ||
return (yield this.restHelper.get('/category-codes', { | ||
source | ||
@@ -47,95 +45,7 @@ })).data; | ||
return __awaiter(this, void 0, void 0, function* () { | ||
return (yield (this.get('/sources'))).data; | ||
return (yield (this.restHelper.get('/sources'))).data; | ||
}); | ||
} | ||
get(path, params, errorHandler = this.handleError) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
return yield this.request("GET", path, params, errorHandler); | ||
}); | ||
} | ||
delete(path, params, errorHandler = this.handleError) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
return yield this.request("DELETE", path, params, errorHandler); | ||
}); | ||
} | ||
post(path, body, errorHandler = this.handleError) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
return yield this.requestWithBody("POST", path, body, errorHandler); | ||
}); | ||
} | ||
put(path, body, errorHandler = this.handleError) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
return yield this.requestWithBody("PUT", path, body, errorHandler); | ||
}); | ||
} | ||
request(method, path, params, errorHandler = this.handleError) { | ||
var _a, _b; | ||
return __awaiter(this, void 0, void 0, function* () { | ||
try { | ||
var paramsString = {}; | ||
if (params) { | ||
Object.keys(params).forEach(key => { | ||
paramsString[key] = typeof params[key] === "object" | ||
? JSON.stringify(params[key]) | ||
: params[key]; | ||
}); | ||
} | ||
const endpoint = this.restEndpoint + path + (paramsString ? "?" + new URLSearchParams(paramsString) : ''); | ||
const res = yield (0, isomorphic_fetch_1.default)(endpoint, { | ||
method: method, | ||
headers: { | ||
'content-type': 'application/json', | ||
'x-api-key': this.apikey | ||
}, | ||
}); | ||
return this.handle(res, errorHandler); | ||
} | ||
catch (e) { | ||
if (((_b = (_a = e.cause) === null || _a === void 0 ? void 0 : _a.errors) === null || _b === void 0 ? void 0 : _b.length) > 0) { | ||
throw Error(e.cause.errors[0]); | ||
} | ||
throw e; | ||
} | ||
}); | ||
} | ||
requestWithBody(method, path, body, errorHandler = this.handleError) { | ||
var _a, _b; | ||
return __awaiter(this, void 0, void 0, function* () { | ||
try { | ||
const res = yield (0, isomorphic_fetch_1.default)(this.restEndpoint + path, { | ||
method: method, | ||
body: JSON.stringify(body), | ||
headers: { | ||
'content-type': 'application/json', | ||
'x-api-key': this.apikey | ||
}, | ||
}); | ||
return this.handle(res, errorHandler); | ||
} | ||
catch (e) { | ||
if (((_b = (_a = e.cause) === null || _a === void 0 ? void 0 : _a.errors) === null || _b === void 0 ? void 0 : _b.length) > 0) { | ||
throw Error(e.cause.errors[0]); | ||
} | ||
throw e; | ||
} | ||
}); | ||
} | ||
handle(res, handleError) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const restResponse = yield res.json(); | ||
if (res.status < 200 || res.status > 299) { | ||
yield handleError(restResponse); | ||
} | ||
return restResponse; | ||
}); | ||
} | ||
handleError(apiResponse) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
throw Error(`Status ${apiResponse.error.code}${apiResponse.error | ||
? ": " + apiResponse.error.message.charAt(0).toUpperCase() + apiResponse.error.message.slice(1) | ||
: ""}`); | ||
}); | ||
} | ||
} | ||
exports.Api = Api; | ||
//# sourceMappingURL=api.js.map |
@@ -12,5 +12,5 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const chai_1 = require("chai"); | ||
const api_1 = require("./api"); | ||
const enums_1 = require("./enums"); | ||
const chai_1 = require("chai"); | ||
const filters_1 = require("./filters"); | ||
@@ -17,0 +17,0 @@ describe("Api historical search", () => { |
@@ -0,3 +1,3 @@ | ||
import { FilterAction, FilterType } from "./enums"; | ||
import { Filter, FilterArray, FilterText, TextOptions } from "./types"; | ||
import { FilterAction, FilterType } from "./enums"; | ||
export declare class Text { | ||
@@ -4,0 +4,0 @@ constructor(); |
@@ -1,5 +0,6 @@ | ||
export { Or, And, Text, Ciks, Tickers, Sources, CategoryCodes } from "./filters"; | ||
export { Api } from "./api"; | ||
export { Field, FilterAction, Source, WebsocketMethod, WebsocketResponseType } from "./enums"; | ||
export { And, CategoryCodes, Ciks, Or, Sources, Text, Tickers } from "./filters"; | ||
export { RestHelper } from "./rest-helper"; | ||
export { CategoryCode, ConnectOptions, Filter, HistoricalFilter, News, RestResponse, RestResponseError, RestResponseSuccess, SourceDetails, TextOptions, WebsocketErrorResponse, WebsocketResponse } from "./types"; | ||
export { WsApi } from "./wsApi"; | ||
export { News, Filter, TextOptions, WebsocketResponse, WebsocketErrorResponse, ConnectOptions, HistoricalFilter, RestResponse, RestResponseSuccess, RestResponseError, CategoryCode, SourceDetails } from "./types"; | ||
export { Source, WebsocketMethod, WebsocketResponseType, FilterAction, Field } from "./enums"; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.Field = exports.FilterAction = exports.WebsocketResponseType = exports.WebsocketMethod = exports.Source = exports.WsApi = exports.Api = exports.CategoryCodes = exports.Sources = exports.Tickers = exports.Ciks = exports.Text = exports.And = exports.Or = void 0; | ||
exports.WsApi = exports.RestHelper = exports.Tickers = exports.Text = exports.Sources = exports.Or = exports.Ciks = exports.CategoryCodes = exports.And = exports.WebsocketResponseType = exports.WebsocketMethod = exports.Source = exports.FilterAction = exports.Field = exports.Api = void 0; | ||
var api_1 = require("./api"); | ||
Object.defineProperty(exports, "Api", { enumerable: true, get: function () { return api_1.Api; } }); | ||
var enums_1 = require("./enums"); | ||
Object.defineProperty(exports, "Field", { enumerable: true, get: function () { return enums_1.Field; } }); | ||
Object.defineProperty(exports, "FilterAction", { enumerable: true, get: function () { return enums_1.FilterAction; } }); | ||
Object.defineProperty(exports, "Source", { enumerable: true, get: function () { return enums_1.Source; } }); | ||
Object.defineProperty(exports, "WebsocketMethod", { enumerable: true, get: function () { return enums_1.WebsocketMethod; } }); | ||
Object.defineProperty(exports, "WebsocketResponseType", { enumerable: true, get: function () { return enums_1.WebsocketResponseType; } }); | ||
var filters_1 = require("./filters"); | ||
Object.defineProperty(exports, "And", { enumerable: true, get: function () { return filters_1.And; } }); | ||
Object.defineProperty(exports, "CategoryCodes", { enumerable: true, get: function () { return filters_1.CategoryCodes; } }); | ||
Object.defineProperty(exports, "Ciks", { enumerable: true, get: function () { return filters_1.Ciks; } }); | ||
Object.defineProperty(exports, "Or", { enumerable: true, get: function () { return filters_1.Or; } }); | ||
Object.defineProperty(exports, "And", { enumerable: true, get: function () { return filters_1.And; } }); | ||
Object.defineProperty(exports, "Sources", { enumerable: true, get: function () { return filters_1.Sources; } }); | ||
Object.defineProperty(exports, "Text", { enumerable: true, get: function () { return filters_1.Text; } }); | ||
Object.defineProperty(exports, "Ciks", { enumerable: true, get: function () { return filters_1.Ciks; } }); | ||
Object.defineProperty(exports, "Tickers", { enumerable: true, get: function () { return filters_1.Tickers; } }); | ||
Object.defineProperty(exports, "Sources", { enumerable: true, get: function () { return filters_1.Sources; } }); | ||
Object.defineProperty(exports, "CategoryCodes", { enumerable: true, get: function () { return filters_1.CategoryCodes; } }); | ||
var api_1 = require("./api"); | ||
Object.defineProperty(exports, "Api", { enumerable: true, get: function () { return api_1.Api; } }); | ||
var rest_helper_1 = require("./rest-helper"); | ||
Object.defineProperty(exports, "RestHelper", { enumerable: true, get: function () { return rest_helper_1.RestHelper; } }); | ||
var wsApi_1 = require("./wsApi"); | ||
Object.defineProperty(exports, "WsApi", { enumerable: true, get: function () { return wsApi_1.WsApi; } }); | ||
var enums_1 = require("./enums"); | ||
Object.defineProperty(exports, "Source", { enumerable: true, get: function () { return enums_1.Source; } }); | ||
Object.defineProperty(exports, "WebsocketMethod", { enumerable: true, get: function () { return enums_1.WebsocketMethod; } }); | ||
Object.defineProperty(exports, "WebsocketResponseType", { enumerable: true, get: function () { return enums_1.WebsocketResponseType; } }); | ||
Object.defineProperty(exports, "FilterAction", { enumerable: true, get: function () { return enums_1.FilterAction; } }); | ||
Object.defineProperty(exports, "Field", { enumerable: true, get: function () { return enums_1.Field; } }); | ||
//# sourceMappingURL=index.js.map |
/// <reference types="ws" /> | ||
import WebSocket from "isomorphic-ws"; | ||
import { ConnectOptions, SubscribeOptions, WebsocketRequest } from "./types"; | ||
import WebSocket from "isomorphic-ws"; | ||
export declare class WsApi { | ||
@@ -5,0 +5,0 @@ private readonly websocketEndpoint; |
{ | ||
"name": "newsware", | ||
"version": "10.0.0-beta.21", | ||
"version": "10.0.0-beta.22", | ||
"description": "Typescript client for interacting with the Newsware API", | ||
@@ -5,0 +5,0 @@ "main": "lib/src/index.js", |
@@ -0,5 +1,5 @@ | ||
import { expect } from "chai"; | ||
import { TestsContext } from "../test/setup"; | ||
import { Api } from "./api"; | ||
import { Endpoint } from "./enums"; | ||
import { expect } from "chai" | ||
import { TestsContext } from "../test/setup"; | ||
import { And, CategoryCodes, Ciks, Or, Sources, Text, Tickers } from "./filters"; | ||
@@ -6,0 +6,0 @@ |
135
src/api.ts
@@ -0,1 +1,3 @@ | ||
import { RestHelper } from "rest-helper" | ||
import { Endpoint } from "./enums" | ||
import { | ||
@@ -6,3 +8,2 @@ CategoryCode, | ||
News, | ||
RestResponse, | ||
RestResponseError, | ||
@@ -12,29 +13,29 @@ RestResponseSuccess, | ||
} from "./types" | ||
import { Endpoint } from "./enums" | ||
import fetch from "isomorphic-fetch" | ||
export class Api { | ||
restEndpoint: string | ||
restHelper: RestHelper | ||
constructor( | ||
private apikey: string, | ||
apikey: string, | ||
endpoint: EndpointDescription = Endpoint.PRODUCTION | ||
) { | ||
this.restEndpoint = endpoint.restProtocol + "://" + endpoint.host + "/api/v3" | ||
this.restHelper = new RestHelper(endpoint, { | ||
"x-api-key": apikey | ||
}) | ||
} | ||
changeApikey(apikey: string) { | ||
this.apikey = apikey | ||
this.restHelper.headers["x-api-key"] = apikey | ||
} | ||
async search(filter: HistoricalFilter, errorHandler: (apiResponse: RestResponseError<News[]>) => void = this.handleError): Promise<RestResponseSuccess<News[]>> { | ||
return await this.post<HistoricalFilter, News[]>('/news', filter, errorHandler) | ||
async search(filter: HistoricalFilter, errorHandler: (apiResponse: RestResponseError<News[]>) => void = RestHelper.handleError): Promise<RestResponseSuccess<News[]>> { | ||
return await this.restHelper.post<HistoricalFilter, News[]>('/news', filter, errorHandler) | ||
} | ||
async getById(id: string, errorHandler: (apiResponse: RestResponseError<News>) => void = this.handleError): Promise<News> { | ||
return (await this.get<News>(`/news/${id}`, undefined, errorHandler)).data | ||
async getById(id: string, errorHandler: (apiResponse: RestResponseError<News>) => void = RestHelper.handleError): Promise<News> { | ||
return (await this.restHelper.get<News>(`/news/${id}`, undefined, errorHandler)).data | ||
} | ||
async getCategoryCodes(source: string): Promise<CategoryCode[]> { | ||
return (await this.get<CategoryCode[]>('/category-codes', { | ||
return (await this.restHelper.get<CategoryCode[]>('/category-codes', { | ||
source | ||
@@ -45,112 +46,4 @@ })).data; | ||
async getSources(): Promise<SourceDetails[]> { | ||
return (await (this.get<SourceDetails[]>('/sources'))).data; | ||
return (await (this.restHelper.get<SourceDetails[]>('/sources'))).data; | ||
} | ||
async get<T>( | ||
path: string, | ||
params?: any, | ||
errorHandler: (apiResponse: RestResponseError<T>) => void = this.handleError | ||
): Promise<RestResponse<T>> { | ||
return await this.request("GET", path, params, errorHandler) | ||
} | ||
async delete<T>( | ||
path: string, | ||
params?: any, | ||
errorHandler: (apiResponse: RestResponseError<T>) => void = this.handleError | ||
): Promise<RestResponse<T>> { | ||
return await this.request("DELETE", path, params, errorHandler) | ||
} | ||
async post<T, Z>( | ||
path: string, | ||
body: T, | ||
errorHandler: (apiResponse: RestResponseError<Z>) => void = this.handleError | ||
): Promise<RestResponseSuccess<Z>> { | ||
return await this.requestWithBody("POST", path, body, errorHandler) | ||
} | ||
async put<T, Z>( | ||
path: string, | ||
body: T, | ||
errorHandler: (apiResponse: RestResponseError<Z>) => void = this.handleError | ||
): Promise<RestResponseSuccess<Z>> { | ||
return await this.requestWithBody("PUT", path, body, errorHandler) | ||
} | ||
async request<T>( | ||
method: string, | ||
path: string, | ||
params?: object, | ||
errorHandler: (apiResponse: RestResponseError<T>) => void = this.handleError | ||
): Promise<RestResponse<T>> { | ||
try { | ||
var paramsString: Record<string, string> = {} | ||
if (params) { | ||
Object.keys(params).forEach(key => { | ||
paramsString[key] = typeof params[key as keyof object] === "object" | ||
? JSON.stringify(params[key as keyof object]) | ||
: params[key as keyof object] | ||
}) | ||
} | ||
const endpoint = this.restEndpoint + path + (paramsString ? "?" + new URLSearchParams(paramsString) : '') | ||
const res = await fetch(endpoint, { | ||
method: method, | ||
headers: { | ||
'content-type': 'application/json', | ||
'x-api-key': this.apikey | ||
}, | ||
}) | ||
return this.handle(res, errorHandler) | ||
} catch (e: any) { | ||
if (e.cause?.errors?.length > 0) { | ||
throw Error(e.cause.errors[0]) | ||
} | ||
throw e | ||
} | ||
} | ||
private async requestWithBody<T, Z>( | ||
method: string, | ||
path: string, | ||
body: T, | ||
errorHandler: (apiResponse: RestResponseError<Z>) => void = this.handleError | ||
): Promise<RestResponseSuccess<Z>> { | ||
try { | ||
const res = await fetch(this.restEndpoint + path, { | ||
method: method, | ||
body: JSON.stringify(body), | ||
headers: { | ||
'content-type': 'application/json', | ||
'x-api-key': this.apikey | ||
}, | ||
}) | ||
return this.handle(res, errorHandler) | ||
} catch (e: any) { | ||
if (e.cause?.errors?.length > 0) { | ||
throw Error(e.cause.errors[0]) | ||
} | ||
throw e | ||
} | ||
} | ||
async handle<T>(res: Response, handleError: (apiResponse: RestResponseError<T>) => void): Promise<RestResponse<T>> { | ||
const restResponse = await res.json() as RestResponseSuccess<T> | ||
if (res.status < 200 || res.status > 299) { | ||
await handleError(restResponse as RestResponseError<T>) | ||
} | ||
return restResponse | ||
} | ||
async handleError<T>(apiResponse: RestResponseError<T>) { | ||
throw Error(`Status ${apiResponse.error.code}${apiResponse.error | ||
? ": " + apiResponse.error.message.charAt(0).toUpperCase() + apiResponse.error.message.slice(1) | ||
: "" | ||
}`) | ||
} | ||
} |
@@ -1,3 +0,3 @@ | ||
import {Filter, FilterArray, FiltersMetadata, FilterText, TextOptions} from "./types"; | ||
import {FilterAction, FilterType} from "./enums"; | ||
import { FilterAction, FilterType } from "./enums"; | ||
import { Filter, FilterArray, FiltersMetadata, FilterText, TextOptions } from "./types"; | ||
@@ -4,0 +4,0 @@ export class Text { |
@@ -1,18 +0,9 @@ | ||
export { Or, And, Text, Ciks, Tickers, Sources, CategoryCodes } from "./filters"; | ||
export { Api } from "./api" | ||
export { WsApi } from "./wsApi" | ||
export { Api } from "./api"; | ||
export { Field, FilterAction, Source, WebsocketMethod, WebsocketResponseType } from "./enums"; | ||
export { And, CategoryCodes, Ciks, Or, Sources, Text, Tickers } from "./filters"; | ||
export { RestHelper } from "./rest-helper"; | ||
export { | ||
News, | ||
Filter, | ||
TextOptions, | ||
WebsocketResponse, | ||
WebsocketErrorResponse, | ||
ConnectOptions, | ||
HistoricalFilter, | ||
RestResponse, | ||
RestResponseSuccess, | ||
RestResponseError, | ||
CategoryCode, | ||
SourceDetails | ||
} from "./types" | ||
export { Source, WebsocketMethod, WebsocketResponseType, FilterAction, Field } from "./enums" | ||
CategoryCode, ConnectOptions, Filter, HistoricalFilter, News, RestResponse, RestResponseError, RestResponseSuccess, SourceDetails, TextOptions, WebsocketErrorResponse, WebsocketResponse | ||
} from "./types"; | ||
export { WsApi } from "./wsApi"; | ||
@@ -0,4 +1,4 @@ | ||
import WebSocket, { CloseEvent, ErrorEvent, MessageEvent } from "isomorphic-ws"; | ||
import { Endpoint, WebsocketMethod, WebsocketResponseType } from "./enums"; | ||
import { ConnectOptions, SubscribeOptions, WebsocketRequest, WebsocketResponse, } from "./types"; | ||
import WebSocket, { CloseEvent, ErrorEvent, MessageEvent } from "isomorphic-ws" | ||
import { Endpoint, WebsocketMethod, WebsocketResponseType } from "./enums"; | ||
@@ -5,0 +5,0 @@ const defaultOptions: Required<ConnectOptions> = { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
101992
37
1996
2