from exceptions import APIPaginationError


def build_link_header(query, base_url, per_page):
    """
    Adds pagination link headers to an API response.
    """
    links = [
        '<{0}?page=1&per-page={1}>; rel="first"'.format(base_url, per_page),
        '<{0}?page={1}&per-page={2}>; rel="last"'.format(
            base_url, query.pages, per_page
        ),
    ]
    if query.has_prev:
        links.append(
            '<{0}?page={1}&per-page={2}>; rel="prev"'.format(
                base_url, query.prev_num, per_page
            )
        )
    if query.has_next:
        links.append(
            '<{0}?page={1}&per-page={2}>; rel="next"'.format(
                base_url, query.next_num, per_page
            )
        )

    links = ",".join(links)
    return dict(Link=links)

  
def validate_per_page(per_page):
    if per_page and per_page > 100 or per_page < 1:
        raise APIPaginationError("per-page parameter must be between 1 and 100")

    return per_page