@point-api/js-sdk
Version:
Javascript SDK for Point API
106 lines • 3.4 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const suggestionsStore_1 = require("./suggestionsStore");
class LocalApiServer {
constructor() {
this.store = new suggestionsStore_1.default();
}
httpRequest(method, url, data, headers) {
if (url.startsWith('/snippets')) {
if ('GET' === method) {
return this.mockResponse(this.extensionCustomGet());
}
else if ('POST' === method) {
return this.mockResponse(this.extensionCustomPost(data));
}
}
else if (url.startsWith('/account')) {
if ('GET' === method) {
return this.mockResponse(this.accountGet());
}
}
else if (url.startsWith('/interactions')) {
return this.mockResponse({ success: true });
}
return this.mockResponse({ success: false });
}
extensionCustomGet() {
const snippets = this.store.snippets.slice();
return {
success: true,
snippets
};
}
extensionCustomPost(snippet) {
if (this.store.snippetNameExists(snippet.name)) {
return {
success: false,
status: "Snippet name must be unique"
};
}
this.store.addSnippet(snippet.name, snippet.content, snippet.labels);
return {
success: true,
status: "success"
};
}
accountGet() {
return {
"success": true,
"emailAddress": "demo@pointapi.com",
"name": "Demo Account",
"preferences": {
"searchType": "standard",
"snippetMenuEverywhere": false,
"tabCompletion": true,
"websites": []
},
"subscription": {
"dailyLimit": 0,
"dailyUsage": 0,
"expirationDate": 4102488000.000,
"membershipType": "premium",
"willRenew": true
}
};
}
getSnippetsByContent(seedText, currentContext) {
const seedTextLower = seedText.toLowerCase();
const snippets = this.store.snippets
.filter((meta) => meta.content.toLowerCase().startsWith(seedTextLower))
.slice(0, 3);
return {
snippets,
seedText,
responseId: this.randomResponseId(),
};
}
getSnippetsByName(seedText) {
const snippets = this.store.snippets.
filter((meta) => meta.name.toLowerCase().startsWith(seedText.toLowerCase())).
slice(0, 3);
return {
snippets,
seedText,
responseId: this.randomResponseId(),
};
}
addSnippet(name, content, labels, addToBottom) {
this.store.addSnippet(name, content, labels, addToBottom);
}
mockResponse(body) {
const init = {
status: !body.success ? 400 : 200,
statusText: !body.success ? "BAD REQUEST" : "OK",
headers: {
"content-type": "application/json"
}
};
return new Response(JSON.stringify(body), init);
}
randomResponseId() {
return String(Date.now());
}
}
exports.default = LocalApiServer;
//# sourceMappingURL=localApiServer.js.map