Class: CDNGet::CDNJS

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

Constant Summary collapse

CODE =
"cdnjs"
SITE_URL =
"https://cdnjs.com/"
API_URL =
"https://api.cdnjs.com/libraries"
CDN_URL =
"https://cdnjs.cloudflare.com/ajax/libs"

Instance Attribute Summary

Attributes inherited from Base

#debug_mode

Instance Method Summary collapse

Methods inherited from Base

#download, inherited, #initialize, #latest_version, #search

Constructor Details

This class inherits a constructor from CDNGet::Base

Instance Method Details

#find(library) ⇒ Object



287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
# File 'lib/cdnget.rb', line 287

def find(library)
  validate(library, nil)
  jstr = fetch("#{API_URL}/#{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



305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
# File 'lib/cdnget.rb', line 305

def get(library, version)
  validate(library, version)
  jstr = fetch("#{API_URL}/#{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 = "#{CDN_URL}/#{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



279
280
281
282
283
284
285
# File 'lib/cdnget.rb', line 279

def list()
  jstr = fetch("#{API_URL}?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