File: coderwall.rb

package info (click to toggle)
tdiary-contrib 5.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 2,772 kB
  • sloc: ruby: 17,305; javascript: 8,263; lisp: 562; xml: 451; php: 61; sql: 40; makefile: 18
file content (34 lines) | stat: -rw-r--r-- 819 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
require 'open-uri'
require 'timeout'
require 'json'

def coderwall(name, size = [60, 60])
	begin
		cache = "#{@cache_path}/coderwall.json"
		json = File.read(cache)
		File::delete(cache) if Time::now > File::mtime( cache ) + 60*60*24
	rescue Errno::ENOENT
		begin
			Timeout.timeout(10) do
				json = open( "https://coderwall.com/#{name}.json" ) {|f| f.read }
			end
			open(cache, 'wb') {|f| f.write(json) }
		rescue Timeout::Error
			return ""
		end
	end

	html = '<div class="coderwall">'
	JSON.parse(json)['badges'].each do |badge|
		html << %Q|<img src="#{badge['badge']}" alt="#{badge['name']}" title="#{badge['description']}" height="#{size[0]}px" width="#{size[1]}px" />|
	end
	html << '</div>'
end

# Local Variables:
# mode: ruby
# indent-tabs-mode: t
# tab-width: 3
# ruby-indent-level: 3
# End:
# vim: ts=3