public List getBundles() {
        clearResultMetaInformation();
        List bundles = new ArrayList();
        StringBuffer result = new StringBuffer();

        GetMethod get = new GetMethod(apiEndpoint + DeliciousConstants.BUNDLES_ALL);
        get.setDoAuthentication(true);

        try {
            httpResult = httpClient.executeMethod(get);
            checkNotAuthorized(httpResult);
            logger.debug("Result: " + httpResult);
            if (get.getResponseBodyAsStream() != null) {
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(get.getResponseBodyAsStream(), DeliciousUtils.UTF_8));
                String input;
                while ((input = bufferedReader.readLine()) != null) {
                    result.append(input).append(DeliciousUtils.LINE_SEPARATOR);
                }

                get.releaseConnection();

                Document document = documentBuilder.parse(new InputSource(new StringReader(result.toString())));
                NodeList bundleItems = document.getElementsByTagName(DeliciousConstants.BUNDLE_TAG);
                if (bundleItems != null && bundleItems.getLength() > 0) {
                    for (int i = 0; i < bundleItems.getLength(); i++) {
                        Node bundleItem = bundleItems.item(i);
                        Bundle bundle;
                        String name = bundleItem.getAttributes().getNamedItem(DeliciousConstants.BUNDLE_NAME_ATTRIBUTE).getNodeValue();
                        String tags = bundleItem.getAttributes().getNamedItem(DeliciousConstants.BUNDLE_TAGS_ATTRIBUTE).getNodeValue();

                        bundle = new Bundle(name, tags);

                        bundles.add(bundle);
                    }
                }
            }
        } catch (IOException e) {
            logger.error(e);
        } catch (SAXException e) {
            logger.error(e);
            throw new DeliciousException("Response parse error", e);
        }

        return bundles;
    }