Exemplo n.º 1
0
def fetchByID(id, firstName=None, lastName=None):
    '''
    Fetches one joke with specified id
    Args:
        id (int): identifier of the joke in icndb.
        firstName, lastName (both str): names that are used to change
            the name of the main character when fetching a Joke.

    Returns:
        instance of a icndb.Joke class

    Raises:
        icndb.joke_extractor.JokeNotRetrieved: if id is bigger than result of
            fetchNumberOfJokes
        TypeError: if id is not an integer
        ValueError: if id is less than 0.
    '''
    checkNumber(id)
    if id > fetchNumberOfJokes():
        raise Builder.JokeNotRetrieved("Identifier is too big.")
    url = "{}/jokes/{}".format(__baseURL__, id)
    queryParameters = processNames(firstName, lastName)
    if queryParameters:
        url += "?{}".format(urllib.parse.urlencode(queryParameters))
    return Builder.buildJokes(_requestJokes(url))
Exemplo n.º 2
0
def fetchByID(id, firstName=None, lastName=None):
    '''
    Fetches one joke with specified id
    Args:
        id (int): identifier of the joke in icndb.
        firstName, lastName (both str): names that are used to change
            the name of the main character when fetching a Joke.

    Returns:
        instance of a icndb.Joke class

    Raises:
        icndb.joke_extractor.JokeNotRetrieved: if id is bigger than result of
            fetchNumberOfJokes
        TypeError: if id is not an integer
        ValueError: if id is less than 0.
    '''
    checkNumber(id)
    if id > fetchNumberOfJokes():
        raise Builder.JokeNotRetrieved("Identifier is too big.")
    url = "{}/jokes/{}".format(__baseURL__, id)
    queryParameters = processNames(firstName, lastName)
    if queryParameters:
        url += "?{}".format(urllib.parse.urlencode(queryParameters))
    return Builder.buildJokes(_requestJokes(url))
Exemplo n.º 3
0
def fetchRandom(number=1, firstName=None, lastName=None,
    limitTo=None, exclude=None):
    '''
    Fetches arbitrary number of random jokes.

    Args:
        number (int, default=1): number of jokes to fetch.
            Must be positive integer.
        firstName, lastName (both str): names that are used to change
            the name of the main character when fetching a Joke.
        limitTo (None or list of str): list of categories
            which joke should be taken from.
        exclude (None or list of str): list of categories which joke
            should NOT be taken from.

    Returns:
        Instance of icndb.Joke class.
        If parameter number > 1, returns list of Jokes.

    Raises:
        TypeError: if number is not an integer
        ValueError: if number is non-positive.
    '''
    checkNumber(number) # raise an Exception if number is invalid
    url = "{}/jokes/random/{}".format(__baseURL__, number if number > 1 else '')
    queryParameters = limitCategories(processNames(firstName, lastName),
                             limitTo, exclude)
    if queryParameters:
        url = "{}?{}".format(url, urllib.parse.urlencode(queryParameters))

    return Builder.buildJokes(_requestJokes(url))
Exemplo n.º 4
0
def fetchRandom(number=1,
                firstName=None,
                lastName=None,
                limitTo=None,
                exclude=None):
    '''
    Fetches arbitrary number of random jokes.

    Args:
        number (int, default=1): number of jokes to fetch.
            Must be positive integer.
        firstName, lastName (both str): names that are used to change
            the name of the main character when fetching a Joke.
        limitTo (None or list of str): list of categories
            which joke should be taken from.
        exclude (None or list of str): list of categories which joke
            should NOT be taken from.

    Returns:
        Instance of icndb.Joke class.
        If parameter number > 1, returns list of Jokes.

    Raises:
        TypeError: if number is not an integer
        ValueError: if number is non-positive.
    '''
    checkNumber(number)  # raise an Exception if number is invalid
    url = "{}/jokes/random/{}".format(__baseURL__,
                                      number if number > 1 else '')
    queryParameters = limitCategories(processNames(firstName, lastName),
                                      limitTo, exclude)
    if queryParameters:
        url = "{}?{}".format(url, urllib.parse.urlencode(queryParameters))

    return Builder.buildJokes(_requestJokes(url))