diff options
| author | ab <abdullah_ahmed@brown.edu> | 2019-11-20 16:28:39 -0500 |
|---|---|---|
| committer | ab <abdullah_ahmed@brown.edu> | 2019-11-20 16:28:39 -0500 |
| commit | c3720ee2e2828d112b6ad34a7b6106d3c5f27878 (patch) | |
| tree | 41f03410f95e799af1479fb59a459d7ff752fc3c /src/client/cognitive_services | |
| parent | e103be2d58da2a6809dd4ad5f0b5f445d8d6c96b (diff) | |
bing integrated
Diffstat (limited to 'src/client/cognitive_services')
| -rw-r--r-- | src/client/cognitive_services/CognitiveServices.ts | 54 |
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) => { |
