if (stash.params.username) { var feed = "http://b.hatena.ne.jp/" + stash.params.username + "/rss"; http({ method: "post", url: "http://pubsubhubbub.appspot.com/", data: http.data({ "hub.mode": "publish", "hub.url": feed }), }).code; } 200;
/* * http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%D6%A5%C3%A5%AF%A5%DE%A1%BC%A5%AF%20Web%20Hook * http://im.kayac.com/ */ var config = stash.config; var params = stash.params; var message = [ params.username+':', params.comment || '-', params.title, params.url, '@'+params.count ].join(' '); http.post('http://im.kayac.com/api/post/'+config.im_kayac_com_user, { message: message, sig : util.digest.sha1(message+config.im_kayac_com_secret) });
// http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%d6%a5%c3%a5%af%a5%de%a1%bc%a5%af%20Web%20Hook if (stash.params.status != "add") throw "unknown status"; var message = "B! " + stash.params.title + " ( " + stash.params.url + " )"; //mail("test", message ); http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : message }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
// http://im.kayac.com/ function notify_via_im_kayac_com (message) { var message = "[B! " + stash.params.count + "user(s)]\nvia " + stash.params.username + "\n" + stash.params.title + "\n" + stash.params.url; var res = http.post( "http://im.kayac.com/api/post/" + stash.config.im_kayac_com_user, { message: message, sig : util.digest.sha1(message + stash.config.im_kayac_com_secret) } ); return eval("(" + res.body + ")"); } notify_via_im_kayac_com( stash.params.message );
// [あとで読む]をTa-da listsに登録する // つかいかた: // - このスクリプトをfork // - HookHubのconfigページで以下の変数をあなたの環境に合わせて変更 // - tada_list_account // - tada_list_atode // - はてなブックマークの設定ページでこのWebHookのHook URIを登録 // // http://d.hatena.ne.jp/snaka72/ // var config = stash.config var user = stash.config.tada_list_account var passwd = stash.config.tada_list_passwd var list_id = stash.config.tada_list_atode var title = stash.params["title"] var url = stash.params["url"] var comment = stash.params["comment"] var key_words = [ "ToDo", "あとで", "後で" ]; if (key_words.some(function(word) { return comment.indexOf(word) > -1 })) { // 念のためメールしておく mail("あとで:" + title, url); http({ method: "get", //url: "https://tadalists-api-delegate.appspot.com/post", url: "http://www.postbin.org/14frcow", data: http.data({ "username" : user, "password" : passwd, "list" : list_id, "content" : title + " " + url }) }); }
function load_auth_info_for(name) { return { user: stash.conf[name + '_user'], pass: stash.conf[name + '_pass'] }; } function twitter(opts) { if( opts.status == 'add') { return } var auth = load_auth_info_for('twitter'); http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status: "ブクマした: " + opts.title + " - " + opts.url }), headers : { Authorization : "Basic " + util.base64.encode( [auth.user, auth.pass].join(":") ) } }).code } // Bookmark attributes; var status = stash.params.status; var username = stash.params.username; var title = stash.params.title; var url = stash.params.url; var count = stash.params.count; var comment = stash.params.comment; var timestamp = stash.params.timestamp; var is_private = stash.params.is_private; var key = stash.params.key; // for star var color = stash.params.color; var quote = stash.params.quote; if ( is_private == '0') { twitter({title: title, url: url}); }
var url = stash.params.entryurl ? stash.params.entryurl : stash.params.blogurl; var title = stash.params.entrytitle ? stash.params.entrytitle : stash.params.blogname; var text = stash.params.entrytext ? " 「" + stash.params.entrytext.substring(0, 30) + "...」 " : ""; if(url.indexOf('http://ameblo.jp/', 0) == 0 && stash.params.imgs){ var imgs = stash.params.imgs.split(','); var hasimg = false; if(imgs){ for(var i = 0 ; i < imgs.length ; i++){ var img = imgs[i]; if(img && img.indexOf('http://stat.ameba.jp/blog', 0) != 0 && (img.indexOf('http://stat.ameba.jp/', 0) == 0 || img.indexOf('http://stat001.ameba.jp/', 0) == 0)){ hasimg = true; break; } } } if(hasimg){ var message = "[画像投稿] " + title + " ( " + url+ " ) " + text; http({ method: "post", //url: "http://twitter.com/statuses/update.json", url: "http://h.hatena.ne.jp/api/statuses/update.json", data: http.data({ status : message }), headers : { Authorization : "Basic " + util.base64.encode( // [stash.config.twitter_user, stash.config.twitter_pass].join(":") [stash.config.hatena_user, stash.config.hatena_pass].join(":") ) } }).code } }
// http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%d6%a5%c3%a5%af%a5%de%a1%bc%a5%af%20Web%20Hook if (stash.params.status != "add") throw "unknown status"; var message = "B! " + stash.params.title + " ( " + stash.params.url + " )"; http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : message }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
// http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%d6%a5%c3%a5%af%a5%de%a1%bc%a5%af%20Web%20Hook if (stash.params.status != "add") throw "unknown status:" + stash.params.status; var comment = stash.params.comment.replace(/^(\[.*?\])*/, ''); var title = stash.params.title; var url = http.get("http://u.nu/unu-api-simple?url=" + stash.params.url).body var tweet = "はてブした:" + comment + "「" + title + " ( " + url + " )」"; http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : tweet }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
/* * Configuration */ /* Set this to your Review Board server URL (without a trailing slash). */ var REVIEWBOARD_URL = "http://reviews.review-board.org" /* The regular expression to match a review request ID. */ var REVIEW_REQUEST_RE = "Reviewed at:? " + REVIEWBOARD_URL + "/r/([0-9]+)/?"; /* * Everything below should be common and untouched. */ var errors = []; var cookie = ""; function get_review_requests(request_data) { var review_requests = []; /* Look for all mentioned review requests in the commits. */ for (var i = 0; i < request_data.commits.length; i++) { var re = new RegExp(REVIEW_REQUEST_RE, "i"); var m = re.exec(request_data.commits[i].message); if (m != null) { review_requests.push(m[1]); } } return review_requests; } function report_error(text) { errors.push(text); } function api_post(url, post_data) { var serialized_post_data = (post_data ? http.data(post_data) : ""); var response = http({ method: "post", url: REVIEWBOARD_URL + url, data: serialized_post_data, headers: { "Cookie": cookie } }); if (response.code != 200) { report_error("The Web Hook failed to login. Got a " + response.code + " error from the server " + "during login."); return null; } var response_data = eval("(" + response.body + ")"); if (response_data.stat == "fail") { report_error("API call to " + url + " failed.\n\n" + "Post data: " + serialized_post_data + "\n" + "Error code: " + response_data.err.code + "\n" + "Error text: " + response_data.err.msg + "\n" + "Details:\n\n" + response.data); return null; } if (response.headers['Set-cookie']) { cookie = response.headers['Set-cookie']; } return response_data; } function login() { return api_post("/api/json/accounts/login/", { username: stash.config.reviewboard_user, password: stash.config.reviewboard_password }) != null; } function set_submitted(review_request_id) { return api_post("/api/json/reviewrequests/" + review_request_id + "/close/submitted/") != null; } function process_request() { var request_data = eval("(" + stash.params.payload + ")"); var review_requests = get_review_requests(request_data); if (review_requests.length == 0) { return true; } if (!login()) { return false; } var success = true; for (var i = 0; i < review_requests.length; i++) { if (!set_submitted(review_requests[i])) { success = false; } } return success; } var success = process_request(); if (!success) { mail("GitHub to Review Board Web Hook Failure", "Errors:\n\n");// + errors.join("\n\n")); 500; } else { 200; }
// <http://suika.fam.cx/~wakaba/wiki/sw/n/Web%20Hook%E3%81%A7SuikaWiki%E3%81%ABURL%E3%82%92%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B> var status = stash.params.status; var title = stash.params.title; var url = stash.params.url; var comment = stash.params.comment; var timestamp = stash.params.timestamp; var is_private = stash.params.is_private; var tags = {}; comment = comment.replace (/\[([^\:\[\]]+)\]/g, function (_, tag) { tags[tag] = true; return ''; }).replace (/^\s+/, '').replace (/\s+$/, ''); if (status == 'add' && is_private == '0' && tags['+sw'] && comment != '') { http ({ method: 'post', url: 'http://suika.fam.cx/~wakaba/wiki/sw/n/' + encodeURIComponent (comment) + ';posturl', data: http.data ({url: url, title: title, timestamp: timestamp}), headers: { Authorization: 'Basic ' + util.base64.encode ( [stash.config.swpost_user, stash.config.swpost_pass].join (':') ) } }).code; }
// http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%d6%a5%c3%a5%af%a5%de%a1%bc%a5%af%20Web%20Hook if (stash.params.status != "add") throw "unknown status"; if (stash.params.key != stash.config.hatena_bookmark_key) throw "key mismatch"; var message = "B! " + stash.params.title + " ( " + stash.params.url + " )"; mail( "B!", message ); //http({ // method: "post", // url: "http://twitter.com/statuses/update.json", // data: http.data({ status : message }), // headers : { // Authorization : "Basic " + util.base64.encode( // [stash.config.twitter_user, stash.config.twitter_pass].join(":") // ) // } //}).code message;
// http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%d6%a5%c3%a5%af%a5%de%a1%bc%a5%af%20Web%20Hook if (stash.params.status != "add") throw "unknown status:" + stash.params.status; var comment = stash.params.comment.replace(/^(\[.*?\])*/, ''); var title = stash.params.title; var url = http.get("http://api.bit.ly/shorten?version=2.0.1&longUrl=" + stash.params.url + "&login=" + stash.config.bitly_account + "&apiKey=" + stash.config.bitly_apikey).body["results"][stash.params.url]["shortUrl"] //var url = stash.params.url; var tweet = "はてぶした:" + comment + "[" + title + "( " + url + " )]"; //throw url; http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : tweet }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
// [あとで読む]をTa-da listsに登録する // つかいかた: // - このスクリプトをfork // - HookHubのconfigページで以下の変数をあなたの環境に合わせて変更 // - tada_list_account // - tada_list_atode // - はてなブックマークの設定ページでこのWebHookのHook URIを登録 // // http://d.hatena.ne.jp/snaka72/ // var user = stash.config.tada_list_account var list_id = stash.config.tada_list_atode var title = stash.params["title"] var url = stash.params["url"] var comment = stash.params["comment"] var key_words = [ "ToDo", "あとで", "後で" ]; if (key_words.some(function(word) { return comment.indexOf(word) > -1 })) { // 念のためメールしておく mail("あとで:" + title, url); http({ method: "post", url: "http://"+ user +".tadalist.com/lists/" + list_id + "/items", data: http.data({ "item[content]" : title + " " + url }) }); } 200;
var data = eval("(" + stash.params.payload + ")"); var last_commits_index = data.commits.length - 1; var last_message = data.commits[last_commits_index].message, repoName = data.repository.name, repoURL = data.repository.url; var message = ["#github", repoName, "Pushed:", last_message, ":", repoURL].join(" "); var res = http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : message }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code; [res, "ref:", data.ref, "lastMessage:", last_message].join(" ");
// MailHook ( http://m-hook.appspot.com/ ) 経由 (function(sparams,config){ var link = sparams.link; var title = sparams.title; var imageurl = sparams.imageurl; var imageurlmedium = sparams.imageurlmedium; var imageurlsmall = sparams.imageurlsmall; var syntax = sparams.syntax; if (!title) title = ''; var message = ('[P]'+title).slice(0,80)+' '+link; var user = config.twitter_user; var pass = config.twitter_pass; return http({ method: 'post' , url: 'http://twitter.com/statuses/update.json' , data: http.data({ status : message }) , headers : { Authorization : 'Basic ' + util.base64.encode([user,pass].join(":")) } }).code; })(stash.params,stash.config);
// MailHook ( http://m-hook.appspot.com/ ) 経由 (function(sconfig,sparams){ /* "from","to","cc","date","subject","body"(本文・平文),"html"(本文・HTML),"filename"(添付ファイル名),"ctype"(添付ファイルのContent-Type),"payload"(BASE64エンコードされた添付ファイル本体)、および"key"(設定したキー) var from=sparams.from, to=sparams.to, cc=sparams.cc, date=sparams.date; var subject=sparams.subject, body=sparams.body, html=sparams.html; var filename=sparams.filename, ctype=sparams.ctype, payload=sparams.payload; */ var body=sparams.body; var user=sconfig.twitter_user, pass=sconfig.twitter_pass; var tweet=body.slice(0,140); return http({ method: 'post' , url: 'http://twitter.com/statuses/update.json' , data: http.data({ status : tweet }) , headers : { Authorization : "Basic " + util.base64.encode([user,pass].join(":"))} }).code })(stash.config,stash.params);
if (stash.params.status != "add") throw "unknown status"; var message = "B! " + stash.params.title + " ( " + stash.params.url + " )"; http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : message }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
// MailHook ( http://m-hook.appspot.com/ ) 経由 (function(sconfig,sparams){ /* "type"(post(投稿通知)/comment(コメント通知)), "url"(画像URL)、"user"(投稿した人/コメントを付けた人), "text"(投稿文)、および"key"(設定したキー) */ var infotype=sparams.type, url=sparams.url, user=sparams.user, text=sparams.text, key=sparams.key; var user=sconfig.twitter_user, pass=sconfig.twitter_pass; var info= (infotype=='comment') ? '[百景コメント]' : '[百景投稿]'; var tweet=(info+text).slice(0,80)+' '+url; return http({ method: 'post' , url: 'http://twitter.com/statuses/update.json' , data: http.data({ status : tweet }) , headers : { Authorization : "Basic " + util.base64.encode([user,pass].join(":"))} }).code })(stash.config,stash.params);
// MailHook ( http://m-hook.appspot.com/ ) 経由 http({ method: 'get' , url: 'http://m-hook.appspot.com/test?a=1&b=2&c=3' }).code
http.get("http://example.com/").code
if (stash.params.status != "add") throw "unknown status"; var message = "はてブした:" + stash.params.title + " ( " + stash.params.url + " )"; http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : message }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
var body = ""; var title; //ブックマーク、IDコール、スターを付与したユーザーのid (文字列) body += stash.params.username; body += "¥n"; //イベント対象のエントリのタイトル (文字列) body += stash.params.title; body += "¥n"; //イベント対象のエントリのURL (文字列) body += stash.params.url; body += "¥n"; //イベント対象のエントリの、その時点でのブックマーク数 (整数) body += stash.params.count; body += "¥n"; //イベントの種類。取り得る値は前述のイベントの種類を参照してください。またステータスはアプリケーション側でチェックするようにしてください (後述) body += stash.params.status; body += "¥n"; //イベント対象のブックマークに付与されたコメント (タグは同梱, 例: "[hatena][bookmark] こんにちは") body += stash.params.comment; body += "¥n"; //イベントの時刻 (W3CDTF 形式) body += stash.params.timestamp; body += "¥n"; //ブックマークが非公開かどうか (公開 0, 非公開 1 ※はてなブックマークプラスの非公開ブックマークを判別するフラグです) body += stash.params.is_private; body += "¥n"; //設定したキー (文字列, 後述) body += stash.params.key; body += "¥n"; mail("番組の途中ですが「hookhub」よりお知らせします:" + stash.params.title, body);
var url = stash.params.entryurl ? stash.params.entryurl : stash.params.blogurl; var title = stash.params.entrytitle ? stash.params.entrytitle : stash.params.blogname; mail("[update blog]" + title, url);
// Long way to post IRC network... var p = stash.params; var subject = "Hatena Bookmark: " + p.url; var body = p.user + ": " + p.title + " (" + p.count + " users) " + p.url; mail(subject, body);
var credential = "Basic " + util.base64.encode([stash.config.twitter_bot_username, stash.config.twitter_bot_password].join(":")); var p = stash.params; var message = p.user + ": " + p.title + "(" + p.count + " users)" + p.url + " " + p.comment.replace(/^(.*\])/, "$1"); http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status: message }), headers : { Authorization: credential } }).code;
// http://im.kayac.com/ var params = stash.params; var message = params.title + '(' + params.url + ')のブックマークコメントで' + 'id:' + params.username + 'さんにIDコールされました。「' + params.comment + '」'; notify_via_im_kayac_com(message); function notify_via_im_kayac_com (message) { var res = http.post( "http://im.kayac.com/api/post/" + stash.config.im_kayac_com_user, { message: message } ); return eval("(" + res.body + ")"); }
// Hatena Bookmark => switchub // for posting IRC network. // not working var p = stash.params; var message = p.user + ": " + p.title + "(" + p.count + " users)" + p.url + " " + p.comment.replace(/^(.*\])/, "$1"); http.post("http://hooks.switchub.com/1b13f433", { bookmark: message }).code;
// NOT WORKED YET : why? var hash = stash.config.notify_user; var api_key = stash.config.notify_api_key; http.post( "http://api.notify.io/v1/notify/" + hash + "?api_key=" + api_key, http.data({ text: "hoge" }) );
// それぞれ単独で実行してもmailは送信できず、httpは // error:Wrapped com.google.apphosting.api.ApiProxy$ApiDeadlineExceededException: The API call urlfetch.Fetch() took too long to respond and was cancelled. :5 // になる…どうすれば…? // mail( "title", "body" ) http({ method: "get", url: "http://example.com/", }).code
// MailHook ( http://m-hook.appspot.com/ ) 経由 (function(sconfig,sparams){ /* "from","to","cc","date","subject","body"(本文・平文),"html"(本文・HTML),"filename"(添付ファイル名),"ctype"(添付ファイルのContent-Type),"payload"(BASE64エンコードされた添付ファイル本体)、および"key"(設定したキー) var from=sparams.from, to=sparams.to, cc=sparams.cc, date=sparams.date; var subject=sparams.subject, body=sparams.body, html=sparams.html; var filename=sparams.filename, ctype=sparams.ctype, payload=sparams.payload; */ var body=sparams.body; var user=sconfig.twitter_user, pass=sconfig.twitter_pass; var tweet=body.slice(0,140); /* return http({ method: 'POST' //, url: 'http://twitter.com/statuses/update.json' , url: 'http://m-hook.appspot.com/test' , data: http.data({ 'status' : tweet }) , headers : { 'Authorization' : 'Basic ' + util.base64.encode([user,pass].join(':')) , 'Content-Type' : 'application/x-www-form-urlencoded' } }).code */ http.post('http://m-hook.appspot.com/test', { 'status' : tweet }); })(stash.config,stash.params);
// for FotoHook (function () { // i want to return var imageUrl = stash.params.imageurl; var hatenaSyntax = stash.params.hatenasyntax; var title = stash.params.title; if (!title) { title = "" } /* var id = stash.config.twitter_user; var pass = stash.config.twitter_pass; var api = "http://twitter.com/statuses/update.json"; var message = title.substr(1) + " " + imageUrl; var res = http({ method: "post", url: api, data: http.data({ status : message }), headers : { Authorization : "Basic " + util.base64.encode( [id, pass].join(":") ) } }); return res.code + ":" + message; */ return stash.params.imageurl + "(" + stash.params.title + ")" })();
if (stash.params.status != "add") throw "unknown status"; var message = stash.params.message; http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : message }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ), "X-Twitter-Client" : "HookHub", "X-Twitter-Client-Version" : "1.0", "X-Twitter-Client-URL" : "http://www.hookhub.com/" } }).code
// for FotoHook (function () { // i want to return var imageUrl = stash.params.imageurl; var hatenaSyntax = stash.params.hatenasyntax; var title = stash.params.title; if (!title) { title = "" } var id = stash.config.twitter_user; var pass = stash.config.twitter_pass; var api = "http://twitter.com/statuses/update.json"; var message = title.substr(1) + " " + imageUrl; var res = http({ method: "post", url: api, data: http.data({ status : message }), headers : { Authorization : "Basic " + util.base64.encode( [id, pass].join(":") ) } }); return res.code + ":" + message; })();
// for FotoHook (function () { // i want to return var imageUrl = stash.params.imageurl; var hatenaSyntax = stash.params.hatenasyntax; var title = stash.params.title; if (!title) { title = "" } var id = stash.config.wassr_user; var pass = stash.config.wassr_pass; var api = "http://api.wassr.jp/statuses/update.json"; var message = title.substr(1) + " " + imageUrl; var res = http({ method: "post", url: api, data: http.data({ status : message }), headers : { Authorization : "Basic " + util.base64.encode( [id, pass].join(":") ) } }); return res.code + ":" + message; })();
//http.get("http://example.com/").code 200;
/* * ex. * bookmarklet: javascript:new Image().src='%Web Hooks URI%?source='+document.URL */ var config = stash.config; var params = stash.params; var p = { email : config.tumblr_email, password : config.tumblr_password, type : 'photo', generator : params.generator || 'Anyone Photo Reblogger/hookhub:'+stash.id, source : params.source, coption : params.caption || '', 'click-through-url': params.url || '', group : params.group || '' }; http({ method: 'post', url : 'http://www.tumblr.com/api/write', data : http.data(p) }).code
mail(stash.params.title, stash.params.body);
var title = stash.params.title, url = stash.params.url, tags_comment = stash.params.comment, status = stash.params.status, key = stash.params.key; var [tags, comment] = getTagsAndComment(tags_comment); var message = comment + " B! " + title + "[" + url + "]"; var twitterRes = "none", mailRes = "none"; var mailTagList = ["todo"]; if (key == stash.config.hatena_hook_pass){ switch (status) { case "add": if (comment){ twitterRes = postToTwitter(message); } case "update": if (isTagContain(tags)){ var mailTitle = "[ToDo][HatenaBookmark]" + title, mailBody = [url, comment].join("\n"); mail(mailTitle, mailBody); mailRes = "OK"; } } } function isTagContain(tags){ for (var i in tags){ var tag = tags[i].toLowerCase(); for (var k in mailTagList){ if (tag == mailTagList[k]){ return true; } } } return false; } function getTagsAndComment(comment){ var reg = new RegExp("\\[([^\\:\\[\\]]+)\\]","g"); var res, tags = []; while (res = reg.exec(comment)){ tags.push(res[1]); } var comment = comment.substr(("["+tags.join("][")+"]").length); return [tags, comment]; } function postToTwitter(msg){ return http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : msg }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code; } [status, "twitter:", twitterRes, "mail:", mailRes, "Date:", (new Date()).toLocaleString()].join(" ");
http.get("http://www.google.com").code
var url = stash.params.entryurl ? stash.params.entryurl : stash.params.blogurl; var title = stash.params.entrytitle ? stash.params.entrytitle : stash.params.blogname; var text = stash.params.entrytext ? " 「" + stash.params.entrytext.substring(0, 30) + "...」 " : ""; var message = "[blog update] " + title + " ( " + url + " ) " + text; http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : message }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
// test // //stash.config.foobar; //stash.params.foobar; http({ method: "get", url: "http://4u.straightline.jp/rss", // data: http.data({ foo: bar }), // headers : { // Authorization : "Basic " + util.base64.encode( // [stash.config.xxx_user, stash.config.xxx_pass].join(":") // ) // } });
http.get("http://cookpad.com/tsukurepo/list/1382881").text
// Example: // stash.config.foobar; stash.params.foobar; // http({ // method: "post", // url: "http://example.com/", // data: http.data({ foo: bar }), // headers : { // Authorization : "Basic " + util.base64.encode( // [stash.config.xxx_user, stash.config.xxx_pass].join(":") // ) // } // }).code
// Example: mail("Test", "Body");
// http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%d6%a5%c3%a5%af%a5%de%a1%bc%a5%af%20Web%20Hook if (stash.params.status != "star") throw "unknown status:" + stash.params.status; var username = stash.params.username; var color = stash.params.color; var quote = stash.params.quote; var permalink = stash.params.permalink; var quote = stash.params.quote; var comment = stash.params.comment; var url = http.get("http://u.nu/unu-api-simple?url=" + encodeURIComponent(permalink)).body; var tweet = "はて☆すた:id:" + username + "さんから" + color + " starをもらったよ。" + "「" + quote + " ( " + url + " )」"; http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : tweet }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
var data = eval("(" + stash.data + ")"); var author = data.revisions[0].author; var message = data.revisions[0].message; http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : "Project [" + data.project_name + "]" + " is updated by [" + author + "]" + "about [" + message + "]"}), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
var data = eval("(" + stash.params.payload + ")"); var last_message = data.commits[0].message; var message = "Pushed some commits: " + last_message; http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : message }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : "Document is updated."}), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
var data = eval("(" + stash.data + ")"); var author = data.revisions[0].author; var message = data.revisions[0].message; http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : "Project [" + data.project_name + "]" + " is updated by [" + author + "]" + " about [" + message + "]"}), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
var data = eval("(" + stash.data + ")"); data.revisions[0].author;
http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : "from hookhub" }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
var config = stash.config, config_str = ''; for (var c in config) config_str += c + ': ' + config[c] + '\n'; mail('hookhub config', config_str);
http.get("http://jp.goodlinks.net/").code
// http://im.kayac.com/ function notify_via_im_kayac_com (message) { var res = http.post( "http://im.kayac.com/api/post/" + stash.config.im_kayac_com_user, { message: message, sig : util.digest.sha1(message + stash.config.im_kayac_com_secret) } ); return eval("(" + res.body + ")"); } notify_via_im_kayac_com( stash.params.message );
// See also: http://prowl.weks.net/ // Usage: curl -X POST -d"message='call me'" -d"title='Urgent'" -d"priority=1" http://www.hookhub.com/hook/... function notify_via_prowl (message, title, priority) { message = typeof(message) != 'undefined' ? message : "testing..."; title = typeof(title) != 'undefined' ? title : "alert"; priority = typeof(priority) != 'undefined' ? priority : 0; var res = http.post( "https://prowl.weks.net/publicapi/add", { apikey: stash.config.prowl_apikey, priority: priority, event: title + ' pr.' + priority, description: message, application: "hookhub" } ); code = eval("(" + res.code + ")"); return (code == 200) ? 'OK' : ('Error: ' + code) } notify_via_prowl( stash.params.message, stash.params.title, stash.params.priority);
http({ method: "post", url: "http://twitter.com/statuses/update.json", data: http.data({ status : stash.params.status }), headers : { Authorization : "Basic " + util.base64.encode( [stash.config.twitter_user, stash.config.twitter_pass].join(":") ) } }).code
http.get("http://toukubo.com/").body