Search in sources :

Example 6 with VCard

use of com.zimbra.cs.service.formatter.VCard in project zm-mailbox by Zimbra.

the class AddressbookCollection method handlePost.

@Override
public void handlePost(DavContext ctxt) throws DavException, IOException, ServiceException {
    Provisioning prov = Provisioning.getInstance();
    DavResource rs = null;
    try {
        String user = ctxt.getUser();
        Account account = prov.get(AccountBy.name, user);
        if (account == null) {
            // Anti-account name harvesting.
            ZimbraLog.dav.info("Failing POST to Addressbook - no such account '%s'", user);
            throw new DavException("Request denied", HttpServletResponse.SC_NOT_FOUND, null);
        }
        VCard vcard = AddressObject.uploadToVCard(ctxt);
        String baseName = new StringBuilder(vcard.uid).append(AddressObject.VCARD_EXTENSION).toString();
        rs = UrlNamespace.getResourceAt(ctxt, ctxt.getUser(), relativeUrlForChild(ctxt.getUser(), baseName));
        if (rs != null) {
            // name based on uid already taken - choose another.
            baseName = new StringBuilder(UUIDUtil.generateUUID()).append(AddressObject.VCARD_EXTENSION).toString();
        }
        rs = AddressObject.create(ctxt, baseName, this, vcard, false);
        if (rs.isNewlyCreated()) {
            ctxt.getResponse().setHeader("Location", rs.getHref());
            ctxt.setStatus(HttpServletResponse.SC_CREATED);
        } else {
            ctxt.setStatus(HttpServletResponse.SC_NO_CONTENT);
        }
        if (rs.hasEtag()) {
            ctxt.getResponse().setHeader(DavProtocol.HEADER_ETAG, rs.getEtag());
            ctxt.getResponse().setHeader(ETagHeaderFilter.ZIMBRA_ETAG_HEADER, rs.getEtag());
        }
    } catch (ServiceException e) {
        if (e.getCode().equals(ServiceException.FORBIDDEN)) {
            throw new DavException(e.getMessage(), HttpServletResponse.SC_FORBIDDEN, e);
        } else {
            throw new DavException("cannot create vcard item", HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e);
        }
    }
}
Also used : Account(com.zimbra.cs.account.Account) ServiceException(com.zimbra.common.service.ServiceException) DavException(com.zimbra.cs.dav.DavException) VCard(com.zimbra.cs.service.formatter.VCard) Provisioning(com.zimbra.cs.account.Provisioning)

Aggregations

VCard (com.zimbra.cs.service.formatter.VCard)6 ParsedContact (com.zimbra.cs.mime.ParsedContact)3 ServiceException (com.zimbra.common.service.ServiceException)2 DavException (com.zimbra.cs.dav.DavException)2 Upload (com.zimbra.cs.service.FileUploadServlet.Upload)2 IOException (java.io.IOException)2 ContentDisposition (com.zimbra.common.mime.ContentDisposition)1 ContentType (com.zimbra.common.mime.ContentType)1 ZMimeBodyPart (com.zimbra.common.zmime.ZMimeBodyPart)1 Account (com.zimbra.cs.account.Account)1 Provisioning (com.zimbra.cs.account.Provisioning)1 Contact (com.zimbra.cs.mailbox.Contact)1 Attachment (com.zimbra.cs.mailbox.Contact.Attachment)1 Document (com.zimbra.cs.mailbox.Document)1 DocumentDataSource (com.zimbra.cs.mailbox.DocumentDataSource)1 MailItem (com.zimbra.cs.mailbox.MailItem)1 Mailbox (com.zimbra.cs.mailbox.Mailbox)1 Message (com.zimbra.cs.mailbox.Message)1 MessageDataSource (com.zimbra.cs.mailbox.MessageDataSource)1 FileUploadServlet (com.zimbra.cs.service.FileUploadServlet)1