<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def do_GET_body(self):
 """Create body of GET."""

        iiif = self.iiif
        if (len(self.path) > 1024):
            raise IIIFError(code=414,
                            text="URI Too Long: Max 1024 chars, got %d\n" % len(self.path))
        try:
            # self.path has leading / then identifier/params...
            self.path = self.path.lstrip('/')
            sys.stderr.write("path = %s" % (self.path))
            iiif.parse_url(self.path)
        except Exception as e:
            # Something completely unexpected => 500
            raise IIIFError(code=500,
                            text="Internal Server Error: unexpected exception parsing request (" + str(e) + ")")
        # Now we have a full iiif request
        if (re.match('[\w\.\-]+$', iiif.identifier)):
            file = os.path.join(TESTIMAGE_DIR, iiif.identifier)
            if (not os.path.isfile(file)):
                images_available = ""
                for image_file in os.listdir(TESTIMAGE_DIR):
                    if (os.path.isfile(os.path.join(TESTIMAGE_DIR, image_file))):
                        images_available += "  " + image_file + "\n"
                raise IIIFError(code=404, parameter="identifier",
                                text="Image resource '" + iiif.identifier + "' not found. Local image files available:\n" + images_available)
        else:
            raise IIIFError(code=404, parameter="identifier",
                            text="Image resource '" + iiif.identifier + "' not found. Only local test images and http: URIs for images are supported.\n")
        # Now know image is OK
        manipulator = IIIFRequestHandler.manipulator_class()
        # Stash manipulator object so we can cleanup after reading file
        self.manipulator = manipulator
        self.compliance_uri = manipulator.compliance_uri
        if (iiif.info):
            # get size
            manipulator.srcfile = file
            manipulator.do_first()
            # most of info.json comes from config, a few things
            # specific to image
            i = IIIFInfo()
            i.identifier = self.iiif.identifier
            i.width = manipulator.width
            i.height = manipulator.height
            import io
            return(io.StringIO(i.as_json()), "application/json")
        else:
            (outfile, mime_type) = manipulator.derive(file, iiif)
            return(open(outfile, 'r'), mime_type)