Skip to content

Instantly share code, notes, and snippets.

@julianeon
Last active January 1, 2020 15:49
Show Gist options
  • Save julianeon/8103416 to your computer and use it in GitHub Desktop.
Save julianeon/8103416 to your computer and use it in GitHub Desktop.
curl examples in JavaScript, used for Zendesk.
// Copyright (c) 2014, PagerDuty, Inc. <info@pagerduty.com>
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// * Neither the name of PagerDuty Inc nor the
// names of its contributors may be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL PAGERDUTY INC BE LIABLE FOR ANY
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
exports.post_text = function (subject,body){
var posttext = {
"ticket" : {
"subject" : subject,
"comment" : {
"body" : body
}
}
};
var json_posttext = JSON.stringify(posttext);
return json_posttext;
}
// prepare the header
exports.post_authenticator = function (msg){
var postheaders = {
'Content-Type' : 'application/json',
'Content-Length' : Buffer.byteLength(msg, 'utf8')
};
// the post options
var postoptions = {
auth : 'yourusername@pagerduty.com/token:yourtoken',
host : 'yoursubdomain.zendesk.com',
path : '/api/v2/tickets.json',
method : 'POST',
headers : postheaders
};
return postoptions;
}
//console.info('Options prepared:');
//console.info(optionspost);
//console.info('Do the POST call');
// do the POST call
exports.poster = function post_this(postoptions,text){
var https = require('https');
var reqPost = https.request(postoptions, function(res) {
console.log("statusCode: ", res.statusCode);
// uncomment it for header details
// console.log("headers: ", res.headers);
res.on('data', function(output) {
console.info('POST result:\n');
process.stdout.write(output);
console.info('\nPOST completed');
});
});
// write the json data
reqPost.write(text);
reqPost.end();
reqPost.on('error', function(e) {
console.error(e);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment