'Execute the request to Google API. Return a tuple (\'HTTP_CODE\', \'HTTP_RESPONSE\')
:param uri : the url to contact
:param params : dict or already encoded parameters for the request to make
:param headers : headers of request
:param type : the method to use to make the request
:param preuri : pre url to prepend to param uri.'

@api.model
def _do_request(self, uri, params={}, headers={}, type='POST', preuri='https://www.googleapis.com'):

    _logger.debug(('Uri:    %s    -    Type    :    %s    -    Headers:    %s    -    Params    :    %s    !' % (uri, type, headers, (werkzeug.url_encode(params) if (type == 'GET') else params))))
    status = 418
    response = ''
    ask_time = fields.Datetime.now()
    try:
        if ((type.upper() == 'GET') or (type.upper() == 'DELETE')):
            data = werkzeug.url_encode(params)
            req = urllib2.Request((((preuri + uri) + '?') + data))
        elif ((type.upper() == 'POST') or (type.upper() == 'PATCH') or (type.upper() == 'PUT')):
            req = urllib2.Request((preuri + uri), params, headers)
        else:
            raise Exception((_('Method    not    supported    [%s]    not    in    [GET,    POST,    PUT,    PATCH    or    DELETE]!') % type))
        req.get_method = (lambda : type.upper())
        resp = urllib2.urlopen(req, timeout=TIMEOUT)
        status = resp.getcode()
        if (int(status) in (204, 404)):
            response = False
        else:
            content = resp.read()
            response = json.loads(content)
        try:
            ask_time = datetime.strptime(resp.headers.get('date'), '%a,    %d    %b    %Y    %H:%M:%S    %Z')
        except:
            pass
    except urllib2.HTTPError as error:
        if (error.code in (204, 404)):
            status = error.code
            response = ''
        else:
            _logger.exception('Bad    google    request    :    %s    !', error.read())
            if (error.code in (400, 401, 410)):
                raise error
            raise self.env['res.config.settings'].get_config_warning(_('Something    went    wrong    with    your    request    to    google'))
    return (status, response, ask_time)
