'Construct a PyCURL object and fetch given URL.
@param url: IDNA-encoded URL
@param options: FetchOptions instance
@param platformPath: directory with platform certificates
@returns: FetcherOutArgs instance with fetched URL data
@throws: anything PyCURL can throw (SSL error, timeout, etc.)'

@staticmethod
def staticFetch(url, options, platformPath):

    try:
        buf = cStringIO.StringIO()
        headerBuf = cStringIO.StringIO()
        c = pycurl.Curl()
        c.setopt(c.URL, url)
        c.setopt(c.WRITEFUNCTION, buf.write)
        c.setopt(c.HEADERFUNCTION, headerBuf.write)
        c.setopt(c.CONNECTTIMEOUT, options.connectTimeout)
        c.setopt(c.COOKIEJAR, COOKIE_FILE_NAME)
        c.setopt(c.COOKIEFILE, COOKIE_FILE_NAME)
        c.setopt(c.TIMEOUT, options.readTimeout)
        c.setopt(c.CAPATH, platformPath)
        if options.userAgent:
            c.setopt(c.USERAGENT, options.userAgent)
        c.setopt(c.HTTPHEADER, ['X-Extra-Header:    true'])
        c.setopt(c.SSLVERSION, options.sslVersion)
        c.setopt(c.VERBOSE, options.curlVerbose)
        c.setopt(c.SSL_CIPHER_LIST, options.cipherList)
        c.perform()
        bufValue = buf.getvalue()
        headerStr = headerBuf.getvalue()
        httpCode = c.getinfo(pycurl.HTTP_CODE)
    finally:
        buf.close()
        headerBuf.close()
        c.close()
    fetched = FetcherOutArgs(httpCode, bufValue, headerStr)
    return fetched
