Class: CDNGet::CDNJS

Inherits:
Base
  • Object
show all
Defined in:
lib/cdnget.rb

Constant Summary collapse

CODE =
"cdnjs"
SITE_URL =
'https://cdnjs.com/'

Instance Attribute Summary

Attributes inherited from Base

#debug_mode

Instance Method Summary collapse

Methods inherited from Base

#download, inherited, #initialize, #search

Constructor Details

This class inherits a constructor from CDNGet::Base

Instance Method Details

#find(library) ⇒ Object



250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
# File 'lib/cdnget.rb', line 250

def find(library)
  validate(library, nil)
  jstr = fetch("https://api.cdnjs.com/libraries/#{library}", library)
  jdata = JSON.parse(jstr)
  _debug_print(jdata)
  versions = jdata['assets'].collect {|d| d['version'] }\
               .sort_by {|v| v.split(/[-.]/).map(&:to_i) }
  return {
    name: library,
    desc: jdata['description'],
    tags: (jdata['keywords'] || []).join(", "),
    site: jdata['homepage'],
    info: File.join(SITE_URL, "/libraries/#{library}"),
    license: jdata['license'],
    versions: versions.reverse(),
  }
end

#get(library, version) ⇒ Object



268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
# File 'lib/cdnget.rb', line 268

def get(library, version)
  validate(library, version)
  jstr = fetch("https://api.cdnjs.com/libraries/#{library}", library)
  jdata = JSON.parse(jstr)
  _debug_print(jdata)
  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,
    version:  version,
    desc:     jdata['description'],
    tags:     (jdata['keywords'] || []).join(", "),
    site:     jdata['homepage'],
    info:     File.join(SITE_URL, "/libraries/#{library}/#{version}"),
    urls:     d['files'].collect {|s| baseurl + s },
    files:    d['files'],
    baseurl:  baseurl,
    license:  jdata['license'],
  }
end

#listObject



242
243
244
245
246
247
248
# File 'lib/cdnget.rb', line 242

def list()
  jstr = fetch("https://api.cdnjs.com/libraries?fields=name,description")
  jdata = JSON.parse(jstr)
  _debug_print(jdata)
  libs = jdata['results'].collect {|d| {name: d['name'], desc: d['description']} }
  return libs.sort_by {|d| d[:name] }.uniq
end