# -*- coding: utf-8 -*-
"""
.. module:: MyCapytain.endpoints.cts5
:synopsis: CTS5 endpoint implementation
.. moduleauthor:: Thibault Clérice <leponteineptique@gmail.com>
"""
import MyCapytain.endpoints.proto
import requests
[docs]class CTS(MyCapytain.endpoints.proto.CTS):
"""
Basic integration of the MyCapytain.endpoints.proto.CTS abstraction
"""
def __init__(self, endpoint, inventory=None):
""" API Prototype object
:param self: Object
:type self: API
:param endpoint: URL of the API
:type endpoint: str
:param inventory: Inventory to use
:type inventory: str
:ivar endpoint: Url of the endpoint
:ivar inventory: Default Inventory
"""
super(CTS, self).__init__(endpoint)
self.inventory = inventory
[docs] def call(self, parameters):
""" Call an endpoint given the parameters
:param parameters: Dictionary of parameters
:type parameters: dict
:rtype: text
"""
# DEV !
parameters = {
key: str(parameters[key]) for key in parameters if parameters[key] is not None
}
if self.inventory is not None and "inv" not in parameters:
parameters["inv"] = self.inventory
request = requests.get(self.endpoint, params=parameters)
return request.text
[docs] def getCapabilities(self, inventory=None):
""" Retrieve the inventory information of an API
:param inventory: Name of the inventory
:type inventory: text
:rtype: str
"""
return self.call({
"inv": inventory,
"request": "GetCapabilities"
})
[docs] def getValidReff(self, urn, inventory=None, level=None):
""" Retrieve valid urn-references for a text
:param urn: URN identifying the text
:type urn: text
:param inventory: Name of the inventory
:type inventory: text
:param level: Depth of references expected
:type level: int
:rtype: str
"""
return self.call({
"inv": inventory,
"urn": urn,
"level": level,
"request": "GetValidReff"
})
[docs] def getFirstUrn(self, urn, inventory=None):
""" Retrieve the first passage urn of a text
:param urn: URN identifying the text
:type urn: text
:param inventory: Name of the inventory
:type inventory: text
:rtype: str
"""
return self.call({
"inv": inventory,
"urn": urn,
"request": "GetFirstUrn"
})
[docs] def getPrevNextUrn(self, urn, inventory=None):
""" Retrieve the previous and next passage urn of one passage
:param urn: URN identifying the text's passage (Minimum depth : 1)
:type urn: text
:param inventory: Name of the inventory
:type inventory: text
:rtype: str
"""
return self.call({
"inv": inventory,
"urn": urn,
"request": "GetPrevNextUrn"
})
[docs] def getLabel(self, urn, inventory=None):
""" Retrieve informations about a CTS Urn
:param urn: URN identifying the text's passage (Minimum depth : 1)
:type urn: text
:param inventory: Name of the inventory
:type inventory: text
:rtype: str
"""
return self.call({
"inv": inventory,
"urn": urn,
"request": "GetLabel"
})
[docs] def getPassage(self, urn, inventory=None, context=None):
""" Retrieve a passage
:param urn: URN identifying the text's passage (Minimum depth : 1)
:type urn: text
:param inventory: Name of the inventory
:type inventory: text
:param context: Number of citation units at the same level of the citation hierarchy as the requested urn, immediately preceding and immediately following the requested urn to include in the reply
:type context: int
:rtype: str
"""
return self.call({
"inv": inventory,
"urn": urn,
"context": context,
"request": "GetPassage"
})
[docs] def getPassagePlus(self, urn, inventory=None, context=None):
""" Retrieve a passage and informations about it
:param urn: URN identifying the text's passage (Minimum depth : 1)
:type urn: text
:param inventory: Name of the inventory
:type inventory: text
:param context: Number of citation units at the same level of the citation hierarchy as the requested urn, immediately preceding and immediately following the requested urn to include in the reply
:type context: int
:rtype: str
"""
return self.call({
"inv": inventory,
"urn": urn,
"context": context,
"request": "GetPassagePlus"
})