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