2020-05-17 11:37:18 +02:00
|
|
|
const ExamplesHandler = function () {
|
|
|
|
const config = {
|
|
|
|
username: process.env.ZULIP_USERNAME,
|
|
|
|
apiKey: process.env.ZULIP_API_KEY,
|
|
|
|
realm: process.env.ZULIP_REALM,
|
|
|
|
};
|
2020-05-19 18:39:17 +02:00
|
|
|
const examples = {};
|
|
|
|
const response_data = [];
|
2020-05-17 11:37:18 +02:00
|
|
|
|
|
|
|
const make_result_object = (example, result, count = false) => {
|
|
|
|
const name = count !== false ? `${example.name}_${count}` : example.name;
|
|
|
|
return {
|
|
|
|
name,
|
|
|
|
endpoint: example.endpoint.split(':')[0],
|
|
|
|
method: example.endpoint.split(':')[1],
|
|
|
|
status_code: example.status_code.toString(),
|
|
|
|
result,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2020-05-19 18:39:17 +02:00
|
|
|
const generate_validation_data = async (client, example) => {
|
|
|
|
const result = await example.func(client);
|
|
|
|
if (Array.isArray(result)) {
|
|
|
|
// Handle special cases where some examples make
|
|
|
|
// more than 1 API requests.
|
|
|
|
result.forEach((r, index) => {
|
|
|
|
response_data.push(make_result_object(example, r, index));
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
response_data.push(make_result_object(example, result));
|
2020-05-17 11:37:18 +02:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const main = async () => {
|
2020-05-19 18:39:17 +02:00
|
|
|
const Zulip = require('zulip-js');
|
|
|
|
const client = await Zulip(config);
|
|
|
|
|
|
|
|
await generate_validation_data(client, examples.send_message);
|
|
|
|
await generate_validation_data(client, examples.create_user);
|
2020-06-21 20:43:09 +02:00
|
|
|
await generate_validation_data(client, examples.get_custom_emoji);
|
2020-06-21 20:51:21 +02:00
|
|
|
await generate_validation_data(client, examples.delete_queue);
|
2020-06-21 21:46:53 +02:00
|
|
|
await generate_validation_data(client, examples.get_messages);
|
2020-06-21 21:58:07 +02:00
|
|
|
await generate_validation_data(client, examples.get_own_user);
|
2020-06-21 22:25:48 +02:00
|
|
|
await generate_validation_data(client, examples.get_stream_id);
|
2020-06-21 22:32:42 +02:00
|
|
|
await generate_validation_data(client, examples.get_stream_topics);
|
2020-06-21 22:41:13 +02:00
|
|
|
await generate_validation_data(client, examples.get_subscriptions);
|
2020-05-19 18:39:17 +02:00
|
|
|
|
|
|
|
console.log(JSON.stringify(response_data));
|
|
|
|
return;
|
2020-05-17 11:37:18 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
const add_example = (name, endpoint, status_code, func) => {
|
2020-05-19 18:39:17 +02:00
|
|
|
const example = {
|
2020-05-17 11:37:18 +02:00
|
|
|
name,
|
|
|
|
endpoint,
|
|
|
|
status_code,
|
|
|
|
func,
|
2020-05-19 18:39:17 +02:00
|
|
|
};
|
|
|
|
examples[name] = example;
|
2020-05-17 11:37:18 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
return {
|
|
|
|
main,
|
|
|
|
add_example,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2020-05-17 12:26:12 +02:00
|
|
|
const {main, add_example} = ExamplesHandler();
|
2020-05-17 11:37:18 +02:00
|
|
|
|
|
|
|
// Declare all the examples below.
|
|
|
|
|
2020-05-17 12:29:49 +02:00
|
|
|
add_example('send_message', '/messages:post', 200, async (client) => {
|
|
|
|
// {code_example|start}
|
|
|
|
// Send a stream message
|
|
|
|
let params = {
|
2020-06-21 22:41:13 +02:00
|
|
|
to: 'social',
|
2020-05-17 12:29:49 +02:00
|
|
|
type: 'stream',
|
|
|
|
topic: 'Castle',
|
|
|
|
content: 'I come not, friends, to steal away your hearts.',
|
|
|
|
};
|
|
|
|
const result_1 = await client.messages.send(params);
|
|
|
|
// {code_example|end}
|
|
|
|
|
|
|
|
// {code_example|start}
|
|
|
|
// Send a private message
|
|
|
|
const user_id = 9;
|
|
|
|
params = {
|
|
|
|
to: [user_id],
|
|
|
|
type: 'private',
|
|
|
|
content: 'With mirth and laughter let old wrinkles come.',
|
|
|
|
};
|
|
|
|
const result_2 = await client.messages.send(params);
|
|
|
|
// {code_example|end}
|
|
|
|
return [result_1, result_2];
|
|
|
|
});
|
|
|
|
|
2020-05-17 12:26:12 +02:00
|
|
|
add_example('create_user', '/users:post', 200, async (client) => {
|
|
|
|
// {code_example|start}
|
|
|
|
const params = {
|
2020-06-10 21:18:27 +02:00
|
|
|
email: 'notnewbie@zulip.com',
|
2020-05-17 12:26:12 +02:00
|
|
|
password: 'temp',
|
|
|
|
full_name: 'New User',
|
|
|
|
short_name: 'newbie',
|
|
|
|
};
|
|
|
|
|
|
|
|
return await client.users.create(params);
|
|
|
|
// {code_example|end}
|
|
|
|
});
|
|
|
|
|
2020-06-21 20:43:09 +02:00
|
|
|
add_example('get_custom_emoji', '/realm/emoji:get', 200, async (client) => {
|
|
|
|
// {code_example|start}
|
|
|
|
return await client.emojis.retrieve();
|
|
|
|
// {code_example|end}
|
|
|
|
});
|
|
|
|
|
2020-06-21 20:51:21 +02:00
|
|
|
add_example('delete_queue', '/events:delete', 200, async (client) => {
|
|
|
|
// {code_example|start}
|
|
|
|
// Register a queue
|
|
|
|
const queueParams = {
|
|
|
|
event_types: ['message'],
|
|
|
|
};
|
|
|
|
const res = await client.queues.register(queueParams);
|
|
|
|
|
|
|
|
// Delete a queue
|
|
|
|
const deregisterParams = {
|
|
|
|
queue_id: res.queue_id,
|
|
|
|
};
|
|
|
|
|
|
|
|
return await client.queues.deregister(deregisterParams);
|
|
|
|
// {code_example|end}
|
|
|
|
});
|
|
|
|
|
2020-06-21 21:46:53 +02:00
|
|
|
add_example('get_messages', '/messages:get', 200, async (client) => {
|
|
|
|
// {code_example|start}
|
|
|
|
const readParams = {
|
|
|
|
anchor: 'newest',
|
|
|
|
num_before: 100,
|
|
|
|
num_after: 0,
|
|
|
|
narrow: [{operator: 'sender', operand: 'iago@zulip.com'},
|
|
|
|
{operator: 'stream', operand: 'Verona'}],
|
|
|
|
};
|
|
|
|
|
|
|
|
// Get the 100 last messages sent by "iago@zulip.com" to the stream "Verona"
|
|
|
|
return await client.messages.retrieve(readParams);
|
|
|
|
// {code_example|end}
|
|
|
|
});
|
|
|
|
|
2020-06-21 21:58:07 +02:00
|
|
|
add_example('get_own_user', '/users/me:get', 200, async (client) => {
|
|
|
|
// {code_example|start}
|
|
|
|
// Get the profile of the user/bot that requests this endpoint,
|
|
|
|
// which is `client` in this case:
|
|
|
|
return await client.users.me.getProfile();
|
|
|
|
// {code_example|end}
|
|
|
|
});
|
|
|
|
|
2020-06-21 22:25:48 +02:00
|
|
|
add_example('get_stream_id', '/get_stream_id:get', 200, async (client) => {
|
|
|
|
// {code_example|start}
|
|
|
|
// Get the ID of a given stream
|
|
|
|
return await client.streams.getStreamId('Denmark');
|
|
|
|
// {code_example|end}
|
|
|
|
});
|
|
|
|
|
2020-06-21 22:32:42 +02:00
|
|
|
add_example('get_stream_topics', '/users/me/{stream_id}/topics:get', 200, async (client) => {
|
|
|
|
// {code_example|start}
|
|
|
|
// Get all the topics in stream with ID 1
|
|
|
|
return client.streams.topics.retrieve({ stream_id: 1 });
|
|
|
|
// {code_example|end}
|
|
|
|
});
|
|
|
|
|
2020-06-21 22:41:13 +02:00
|
|
|
add_example('get_subscriptions', '/users/me/subscriptions:get', 200, async (client) => {
|
|
|
|
// {code_example|start}
|
|
|
|
// Get all streams that the user is subscribed to
|
|
|
|
return await client.streams.subscriptions.retrieve();
|
|
|
|
// {code_example|end}
|
|
|
|
});
|
|
|
|
|
2020-05-17 11:37:18 +02:00
|
|
|
main();
|