Warning

This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for tool_shed.webapp.api.tools

import json
import logging

from galaxy import (
    exceptions,
    util,
)
from galaxy.web import (
    expose_api,
    expose_api_raw_anonymous_and_sessionless,
    require_admin,
)
from tool_shed.managers.tools import search
from tool_shed.util.shed_index import build_index
from . import BaseShedAPIController

log = logging.getLogger(__name__)


[docs]class ToolsController(BaseShedAPIController): """RESTful controller for interactions with tools in the Tool Shed."""
[docs] @expose_api @require_admin def build_search_index(self, trans, **kwd): """ PUT /api/tools/build_search_index Not part of the stable API, just something to simplify bootstrapping tool sheds, scripting, testing, etc... """ repos_indexed, tools_indexed = build_index( trans.app.config.whoosh_index_dir, trans.app.config.file_path, trans.app.config.hgweb_config_dir, trans.app.config.database_connection, ) return { "repositories_indexed": repos_indexed, "tools_indexed": tools_indexed, }
[docs] @expose_api_raw_anonymous_and_sessionless def index(self, trans, **kwd): """ GET /api/tools Displays a collection of tools with optional criteria. :param q: (optional)if present search on the given query will be performed :type q: str :param page: (optional)requested page of the search :type page: int :param page_size: (optional)requested page_size of the search :type page_size: int :param jsonp: (optional)flag whether to use jsonp format response, defaults to False :type jsonp: bool :param callback: (optional)name of the function to wrap callback in used only when jsonp is true, defaults to 'callback' :type callback: str :returns dict: object containing list of results and metadata Examples: GET http://localhost:9009/api/tools GET http://localhost:9009/api/tools?q=fastq """ q = kwd.get("q", "") if not q: raise exceptions.NotImplemented( 'Listing of all the tools is not implemented. Provide parameter "q" to search instead.' ) else: page = kwd.get("page", 1) page_size = kwd.get("page_size", 10) try: page = int(page) page_size = int(page_size) except ValueError: raise exceptions.RequestParameterInvalidException('The "page" and "page_size" have to be integers.') return_jsonp = util.asbool(kwd.get("jsonp", False)) callback = kwd.get("callback", "callback") search_results = search(trans, q, page, page_size) if return_jsonp: response = str(f"{callback}({json.dumps(search_results)});") else: response = json.dumps(search_results) return response