Alex Wallen 43ce2a8e10
[zapier] add response middleware (#19760)
* feat: add zapier response middleware

* chore: add samples
2024-10-03 01:02:25 +08:00

344 lines
12 KiB
JavaScript

const samples = require('../samples/UserApi');
const User = require('../models/User');
const utils = require('../utils/utils');
module.exports = {
createUser: {
key: 'createUser',
noun: 'user',
display: {
label: 'Create user',
description: 'This can only be done by the logged in user.',
hidden: false,
},
operation: {
inputFields: [
...User.fields(),
],
outputFields: [
],
perform: async (z, bundle) => {
const options = {
url: utils.replacePathParameters('http://petstore.swagger.io/v2/user'),
method: 'POST',
removeMissingValuesFrom: { params: true, body: true },
headers: {
'Content-Type': 'application/json',
'Accept': '',
},
params: {
},
body: {
...User.mapping(bundle),
},
}
return z.request(utils.requestOptionsMiddleware(z, bundle, options)).then((response) => {
response.throwForStatus();
const results = utils.responseOptionsMiddleware(z, bundle, 'createUser', response.json);
return results;
})
},
sample: { data: {} }
}
},
createUsersWithArrayInput: {
key: 'createUsersWithArrayInput',
noun: 'user',
display: {
label: 'Creates list of users with given input array',
description: '',
hidden: false,
},
operation: {
inputFields: [
{
key: 'User',
label: 'List of user object',
type: 'string',
}
],
outputFields: [
],
perform: async (z, bundle) => {
const options = {
url: utils.replacePathParameters('http://petstore.swagger.io/v2/user/createWithArray'),
method: 'POST',
removeMissingValuesFrom: { params: true, body: true },
headers: {
'Content-Type': 'application/json',
'Accept': '',
},
params: {
},
body: {
...User.mapping(bundle),
},
}
return z.request(utils.requestOptionsMiddleware(z, bundle, options)).then((response) => {
response.throwForStatus();
const results = utils.responseOptionsMiddleware(z, bundle, 'createUsersWithArrayInput', response.json);
return results;
})
},
sample: { data: {} }
}
},
createUsersWithListInput: {
key: 'createUsersWithListInput',
noun: 'user',
display: {
label: 'Creates list of users with given input array',
description: '',
hidden: false,
},
operation: {
inputFields: [
{
key: 'User',
label: 'List of user object',
type: 'string',
}
],
outputFields: [
],
perform: async (z, bundle) => {
const options = {
url: utils.replacePathParameters('http://petstore.swagger.io/v2/user/createWithList'),
method: 'POST',
removeMissingValuesFrom: { params: true, body: true },
headers: {
'Content-Type': 'application/json',
'Accept': '',
},
params: {
},
body: {
...User.mapping(bundle),
},
}
return z.request(utils.requestOptionsMiddleware(z, bundle, options)).then((response) => {
response.throwForStatus();
const results = utils.responseOptionsMiddleware(z, bundle, 'createUsersWithListInput', response.json);
return results;
})
},
sample: { data: {} }
}
},
deleteUser: {
key: 'deleteUser',
noun: 'user',
display: {
label: 'Delete user',
description: 'This can only be done by the logged in user.',
hidden: false,
},
operation: {
inputFields: [
{
key: 'username',
label: 'The name that needs to be deleted',
type: 'string',
required: true,
},
],
outputFields: [
],
perform: async (z, bundle) => {
const options = {
url: utils.replacePathParameters('http://petstore.swagger.io/v2/user/{username}'),
method: 'DELETE',
removeMissingValuesFrom: { params: true, body: true },
headers: {
'Content-Type': '',
'Accept': '',
},
params: {
},
body: {
},
}
return z.request(utils.requestOptionsMiddleware(z, bundle, options)).then((response) => {
response.throwForStatus();
const results = utils.responseOptionsMiddleware(z, bundle, 'deleteUser', response.json);
return results;
})
},
sample: { data: {} }
}
},
getUserByName: {
key: 'getUserByName',
noun: 'user',
display: {
label: 'Get user by user name',
description: '',
hidden: false,
},
operation: {
inputFields: [
{
key: 'username',
label: 'The name that needs to be fetched. Use user1 for testing.',
type: 'string',
required: true,
},
],
outputFields: [
...User.fields('', false),
],
perform: async (z, bundle) => {
const options = {
url: utils.replacePathParameters('http://petstore.swagger.io/v2/user/{username}'),
method: 'GET',
removeMissingValuesFrom: { params: true, body: true },
headers: {
'Content-Type': '',
'Accept': 'application/xml, application/json',
},
params: {
},
body: {
},
}
return z.request(utils.requestOptionsMiddleware(z, bundle, options)).then((response) => {
response.throwForStatus();
const results = utils.responseOptionsMiddleware(z, bundle, 'getUserByName', response.json);
return results;
})
},
sample: samples['UserSample']
}
},
loginUser: {
key: 'loginUser',
noun: 'user',
display: {
label: 'Logs user into the system',
description: '',
hidden: false,
},
operation: {
inputFields: [
{
key: 'username',
label: 'The user name for login',
type: 'string',
required: true,
},
{
key: 'password',
label: 'The password for login in clear text',
type: 'string',
required: true,
},
],
outputFields: [
],
perform: async (z, bundle) => {
const options = {
url: utils.replacePathParameters('http://petstore.swagger.io/v2/user/login'),
method: 'GET',
removeMissingValuesFrom: { params: true, body: true },
headers: {
'Content-Type': '',
'Accept': 'application/xml, application/json',
},
params: {
'username': bundle.inputData?.['username'],
'password': bundle.inputData?.['password'],
},
body: {
},
}
return z.request(utils.requestOptionsMiddleware(z, bundle, options)).then((response) => {
response.throwForStatus();
const results = utils.responseOptionsMiddleware(z, bundle, 'loginUser', response.json);
return { data: results };
})
},
sample: { data: {} }
}
},
logoutUser: {
key: 'logoutUser',
noun: 'user',
display: {
label: 'Logs out current logged in user session',
description: '',
hidden: false,
},
operation: {
inputFields: [
],
outputFields: [
],
perform: async (z, bundle) => {
const options = {
url: utils.replacePathParameters('http://petstore.swagger.io/v2/user/logout'),
method: 'GET',
removeMissingValuesFrom: { params: true, body: true },
headers: {
'Content-Type': '',
'Accept': '',
},
params: {
},
body: {
},
}
return z.request(utils.requestOptionsMiddleware(z, bundle, options)).then((response) => {
response.throwForStatus();
const results = utils.responseOptionsMiddleware(z, bundle, 'logoutUser', response.json);
return results;
})
},
sample: { data: {} }
}
},
updateUser: {
key: 'updateUser',
noun: 'user',
display: {
label: 'Updated user',
description: 'This can only be done by the logged in user.',
hidden: false,
},
operation: {
inputFields: [
{
key: 'username',
label: 'name that need to be deleted',
type: 'string',
required: true,
},
...User.fields(),
],
outputFields: [
],
perform: async (z, bundle) => {
const options = {
url: utils.replacePathParameters('http://petstore.swagger.io/v2/user/{username}'),
method: 'PUT',
removeMissingValuesFrom: { params: true, body: true },
headers: {
'Content-Type': 'application/json',
'Accept': '',
},
params: {
},
body: {
...User.mapping(bundle),
},
}
return z.request(utils.requestOptionsMiddleware(z, bundle, options)).then((response) => {
response.throwForStatus();
const results = utils.responseOptionsMiddleware(z, bundle, 'updateUser', response.json);
return results;
})
},
sample: { data: {} }
}
},
}