Sha256: 5b34d16480c24dde2dcb9523cde5385a8ebda7d9bf6c9d9a0c37da69da11c96e

Contents?: true

Size: 1.05 KB

Versions: 46

Compression:

Stored size: 1.05 KB

Contents

#
# goo_gl.rb - shorten URL by goo.gl
#
# usage: shorten_url_you_got = goo_gl( 'long_url' ) || long_url
#
# Copyright (C) 2011, tamoot <tamoot+tdiary@gmail.com>
# You can redistribute it and/or modify it under GPL.
#

require 'json'
require 'net/https'

def goo_gl( long_url )
   return nil if !long_url or long_url.empty?

   # on memory
   @goo_gl_cache ||= {} # cached only on memory
   return @goo_gl_cache[long_url] if @goo_gl_cache[long_url]

   # proxy
   px_host, px_port = (@conf['proxy'] || '').split( /:/ )
   px_port = 80 if px_host and !px_port

   # params
   params = {'longUrl' => long_url}.to_json

   https = nil
   begin
      https = Net::HTTP::Proxy(px_host, px_port).new('www.googleapis.com', 443)
      https.use_ssl = true
      res, body = https.post("/urlshortener/v1/url", params, {'Content-Type' => 'application/json'})
      @goo_gl_cache[long_url] = JSON::parse(body)["id"] if res.code == '200'
   rescue Exception => e
      # do nothing..

   ensure
      https.finish if https && https.started?

   end

   return @goo_gl_cache[long_url]
end

Version data entries

46 entries across 40 versions & 2 rubygems

Version Path
tdiary-contrib-5.3.0 plugin/goo_gl.rb
tdiary-contrib-5.2.4 plugin/goo_gl.rb
tdiary-contrib-5.2.3 plugin/goo_gl.rb
tdiary-contrib-5.2.2 plugin/goo_gl.rb
tdiary-contrib-5.2.1 plugin/goo_gl.rb
tdiary-contrib-5.2.0 plugin/goo_gl.rb
tdiary-contrib-5.1.7 plugin/goo_gl.rb
tdiary-contrib-5.1.6 plugin/goo_gl.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/tdiary-5.1.5/vendor/bundle/ruby/3.0.0/gems/tdiary-contrib-5.1.4/plugin/goo_gl.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/bundler/gems/tdiary-contrib-d1e41204db13/plugin/goo_gl.rb
tdiary-contrib-5.1.5 plugin/goo_gl.rb
tdiary-5.1.5 vendor/bundle/ruby/3.0.0/gems/tdiary-contrib-5.1.4/plugin/goo_gl.rb
tdiary-contrib-5.1.4 plugin/goo_gl.rb
tdiary-contrib-5.1.3 plugin/goo_gl.rb
tdiary-contrib-5.1.2 plugin/goo_gl.rb
tdiary-contrib-5.1.1 plugin/goo_gl.rb
tdiary-contrib-5.1.0 plugin/goo_gl.rb
tdiary-contrib-5.0.13 plugin/goo_gl.rb
tdiary-contrib-5.0.12 plugin/goo_gl.rb
tdiary-contrib-5.0.11 plugin/goo_gl.rb