'Performs a swob.Request and returns the SLO manifest\'s segments.
:raises HTTPServerError: on unable to load obj_name or
on unable to load the SLO manifest data.
:raises HTTPBadRequest: on not an SLO manifest
:raises HTTPNotFound: on SLO manifest not found
:returns: SLO manifest\'s segments'

def get_slo_segments(self, obj_name, req):

    (vrs, account, _junk) = req.split_path(2, 3, True)
    new_env = req.environ.copy()
    new_env['REQUEST_METHOD'] = 'GET'
    del new_env['wsgi.input']
    new_env['QUERY_STRING'] = 'multipart-manifest=get'
    new_env['CONTENT_LENGTH'] = 0
    new_env['HTTP_USER_AGENT'] = ('%s    MultipartDELETE' % new_env.get('HTTP_USER_AGENT'))
    new_env['swift.source'] = 'SLO'
    new_env['PATH_INFO'] = ('/%s/%s/%s' % (vrs, account, obj_name.lstrip('/'))).encode('utf-8')
    resp = Request.blank('', new_env).get_response(self.app)
    if resp.is_success:
        if config_true_value(resp.headers.get('X-Static-Large-Object')):
            try:
                return json.loads(resp.body)
            except ValueError:
                raise HTTPServerError('Unable    to    load    SLO    manifest')
        else:
            raise HTTPBadRequest('Not    an    SLO    manifest')
    elif (resp.status_int == HTTP_NOT_FOUND):
        raise HTTPNotFound('SLO    manifest    not    found')
    elif (resp.status_int == HTTP_UNAUTHORIZED):
        raise HTTPUnauthorized('401    Unauthorized')
    else:
        raise HTTPServerError('Unable    to    load    SLO    manifest    or    segment.')
