Class: CDNGet::Unpkg
Constant Summary collapse
- CODE =
"unpkg"
- SITE_URL =
"https://unpkg.com/"
- API_URL =
API_URL = “www.npmjs.com”
"https://api.npms.io/v2"
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
Methods inherited from Base
#download, inherited, #initialize
Constructor Details
This class inherits a constructor from CDNGet::Base
Instance Method Details
#find(library) ⇒ Object
421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 |
# File 'lib/cdnget.rb', line 421 def find(library) validate(library, nil) json = fetch("#{API_URL}/package/#{library}", library) jdata = JSON.load(json) _debug_print(jdata) dict = jdata["collected"]["metadata"] versions = [dict["version"]] # url = File.join(SITE_URL, "/browse/#{library}/") html = fetch(url, library) _debug_print(html) if html =~ /<script>window.__DATA__\s*=\s*(.*?)<\/script>/m jdata2 = JSON.load($1) versions = jdata2["availableVersions"].reverse() end # return { name: dict["name"], desc: dict["description"], tags: (dict["keywords"] || []).join(", "), site: dict["links"] ? dict["links"]["homepage"] : dict["links"]["npm"], info: File.join(SITE_URL, "/browse/#{library}/"), versions: versions, license: dict["license"], } end |
#get(library, version) ⇒ Object
448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 |
# File 'lib/cdnget.rb', line 448 def get(library, version) validate(library, version) dict = find(library) dict.delete(:versions) # url = "https://data.jsdelivr.com/v1/package/npm/#{library}@#{version}/flat" begin json = fetch(url, library) rescue CommandError raise CommandError.new("#{library}@#{version}: Library or version not found.") end jdata = JSON.load(json) files = jdata["files"].collect {|d| d["name"] } baseurl = File.join(SITE_URL, "/#{library}@#{version}") _debug_print(jdata) # dict.update({ name: library, version: version, info: File.join(SITE_URL, "/browse/#{library}@#{version}/"), npmpkg: "https://registry.npmjs.org/#{library}/-/#{library}-#{version}.tgz", urls: files.collect {|x| baseurl+x }, files: files, baseurl: baseurl, default: jdata["default"], destdir: "#{library}@#{version}", }) return dict end |
#list ⇒ Object
402 403 404 |
# File 'lib/cdnget.rb', line 402 def list() return nil # nil means that this CDN can't list libraries without pattern end |
#search(pattern) ⇒ Object
406 407 408 409 410 411 412 413 414 415 416 417 418 419 |
# File 'lib/cdnget.rb', line 406 def search(pattern) #json = fetch("#{API_URL}/search?q=#{pattern}") json = fetch("#{API_URL}/search?q=#{pattern}&size=250") jdata = JSON.load(json) _debug_print(jdata) #arr = jdata["objects"] # www.npmjs.com arr = jdata["results"] # api.npms.io return arr.select {|dict| File.fnmatch(pattern, dict["package"]["name"], File::FNM_CASEFOLD) }.collect {|dict| d = dict["package"] {name: d["name"], desc: d["description"], version: d["version"]} } end |