UNPKG

2.59 kBJavaScriptView Raw
1const Joi = require('@hapi/joi');
2const { validate, prepare } = require('../../utils/options');
3
4// Validation
5const _id = Joi.number().positive();
6const _data = Joi.object();
7
8// Initialize Endpoint
9module.exports = (options = {}) => {
10 const { error } = validate(options);
11 if (error) throw new Error(error.details[0].message);
12
13 const { url, headers } = prepare(options);
14
15 return {
16 /**
17 * Listing Monitored Twitter Handles
18 *
19 * GET /api/v2/channels/twitter/monitored_twitter_handles.json
20 * https://developer.zendesk.com/rest_api/docs/support/twitter_channel#listing-monitored-twitter-handles
21 */
22 list: () => {
23 // Ignore any options
24 return {
25 method: 'GET',
26 url: `${url}/api/v2/channels/twitter/monitored_twitter_handles.json`,
27 headers
28 };
29 },
30
31 /**
32 * Getting Monitored Twitter Handle
33 *
34 * GET /api/v2/channels/twitter/monitored_twitter_handles/{id}.json
35 * https://developer.zendesk.com/rest_api/docs/support/twitter_channel#getting-monitored-twitter-handle
36 */
37 show: (options = {}) => {
38 const { error } = Joi.object({
39 id: _id.required()
40 }).validate(options);
41 if (error) throw new Error(error.details[0].message);
42
43 const { id } = options;
44 return {
45 method: 'GET',
46 url: `${url}/api/v2/channels/twitter/monitored_twitter_handles/${id}.json`,
47 headers
48 };
49 },
50
51 /**
52 * Create Ticket from Tweet
53 *
54 * POST /api/v2/channels/twitter/tickets.json
55 * https://developer.zendesk.com/rest_api/docs/support/twitter_channel#create-ticket-from-tweet
56 */
57 create: (options = {}) => {
58 const { error } = Joi.object({
59 data: _data.required()
60 }).validate(options);
61 if (error) throw new Error(error.details[0].message);
62
63 const { data } = options;
64 return {
65 method: 'POST',
66 url: `${url}/api/v2/channels/twitter/tickets.json`,
67 headers,
68 data
69 };
70 },
71
72 /**
73 * Getting Twicket status
74 *
75 * GET /api/v2/channels/twitter/tickets/{id}/statuses.json
76 * https://developer.zendesk.com/rest_api/docs/support/twitter_channel#getting-twicket-status
77 */
78 status: (options = {}) => {
79 const { error } = Joi.object({
80 id: _id.required()
81 }).validate(options);
82 if (error) throw new Error(error.details[0].message);
83
84 const { id } = options;
85 return {
86 method: 'GET',
87 url: `${url}/api/v2/channels/twitter/tickets/${id}/statuses.json`,
88 headers
89 };
90 }
91 };
92};