読者です 読者をやめる 読者になる 読者になる

non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

node.jsでプロキシ環境下でもGoogle URL Shortenerを簡単に利用できた

パソコン・インターネット

おはようございます。最近、また暑くなって、寝室で、廊下側に寝ているせいもあり、明け方、息子達にベッドを占領されて起きる日々が続いているkjunichiです。

背景

startコマンドに長いURLを渡したら、URLが途中で切れてしまった。

URLを短縮サービスで短くすればいい

真っ先に思いつくのが、bit.lyだが、bit.lyはハッシュがあまり長いと相手にしてくれない。GoogleのやっているGoogle URL Shortenerを使うと、長いハッシュも安心。ツイッターでは8k程度まで行けるとの事でした。

コード

node.js標準のAPIだと

node.js標準のAPIでも可能です。しかし、プロキシを通してアクセスいている環境だと、それに対応するコードの追加が必要になります。そこで、requestモジュールを使うと、このモジュールがHTTPプロキシの環境変数を参照して対応してくれるのですごく楽でした。

var request = require('request');

var url = "http://phi-jp.github.io/runstant/release/alpha/#UEsDBAoAAAAAAAh3/0QFmPrFFgMAABYDAAAEAAAAZGF0YXsidmVyc2lvbiI6IjAuMC4xIiwiY3VycmVudCI6Imh0bWwiLCJzZXR0aW5nIjp7InRpdGxlIjoiQm9va21hcmtsZXQiLCJkZXRhaWwiOiLjg5bjg4Pjgq/jg57jg7zjgq/jg6zjg4Pjg4jjgoJSdW5zdGFudOOBquOCieewoeWNmOOBq++8gSJ9LCJjb2RlIjp7Imh0bWwiOnsidHlwZSI6Imh0bWwiLCJ2YWx1ZSI6IjwhRE9DVFlQRSBodG1sPlxuIFxuPGh0bWw+XG4gICAgPGhlYWQ+XG4gICAgICAgIDxtZXRhIGNoYXJzZXQ9XCJVVEYtOFwiIC8+XG4gICAgICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIHVzZXItc2NhbGFibGU9bm9cIiAvPlxuICAgICAgICA8bWV0YSBuYW1lPVwiYXBwbGUtbW9iaWxlLXdlYi1hcHAtY2FwYWJsZVwiIGNvbnRlbnQ9XCJ5ZXNcIiAvPlxuICAgICAgICA8dGl0bGU+JHt0aXRsZX08L3RpdGxlPlxuICAgICAgICA8bWV0YSBuYW1lPVwiZGVzY3JpcHRpb25cIiBjb250ZW50PVwiJHtkZXNjcmlwdGlvbn1cIiAvPlxuICAgIDwvaGVhZD5cbiAgICA8Ym9keT5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6d2luZG93LnByb21wdCgnJywnLSBbJytkb2N1bWVudC50aXRsZSsnXScgKycoJysgbG9jYXRpb24uaHJlZisnKScpO3ZvaWQoMCk7XCI+R2V0TWQ8L2E+XG4gICAgPC9ib2R5PlxuPC9odG1sPiJ9LCJzdHlsZSI6eyJ0eXBlIjoiY3NzIiwidmFsdWUiOiJib2R5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyO1xufSJ9LCJzY3JpcHQiOnsidHlwZSI6ImphdmFzY3JpcHQiLCJ2YWx1ZSI6IiJ9fX1QSwECFAAKAAAAAAAIdv9EBZj6xRYDAAAWAwAABAAAAAAAAAAAAAAAAAAAAAAAZGF0YVBLBQYAAAAAAQABADIAAAA4AwAAAAA=";

var options = {
    url: "https://www.googleapis.com/urlshortener/v1/url",
    headers: {
        'Content-Type': 'application/json'
    },
    json: true,
    body: JSON.stringify({
        longUrl: url
    })
};

request.post(options, function(error, response, body) {
    if (!error && response.statusCode == 200) {
        spawn("cmd", ["/C", "start " + body.id]);
    } else {
        console.log('error: ' + response.statusCode);
    }
});

Link