MCPcopy Create free account
hub / github.com/LOLINTERNETZ/vscodeoffline / VSCMarketplace

Class VSCMarketplace

vscoffline/sync.py:369–648  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

367
368
369class VSCMarketplace(object):
370
371 def __init__(self, insider, prerelease, version, session):
372 self.insider = insider
373 self.prerelease = prerelease
374 self.version = version
375 self.session = session
376 self.backoff = 1
377
378 def get_recommendations(self, destination, totalrecommended):
379 recommendations = self.search_top_n(totalrecommended)
380 # recommended_old = self.get_recommendations_old(destination)
381
382 # for extension in recommendations:
383 # # If the extension has already been found then prevent it from being collected again when processing the old recommendation list
384 # if extension.identity in recommended_old.keys():
385 # del recommended_old[extension.identity]
386
387 # for packagename in recommended_old:
388 # extension = self.search_by_extension_name(packagename)
389 # if extension:
390 # recommendations.append(extension)
391 # else:
392 # log.debug(
393 # f'get_recommendations failed finding a recommended extension by name for {packagename}. This extension has likely been removed.')
394
395 prereleasecount = 0
396 for recommendation in recommendations:
397 recommendation.set_recommended()
398 # If the found extension is a prerelease version search for the next available release version
399 if not self.prerelease and recommendation.isprerelease():
400 prereleasecount += 1
401 extension = self.search_release_by_extension_id(
402 recommendation.extensionId)
403 if extension:
404 recommendation.versions = extension.get_latest_release_versions()
405 return recommendations
406
407 def get_recommendations_old(self, destination):
408 result = self.session.get(vsc.URL_RECOMMENDATIONS,
409 allow_redirects=True, timeout=vsc.TIMEOUT)
410 if result.status_code != 200:
411 log.warning(
412 f"get_recommendations failed accessing url {vsc.URL_RECOMMENDATIONS}, unhandled status code {result.status_code}")
413 return {} # Return an empty dictionary instead of False
414
415 jresult = result.json()
416 with open(os.path.join(destination, 'recommendations.json'), 'w') as outfile:
417 json.dump(jresult, outfile, cls=vsc.MagicJsonEncoder, indent=4)
418
419 # To dict to remove duplicates
420 packages = {}
421 for recommendation in jresult['workspaceRecommendations']:
422 for package in recommendation['recommendations']:
423 packages[package] = None
424
425 return packages
426

Callers 1

sync.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected