def open(self):
        """
        Opens the URL associated with the GPFile and returns a file-like object
        with three extra methods:

            * geturl() - return the ultimate URL (can be used to determine if a
                redirect was followed)

            * info() - return the meta-information of the page, such as headers

            * getcode() - return the HTTP status code of the response
        """
        request = urllib.request.Request(self.uri)
        if self.server_data.authorization_header() is not None:
            request.add_header('Authorization', self.server_data.authorization_header())
        request.add_header('User-Agent', 'GenePatternRest')
        return urllib.request.urlopen(request)