Skip to content

Commit ccc46be

Browse files
author
Hannah
committed
restoring entities/linked
1 parent e9d9a4e commit ccc46be

File tree

5 files changed

+111
-2
lines changed

5 files changed

+111
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ api.rosette(endpoint, function(err, res){
4444
| targetScheme | name translation | No |
4545
| options | relationships | No |
4646
| accuracyMode | relationships | Yes |
47+
| linked (deprecated) | entities | No |
4748
| linkEntities | entities | No |
4849
| explain | sentiment | No |
4950
| morphology | morphology | Yes |

examples/entities_linked.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"use strict";
2+
3+
var Api = require("../lib/Api");
4+
var ArgumentParser = require("argparse").ArgumentParser;
5+
6+
var parser = new ArgumentParser({
7+
addHelp: true,
8+
description: "Get linked entities from a piece of text"
9+
});
10+
parser.addArgument(["--key"], {help: "Rosette API key", required: true});
11+
parser.addArgument(["--url"], {help: "Rosette API alt-url", required: false});
12+
var args = parser.parseArgs();
13+
var api = new Api(args.key, args.url);
14+
var endpoint = "entities";
15+
16+
api.parameters.content = "Last month director Paul Feig announced the movie will have an all-star female cast including Kristen Wiig, Melissa McCarthy, Leslie Jones and Kate McKinnon.";
17+
api.parameters.linked = true;
18+
api.parameters.genre = "social-media";
19+
20+
api.rosette(endpoint, function(err, res){
21+
if(err){
22+
console.log(err);
23+
} else {
24+
console.log(JSON.stringify(res, null, 2));
25+
}
26+
});

lib/entities.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ var rosetteConstants = require("./rosetteConstants");
1919
var RosetteException = require("./rosetteExceptions");
2020
var rosetteRequest = require("./rosetteRequest");
2121

22+
const util = require('util');
23+
2224
/**
2325
* @class
2426
*
@@ -39,7 +41,14 @@ function entities() {
3941
entities.prototype.getResults = function(parameters, userKey, serviceURL, callback) {
4042

4143
if (parameters.documentFile != null) {
42-
parameters.loadFile(parameters.documentFile, parameters, userKey, serviceURL, "entities", callback);
44+
if (parameters.loadParams().linked == true) {
45+
console.log("entities/linked endpoint is deprecated and has been combined with entities. no need to specify param linked.");
46+
util.deprecate(parameters.loadFile(parameters.loadParams().documentFile, parameters, userKey, serviceURL, "entities/linked", callback),"entities/linked endpoint is deprecated and combined with /entities");
47+
} else {
48+
parameters.loadFile(parameters.loadParams().documentFile, parameters, userKey, serviceURL, "entities", callback);
49+
}
50+
51+
4352

4453
} else {
4554

@@ -50,10 +59,17 @@ entities.prototype.getResults = function(parameters, userKey, serviceURL, callba
5059
return callback(new RosetteException("badArgument", "Cannot supply both Content and ContentUri", "bad arguments"));
5160
} else {
5261
// configure URL
53-
var urlParts = URL.parse(serviceURL + "entities");
62+
if (parameters.loadParams().linked == true) {
63+
console.log("entities/linked endpoint is deprecated and has been combined with entities. no need to specify param linked.");
64+
var urlParts = URL.parse(serviceURL + "entities/linked");
65+
} else {
66+
urlParts = URL.parse(serviceURL + "entities");
67+
}
68+
5469

5570
var req = new rosetteRequest();
5671
req.makeRequest('POST', userKey, urlParts, parameters, callback);
72+
5773
}
5874
}
5975

lib/parameters.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ function parameters() {
6363
this.options = null;
6464
this.accuracyMode = null;
6565

66+
//entities parameters
67+
this.linked = null;
68+
6669
//sentiment parameters
6770
this.explain = null;
6871
this.shortString = null;

tests/unittests.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,69 @@ describe("Entities Endpoint", function() {
421421

422422
});
423423

424+
describe("Entities Linked Endpoint", function() {
425+
beforeEach(function(done) {
426+
var mockResponse = JSON.stringify({'name':'Rosette API', 'versionChecked':true});
427+
428+
nock('https://api.rosette.com', {"encodedQueryParams": true })
429+
.post('/rest/v1/info')
430+
.query({"clientVersion":"1.1"})
431+
.reply(200, JSON.parse(mockResponse));
432+
433+
nock('https://api.rosette.com', {"encodedQueryParams": true })
434+
.post('/rest/v1/entities/linked')
435+
.query({"clientVersion":"1.1"})
436+
.reply(200, JSON.parse(mockResponse));
437+
done();
438+
});
439+
440+
afterEach(function(done) {
441+
nock.cleanAll();
442+
done();
443+
});
444+
445+
it("successfully calls the entities linked endpoint", function(done) {
446+
var api = new Api('123456789', 'https://api.rosette.com/rest/v1');
447+
api.parameters.content = "Some Content";
448+
api.parameters.linked = true;
449+
450+
api.rosette("entities", function(err, res) {
451+
chai.expect(err).to.be.null;
452+
chai.expect(res.name).to.equal('Rosette API');
453+
done();
454+
});
455+
456+
});
457+
458+
it("detects content and contentUri are defined", function(done) {
459+
var api = new Api('123456789', 'https://api.rosette.com/rest/v1');
460+
api.parameters.content = "Sample Content";
461+
api.parameters.contentUri = "http://some.url.com";
462+
api.parameters.linked = true;
463+
464+
api.rosette("entities", function(err, res) {
465+
chai.expect(err).to.not.be.null;
466+
chai.expect(err.name).to.equal('RosetteException');
467+
chai.expect(err.message).to.contain('badArgument');
468+
done();
469+
});
470+
});
471+
472+
it("detects neither content nor contentUri are defined", function(done) {
473+
var api = new Api('123456789', 'https://api.rosette.com/rest/v1');
474+
api.parameters.linked = true;
475+
476+
api.rosette("entities", function(err, res) {
477+
chai.expect(err).to.not.be.null;
478+
chai.expect(err.name).to.equal('RosetteException');
479+
chai.expect(err.message).to.contain('badArgument');
480+
done();
481+
});
482+
});
483+
484+
});
485+
486+
424487
describe("Morphology Endpoint (suite covers all features)", function() {
425488
beforeEach(function(done) {
426489
var mockResponse = JSON.stringify({'name': 'Rosette API', 'versionChecked': true});

0 commit comments

Comments
 (0)