aboutsummaryrefslogtreecommitdiff
path: root/src/client/cognitive_services
diff options
context:
space:
mode:
authorab <abdullah_ahmed@brown.edu>2019-11-20 16:28:39 -0500
committerab <abdullah_ahmed@brown.edu>2019-11-20 16:28:39 -0500
commitc3720ee2e2828d112b6ad34a7b6106d3c5f27878 (patch)
tree41f03410f95e799af1479fb59a459d7ff752fc3c /src/client/cognitive_services
parente103be2d58da2a6809dd4ad5f0b5f445d8d6c96b (diff)
bing integrated
Diffstat (limited to 'src/client/cognitive_services')
-rw-r--r--src/client/cognitive_services/CognitiveServices.ts54
1 files changed, 53 insertions, 1 deletions
diff --git a/src/client/cognitive_services/CognitiveServices.ts b/src/client/cognitive_services/CognitiveServices.ts
index d496b442e..641747207 100644
--- a/src/client/cognitive_services/CognitiveServices.ts
+++ b/src/client/cognitive_services/CognitiveServices.ts
@@ -17,6 +17,7 @@ type AnalysisApplier<D> = (target: Doc, relevantKeys: string[], data: D, ...args
type BodyConverter<D> = (data: D) => string;
type Converter = (results: any) => Field;
type TextConverter = (results: any, data: string) => Promise<{ keyterms: Field, external_recommendations: any, kp_string: string[] }>;
+type BingConverter = (results: any) => Promise<{ title_vals: string[], url_vals: string[] }>;
export type Tag = { name: string, confidence: number };
export type Rectangle = { top: number, left: number, width: number, height: number };
@@ -25,7 +26,8 @@ export enum Service {
ComputerVision = "vision",
Face = "face",
Handwriting = "handwriting",
- Text = "text"
+ Text = "text",
+ Bing = "bing"
}
export enum Confidence {
@@ -225,6 +227,56 @@ export namespace CognitiveServices {
}
+ export namespace BingSearch {
+ export const Manager: APIManager<string> = {
+ converter: (data: string) => {
+ return data;
+ },
+ requester: async (apiKey: string, query: string) => {
+ let xhttp = new XMLHttpRequest();
+ let serverAddress = "https://api.cognitive.microsoft.com";
+ let endpoint = serverAddress + '/bing/v5.0/search?q=' + encodeURIComponent(query);
+ let promisified = (resolve: any, reject: any) => {
+ xhttp.onreadystatechange = function () {
+ if (this.readyState === 4) {
+ let result = xhttp.responseText;
+ switch (this.status) {
+ case 200:
+ return resolve(result);
+ case 400:
+ default:
+ return reject(result);
+ }
+ }
+ };
+
+ if (apiKey) {
+ xhttp.open("GET", endpoint, true);
+ xhttp.setRequestHeader('Ocp-Apim-Subscription-Key', apiKey);
+ xhttp.setRequestHeader('Content-Type', 'application/json');
+ xhttp.send();
+ }
+ else {
+ console.log("API key for BING unavailable");
+ }
+ };
+ return new Promise<any>(promisified);
+ }
+
+ };
+
+ export namespace Appliers {
+ export const analyzer = async (query: string, converter: BingConverter) => {
+ let results = await ExecuteQuery(Service.Bing, Manager, query);
+ console.log(results);
+ const { title_vals, url_vals } = await converter(results);
+ return { title_vals, url_vals };
+ };
+ }
+
+ }
+
+
export namespace Text {
export const Manager: APIManager<string> = {
converter: (data: string) => {