Switch to side-by-side view

--- a
+++ b/qiita_db/handlers/reference.py
@@ -0,0 +1,83 @@
+# -----------------------------------------------------------------------------
+# Copyright (c) 2014--, The Qiita Development Team.
+#
+# Distributed under the terms of the BSD 3-clause License.
+#
+# The full license is in the file LICENSE, distributed with this software.
+# -----------------------------------------------------------------------------
+
+from tornado.web import HTTPError
+
+from .oauth2 import OauthBaseHandler, authenticate_oauth
+import qiita_db as qdb
+
+
+def _get_reference(r_id):
+    """Returns the reference with the given id if exists
+
+    Parameters
+    ----------
+    r_id : int
+        The reference id
+
+    Returns
+    -------
+    qiita_db.reference.Reference
+        The requested reference
+
+    Raises
+    ------
+    HTTPError
+        If the reference does not exist, with error code 404
+        If there is a problem instantiating the reference, with error code 500
+    """
+    try:
+        reference = qdb.reference.Reference(r_id)
+    except qdb.exceptions.QiitaDBUnknownIDError:
+        raise HTTPError(404)
+    except Exception as e:
+        raise HTTPError(500, reason='Error instantiating the reference: '
+                        '%s' % str(e))
+
+    return reference
+
+
+class ReferenceHandler(OauthBaseHandler):
+    @authenticate_oauth
+    def get(self, reference_id):
+        """Retrieves the filepath information of the given reference
+
+        Parameters
+        ----------
+        reference_id : str
+            The id of the reference whose filepath information is being
+            retrieved
+
+        Returns
+        -------
+        dict
+            'name': str
+                the reference name
+            'version': str
+                the reference version
+            'filepaths': dict of {str: str}
+                The filepaths attached to the reference keyed by filepath type
+        """
+        with qdb.sql_connection.TRN:
+            reference = _get_reference(reference_id)
+
+            fps = {'reference_seqs': reference.sequence_fp}
+            tax_fp = reference.taxonomy_fp
+            if tax_fp:
+                fps["reference_tax"] = tax_fp
+            tree_fp = reference.tree_fp
+            if tree_fp:
+                fps["reference_tree"] = tree_fp
+
+            response = {
+                'name': reference.name,
+                'version': reference.version,
+                'files': fps
+            }
+
+        self.write(response)