Class: CDNGet::CDNJS

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

Overview

TODO: use jsdelivr api

Constant Summary collapse

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

Instance Method Summary collapse

Methods inherited from Base

#download, inherited

Instance Method Details

#find(library) ⇒ Object



145
146
147
148
149
150
151
152
153
154
155
# 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) ⇒ Object



157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# 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

#listObject



137
138
139
140
141
142
143
# 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