use of org.bedework.util.http.BasicHttpClient in project bw-calendar-engine by Bedework.
the class AbstractDirImpl method find.
@Override
public List<BwPrincipalInfo> find(final String cua, final String cutype, final boolean expand, final Holder<Boolean> truncated) throws CalFacadeException {
final CardDavInfo cdi = getCardDavInfo(false);
if ((cdi == null) || (cdi.getHost() == null)) {
return null;
}
BasicHttpClient cdc = null;
try {
cdc = new BasicHttpClient(cdi.getHost(), cdi.getPort(), null, 15 * 1000);
final List<BwPrincipalInfo> pis = find(cdc, cdi, cua, cutype);
if (!expand) {
return pis;
}
for (final BwPrincipalInfo pi : pis) {
if (!Kind.GROUP.getValue().equalsIgnoreCase(pi.getKind())) {
continue;
}
final List<BwPrincipalInfo> memberPis = new ArrayList<>();
VCard card = pi.getCard();
List<Property> members = card.getProperties(Id.MEMBER);
if (members == null) {
continue;
}
for (final Property p : members) {
BwPrincipalInfo memberPi = fetch(cdc, cdi, p.getValue());
if (memberPi != null) {
memberPis.add(memberPi);
}
}
pi.setMembers(memberPis);
}
return pis;
} catch (final Throwable t) {
if (getLogger().isDebugEnabled()) {
error(t);
}
throw new CalFacadeException(t);
} finally {
if (cdc != null) {
try {
cdc.release();
} catch (final Throwable ignored) {
}
}
}
}
use of org.bedework.util.http.BasicHttpClient in project bw-calendar-engine by Bedework.
the class AbstractDirImpl method getDirInfo.
@Override
public BwPrincipalInfo getDirInfo(final BwPrincipal p) throws CalFacadeException {
BwPrincipalInfo pi = principalInfoMap.get(p.getPrincipalRef());
if (pi != null) {
return pi;
}
// If carddav lookup is enabled - use that
final CardDavInfo cdi = getCardDavInfo(false);
if ((cdi == null) || (cdi.getHost() == null)) {
return null;
}
BasicHttpClient cdc = null;
pi = new BwPrincipalInfo();
try {
cdc = new BasicHttpClient(cdi.getHost(), cdi.getPort(), null, 15 * 1000);
pi.setPropertiesFromVCard(getCard(cdc, cdi.getContextPath(), p), "text/vcard");
} catch (final Throwable t) {
if (getLogger().isDebugEnabled()) {
error(t);
}
} finally {
if (cdc != null) {
cdc.close();
}
}
principalInfoMap.put(p.getPrincipalRef(), pi);
return pi;
}
use of org.bedework.util.http.BasicHttpClient in project bw-calendar-engine by Bedework.
the class NotificationClient method sendRequest.
private void sendRequest(final Object req, final String path) throws CalFacadeException {
if (np.getNotifierURI() == null) {
// Assume not enabled
return;
}
synchronized (this) {
try {
final BasicHttpClient cl = getClient();
cl.setBaseURI(new URI(np.getNotifierURI()));
final StringWriter sw = new StringWriter();
om.writeValue(sw, req);
final byte[] content = sw.toString().getBytes();
final int status = cl.sendRequest("POST", path, // hdrs
null, "application/json", content.length, content);
if (status != HttpServletResponse.SC_OK) {
warn("Unable to post notification");
}
} catch (final Throwable t) {
if (debug) {
error(t);
}
error("Unable to contact notification engine " + t.getLocalizedMessage());
} finally {
try {
getClient().release();
} catch (final Throwable t) {
warn("Error on close " + t.getLocalizedMessage());
}
}
}
}
use of org.bedework.util.http.BasicHttpClient in project bw-calendar-engine by Bedework.
the class AbstractDirImpl method find.
@Override
public List<BwPrincipalInfo> find(final List<WebdavProperty> props, final List<WebdavProperty> returnProps, final String cutype, final Holder<Boolean> truncated) throws CalFacadeException {
final CardDavInfo cdi = getCardDavInfo(false);
if ((cdi == null) || (cdi.getHost() == null)) {
return null;
}
BasicHttpClient cdc = null;
final String path = getCutypePath(cutype, cdi);
String addrCtype = null;
/* See if we want address data in any particular form */
for (final WebdavProperty wd : returnProps) {
if (!wd.getTag().equals(CarddavTags.addressData)) {
continue;
}
addrCtype = wd.getAttr("content-type");
break;
}
try {
cdc = new BasicHttpClient(cdi.getHost(), cdi.getPort(), null, 15 * 1000);
final List<MatchResult> mrs = matching(cdc, cdi.getContextPath() + path, addrCtype, props);
final List<BwPrincipalInfo> pis = new ArrayList<>();
if (mrs == null) {
return pis;
}
for (final MatchResult mr : mrs) {
final BwPrincipalInfo pi = new BwPrincipalInfo();
pi.setPropertiesFromVCard(mr.card, addrCtype);
pis.add(pi);
}
return pis;
} catch (final Throwable t) {
if (getLogger().isDebugEnabled()) {
error(t);
}
throw new CalFacadeException(t);
} finally {
if (cdc != null) {
cdc.close();
}
}
}
Aggregations