from functools import wraps
from flask.ext.restful.utils import unpack


def cache_control(max_age=55):
  def wrap(f):
    @wraps(f)
    def add_max_age(*args, **kwargs):
      response = f(*args, **kwargs)
      response.headers['Cache-Control'] = 'max-age=%d' % max_age
      return response
    return add_max_age
  return wrap


def cache_control_flask_restful(max_age=55):
  def wrap(f):
    @wraps(f)
    def add_max_age(*args, **kwargs):
      response = f(*args, **kwargs)
      body, status_code, headers = unpack(response)
      headers['Cache-Control'] = 'max-age=%d' % max_age
      return body, status_code, headers
    return add_max_age
  return wrap


def no_cache(f):
  @wraps(f)
  def add_no_cache(*args, **kwargs):
    response = f(*args, **kwargs)
    if response is not None:
      response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate'
    return response
  return add_no_cache
