class CDNGet::CDNJS
Constants
- CODE
- SITE_URL
Public Instance Methods
find(library)
click to toggle source
# File lib/cdnget.rb, line 145 def find(library) validate(library, nil) jstr = fetch("https://api.cdnjs.com/libraries/#{library}", library) jdata = JSON.parse(jstr) return { name: library, desc: jdata['description'], tags: (jdata['keywords'] || []).join(", "), versions: jdata['assets'].collect {|d| d['version'] }, } end
get(library, version)
click to toggle source
# File lib/cdnget.rb, line 157 def get(library, version) validate(library, version) jstr = fetch("https://api.cdnjs.com/libraries/#{library}", library) jdata = JSON.parse(jstr) d = jdata['assets'].find {|d| d['version'] == version } or raise CommandError.new("#{library}/#{version}: Library or version not found.") baseurl = "https://cdnjs.cloudflare.com/ajax/libs/#{library}/#{version}/" return { name: library, desc: jdata['description'], tags: (jdata['keywords'] || []).join(", "), version: version, urls: d['files'].collect {|s| baseurl + s }, files: d['files'], baseurl: baseurl, } end
list()
click to toggle source
# File lib/cdnget.rb, line 137 def list libs = [] jstr = fetch("https://api.cdnjs.com/libraries?fields=name,description") jdata = JSON.parse(jstr) libs = jdata['results'].collect {|d| {name: d['name'], desc: d['description']} } return libs.sort_by {|d| d[:name] }.uniq end
Protected Instance Methods
fetch(url, library=nil)
click to toggle source
# File lib/cdnget.rb, line 115 def fetch(url, library=nil) begin json_str = open(url, 'rb') {|f| f.read() } if library if json_str == "{}" if library.end_with?('js') maybe = library.end_with?('.js') \ ? library.sub('.js', 'js') \ : library.sub(/js$/, '.js') raise CommandError.new("#{library}: Library not found (maybe '#{maybe}'?).") else raise CommandError.new("#{library}: Library not found.") end end end return json_str rescue OpenURI::HTTPError => ex raise HttpError.new("GET #{url} : #{ex.message}") end end