Skip to content

Commit 96f6b38

Browse files
shuismanTeun Zengerink
authored andcommitted
feat(apps): Add support for new campaigns endpoints
After removing some Deprecations warnings in the examples, support for the Campaigns for Apps endpoints were added.
1 parent a92470b commit 96f6b38

File tree

10 files changed

+111
-14
lines changed

10 files changed

+111
-14
lines changed

example/example.js

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const usabilla = new Usabilla(args[0], args[1]);
1010
// Get all buttons for this account.
1111
usabilla.websites.buttons.get().then((buttons) => {
1212

13-
const button = buttons[1];
13+
const button = buttons[0];
1414

1515
if (!button) {
1616
return;
@@ -25,6 +25,8 @@ usabilla.websites.buttons.get().then((buttons) => {
2525
};
2626
usabilla.websites.buttons.feedback.get(buttonFeedbackQuery).then((feedback) => {
2727
console.log('# button feedback', feedback.length);
28+
}).catch((reason) => {
29+
console.error(reason);
2830
});
2931

3032
}).catch((reason) => {
@@ -49,12 +51,16 @@ usabilla.websites.campaigns.get().then((campaigns) => {
4951

5052
// Get the responses of the first campaign
5153
usabilla.websites.campaigns.results.get(campaignQuery).then((responses) => {
52-
console.log('# campaign responses', responses.length);
54+
console.log('# web campaign responses', responses.length);
55+
}).catch((reason) => {
56+
console.error(reason);
5357
});
5458

5559
// Get the stats of the first campaign
5660
usabilla.websites.campaigns.stats.get(campaignQuery).then((stats) => {
57-
console.log('campaign stats', stats);
61+
console.log('web campaign stats', stats);
62+
}).catch((reason) => {
63+
console.error(reason);
5864
});
5965
}).catch((reason) => {
6066
// If the usabilla call fails, we want to see the error message
@@ -72,6 +78,8 @@ usabilla.websites.inpage.get().then((inPageWidgets) => {
7278
// Get the feedback of the first inpage widget
7379
usabilla.websites.inpage.feedback.get(inPageQuery).then((feedback) => {
7480
console.log('# inpage feedback', feedback.length);
81+
}).catch((reason) => {
82+
console.error(reason);
7583
});
7684
}).catch((reason) => {
7785
// If the usabilla call fails, we want to see the error message
@@ -98,7 +106,7 @@ usabilla.email.widgets.get().then((emailWidgets) => {
98106
// Get all apps forms for this account.
99107
usabilla.apps.forms.get().then((appsForms) => {
100108

101-
const appsForm = appsForms[1];
109+
const appsForm = appsForms[0];
102110

103111
if (!appsForm) {
104112
return;
@@ -117,3 +125,28 @@ usabilla.apps.forms.get().then((appsForms) => {
117125
// If the usabilla call fails, we want to see the error message
118126
console.error(reason);
119127
});
128+
129+
// Get all apps campaigns for this account.
130+
usabilla.apps.campaigns.get().then((appsCampaigns) => {
131+
132+
// Use the first campaign found
133+
const appsCampaign = appsCampaigns[0];
134+
if (!appsCampaign) {
135+
return;
136+
}
137+
138+
// Get the feedback for a apps form with id.
139+
let appsCampaignQuery = {
140+
id: appsCampaign.id
141+
};
142+
143+
// Get the feedback of the second app form
144+
usabilla.apps.campaigns.results.get(appsCampaignQuery).then((responses) => {
145+
console.log('# apps campaign responses', responses.length);
146+
}).catch((reason) => {
147+
console.error(reason);
148+
});
149+
150+
}).catch((reason) => {
151+
console.error(reason);
152+
});
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
const CampaignsResultsResource = require('./campaignsResultsResource');
2+
const Resource = require('./resource');
3+
4+
/**
5+
* Apps Campaigns resource.
6+
*/
7+
class AppsCampaignsResource extends Resource {
8+
constructor(base, signatureFactory, config) {
9+
const baseUrl = `${base}/campaign`;
10+
super(baseUrl, signatureFactory, config);
11+
12+
this.results = new CampaignsResultsResource(
13+
baseUrl,
14+
signatureFactory,
15+
config
16+
);
17+
}
18+
}
19+
20+
module.exports = AppsCampaignsResource;

src/resources/appsProduct.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const FormsResource = require('./formsResource');
2+
const AppsCampaignsResource = require('./appsCampaignsResource');
23

34
/**
45
* Apps product endpoints.
@@ -8,6 +9,7 @@ class AppsProduct {
89
const baseUrl = `${base}/apps`;
910

1011
this.forms = new FormsResource(baseUrl, signatureFactory, config);
12+
this.campaigns = new AppsCampaignsResource(baseUrl, signatureFactory, config);
1113
}
1214
}
1315

src/resources/campaignsResultsResource.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const Resource = require('./resource');
22

33
/**
4-
* Websites Campaign Results resource.
4+
* Websites and Apps Campaign Results resource.
55
* This resource provides the responses for a single or all campaigns.
66
*/
77
class CampaignsResultsResource extends Resource {
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
const Resource = require('./resource');
21
const CampaignsResultsResource = require('./campaignsResultsResource');
3-
const CampaignsStatsResource = require('./campaignsStatsResource');
2+
const WebCampaignsStatsResource = require('./webCampaignsStatsResource');
3+
const Resource = require('./resource');
44

55
/**
66
* Websites Campaigns resource.
77
*/
8-
class CampaignsResource extends Resource {
8+
class WebCampaignsResource extends Resource {
99
constructor(base, signatureFactory, config) {
1010
const baseUrl = `${base}/campaign`;
1111
super(baseUrl, signatureFactory, config);
@@ -15,8 +15,8 @@ class CampaignsResource extends Resource {
1515
signatureFactory,
1616
config
1717
);
18-
this.stats = new CampaignsStatsResource(baseUrl, signatureFactory, config);
18+
this.stats = new WebCampaignsStatsResource(baseUrl, signatureFactory, config);
1919
}
2020
}
2121

22-
module.exports = CampaignsResource;
22+
module.exports = WebCampaignsResource;

src/resources/campaignsStatsResource.js renamed to src/resources/webCampaignsStatsResource.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ const Resource = require('./resource');
44
* Websites Campaign Stats resource.
55
* This resource provides the main statistics from a campaign.
66
*/
7-
class CampaignsStatsResource extends Resource {
7+
class WebCampaignsStatsResource extends Resource {
88
constructor(base, signatureFactory, config) {
99
const baseUrl = `${base}/:id/stats`;
1010
super(baseUrl, signatureFactory, config);
1111
}
1212
}
1313

14-
module.exports = CampaignsStatsResource;
14+
module.exports = WebCampaignsStatsResource;

src/resources/websitesProduct.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const ButtonsResource = require('./buttonsResource');
2-
const CampaignsResource = require('./campaignsResource');
2+
const WebCampaignsResource = require('./webCampaignsResource');
33
const InPageResource = require('./inPageResource');
44

55
/**
@@ -10,7 +10,7 @@ class WebsitesProduct {
1010
const baseUrl = `${base}/websites`;
1111

1212
this.buttons = new ButtonsResource(baseUrl, signatureFactory, config);
13-
this.campaigns = new CampaignsResource(baseUrl, signatureFactory, config);
13+
this.campaigns = new WebCampaignsResource(baseUrl, signatureFactory, config);
1414
this.inpage = new InPageResource(baseUrl, signatureFactory, config);
1515
}
1616
}

test/resources/appsProduct.spec.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
const Usabilla = require('../../src/index');
2+
const FormsResource = require('../../src/resources/formsResource');
3+
const AppsCampaignsResource = require('../../src/resources/appsCampaignsResource');
4+
5+
describe('Usabilla Apps Product', function() {
6+
beforeEach(function() {
7+
this.usabilla = new Usabilla('access', 'secret');
8+
});
9+
10+
it('has resources instantiated', function() {
11+
expect(this.usabilla.apps.forms instanceof FormsResource).toBe(true);
12+
expect(this.usabilla.apps.campaigns instanceof AppsCampaignsResource).toBe(true);
13+
});
14+
});
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
const Usabilla = require('../../src/index');
2+
const WidgetsResource = require('../../src/resources/widgetsResource');
3+
4+
describe('Usabilla Email Product', function() {
5+
beforeEach(function() {
6+
this.usabilla = new Usabilla('access', 'secret');
7+
});
8+
9+
it('has resources instantiated', function() {
10+
expect(this.usabilla.email.widgets instanceof WidgetsResource).toBe(true);
11+
});
12+
});

test/resources/webProduct.spec.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
const Usabilla = require('../../src/index');
2+
const ButtonsResource = require('../../src/resources/buttonsResource');
3+
const WebCampaignsResource = require('../../src/resources/webCampaignsResource');
4+
const InPageResource = require('../../src/resources/inPageResource');
5+
6+
describe('Usabilla Web Product', function() {
7+
beforeEach(function() {
8+
this.usabilla = new Usabilla('access', 'secret');
9+
});
10+
11+
it('has resources instantiated', function() {
12+
expect(this.usabilla.websites.buttons instanceof ButtonsResource).toBe(true);
13+
expect(this.usabilla.websites.campaigns instanceof WebCampaignsResource).toBe(true);
14+
expect(this.usabilla.websites.inpage instanceof InPageResource).toBe(true);
15+
});
16+
});

0 commit comments

Comments
 (0)