From 711ef460f914dc12ea643522ac1c267e681349c5 Mon Sep 17 00:00:00 2001 From: Chris Veilleux Date: Mon, 22 Oct 2018 13:05:41 -0500 Subject: [PATCH] refactored to only return those values needed by the UI --- .../market_api/endpoints/skill_detail.py | 68 +++++++------------ 1 file changed, 26 insertions(+), 42 deletions(-) diff --git a/market/backend/v1/market-api/market_api/endpoints/skill_detail.py b/market/backend/v1/market-api/market_api/endpoints/skill_detail.py index 6ba81f26..4a32f912 100644 --- a/market/backend/v1/market-api/market_api/endpoints/skill_detail.py +++ b/market/backend/v1/market-api/market_api/endpoints/skill_detail.py @@ -4,12 +4,8 @@ from http import HTTPStatus from markdown import markdown import requests as service_request -from .common import ( - aggregate_manifest_skills, - call_skill_manifest_endpoint, - parse_skill_manifest_response -) from selene_util.api import APIError, SeleneEndpoint +from .common import RepositorySkill class SkillDetailEndpoint(SeleneEndpoint): @@ -18,66 +14,54 @@ class SkillDetailEndpoint(SeleneEndpoint): def __init__(self): super(SkillDetailEndpoint, self).__init__() - self.skill_id = None + self.skill_name = None self.response_skill = None self.manifest_skills = [] - def get(self, skill_id): + def get(self, skill_name): """Process an HTTP GET request""" - self.skill_id = skill_id + self.skill_name = skill_name try: - self._authenticate() - self._get_skill_details() - self._get_skill_manifests() + repository_skill = self._get_skill_details() except APIError: pass else: - self._build_response_data() + self._build_response_data(repository_skill) self.response = (self.response_skill, HTTPStatus.OK) return self.response - def _get_skill_details(self): + def _get_skill_details(self) -> RepositorySkill: """Build the data to include in the response.""" skill_service_response = service_request.get( - self.config['SELENE_BASE_URL'] + '/skill/id/' + self.skill_id + self.config['SELENE_BASE_URL'] + '/skill/name/' + self.skill_name ) self._check_for_service_errors(skill_service_response) - self.response_skill = skill_service_response.json() - def _get_skill_manifests(self): - service_response = call_skill_manifest_endpoint( - self.tartarus_token, - self.config['TARTARUS_BASE_URL'], - self.user_uuid - ) - if service_response.status_code != HTTPStatus.OK: - self._check_for_service_errors(service_response) - skills_in_manifest = parse_skill_manifest_response( - service_response - ) - self.manifest_skills = skills_in_manifest[ - self.response_skill['skill_name'] - ] + service_response = skill_service_response.json() + repository_skill = RepositorySkill(**service_response) - def _build_response_data(self): + return repository_skill + + def _build_response_data(self, repository_skill: RepositorySkill): """Make some modifications to the response skill for the marketplace""" - aggregated_manifest_skill = aggregate_manifest_skills( - self.manifest_skills - ) - self.response_skill.update( + self.response_skill = dict( + categories=repository_skill.categories, + credits=repository_skill.credits, description=markdown( - self.response_skill['description'], + repository_skill.description, output_format='html5' ), + icon=repository_skill.icon, + iconImage=repository_skill.icon_image, + isSystemSkill=repository_skill.is_system_skill, + name=repository_skill.skill_name, + platforms=repository_skill.platforms, + repositoryUrl=repository_skill.repository_url, summary=markdown( - self.response_skill['summary'], + repository_skill.summary, output_format='html5' ), - installStatus=aggregated_manifest_skill.installation, - repositoryUrl=self.response_skill['repository_url'], - iconImage=self.response_skill['icon_image'] + title=repository_skill.title, + triggers=repository_skill.triggers ) - - del(self.response_skill['repository_url']) - del(self.response_skill['icon_image'])