Skip to content

Commit

Permalink
Encapsulate Card/Cal dav server interactions into DavClient
Browse files Browse the repository at this point in the history
  • Loading branch information
HoussemNasri committed Jan 15, 2025
1 parent fecb130 commit 5dc96d3
Show file tree
Hide file tree
Showing 17 changed files with 295 additions and 161 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@ private static List<Module> chooseOpenPaasModule(OpenPaasModuleChooserConfigurat
if (openPaasModuleChooserConfiguration.enabled()) {
ImmutableList.Builder<Module> moduleBuilder = ImmutableList.<Module>builder().add(new OpenPaasModule());
if (openPaasModuleChooserConfiguration.cardDavCollectedContactEnabled()) {
moduleBuilder.add(new OpenPaasModule.CardDavModule());
moduleBuilder.add(new OpenPaasModule.DavModule());
}
if (openPaasModuleChooserConfiguration.contactsConsumerEnabled()) {
moduleBuilder.add(new OpenPaasContactsConsumerModule());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ private static List<Module> chooseOpenPaas(OpenPaasModuleChooserConfiguration mo
ImmutableList.Builder<Module> moduleBuilder = ImmutableList.<Module>builder().add(new OpenPaasModule());

if (moduleChooserConfiguration.cardDavCollectedContactEnabled()) {
moduleBuilder.add(new OpenPaasModule.CardDavModule());
moduleBuilder.add(new OpenPaasModule.DavModule());
}
if (moduleChooserConfiguration.contactsConsumerEnabled()) {
moduleBuilder.add(Modules.override(new OpenPaasContactsConsumerModule())
Expand Down
4 changes: 4 additions & 0 deletions tmail-backend/tmail-third-party/openpaas/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@
<groupId>${james.groupId}</groupId>
<artifactId>apache-james-backends-rabbitmq</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>jmap-extensions</artifactId>
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
<artifactId>apache-james-backends-rabbitmq</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,9 @@
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.linagora.tmail.api.OpenPaasRestClient;
import com.linagora.tmail.carddav.CardDavClient;
import com.linagora.tmail.configuration.OpenPaasConfiguration;
import com.linagora.tmail.dav.DavClient;
import com.linagora.tmail.dav.DavClientImpl;

public class OpenPaasModule extends AbstractModule {
private static final Logger LOGGER = LoggerFactory.getLogger(OpenPaasModule.class);
Expand Down Expand Up @@ -65,14 +66,14 @@ public OpenPaasRestClient provideOpenPaasRestCLient(OpenPaasConfiguration openPa
return new OpenPaasRestClient(openPaasConfiguration);
}

public static class CardDavModule extends AbstractModule {
public static class DavModule extends AbstractModule {

@Provides
@Singleton
public CardDavClient provideCardDavClient(OpenPaasConfiguration openPaasConfiguration) {
public DavClient provideDavClient(OpenPaasConfiguration openPaasConfiguration) {
Preconditions.checkArgument(openPaasConfiguration.cardDavConfiguration().isPresent(),
"OpenPaasConfiguration should have a carddav configuration");
return new CardDavClient.OpenpaasCardDavClient(openPaasConfiguration.cardDavConfiguration().get());
"OpenPaasConfiguration should have dav configuration");
return new DavClientImpl(openPaasConfiguration.cardDavConfiguration().get());
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/********************************************************************
* As a subpart of Twake Mail, this file is edited by Linagora. *
* *
* https://twake-mail.com/ *
* https://linagora.com *
* *
* This file is subject to The Affero Gnu Public License *
* version 3. *
* *
* https://www.gnu.org/licenses/agpl-3.0.en.html *
* *
* This program is distributed in the hope that it will be *
* useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR *
* PURPOSE. See the GNU Affero General Public License for *
* more details. *
********************************************************************/

package com.linagora.tmail.dav;

import com.linagora.tmail.dav.card.CardDavCreationObjectRequest;

import net.fortuna.ical4j.model.parameter.PartStat;
import reactor.core.publisher.Mono;

public interface DavClient {
Mono<Boolean> existsCollectedContact(String username, String userId, String collectedId);

Mono<Void> createCollectedContact(String username, String userId, CardDavCreationObjectRequest creationObjectRequest);

Mono<PartStat> getUserParticipationStatus(String userId, String eventUuid);

Mono<Void> setUserParticipationStatus(String userId, String eventUuid, PartStat partStat);
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@
* more details. *
********************************************************************/

package com.linagora.tmail.carddav;
package com.linagora.tmail.dav;

public class CardDavClientException extends RuntimeException {
public class DavClientException extends RuntimeException {

public CardDavClientException(String message) {
public DavClientException(String message) {
super(message);
}

public CardDavClientException(String message, Throwable cause) {
public DavClientException(String message, Throwable cause) {
super(message, cause);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/********************************************************************
* As a subpart of Twake Mail, this file is edited by Linagora. *
* *
* https://twake-mail.com/ *
* https://linagora.com *
* *
* This file is subject to The Affero Gnu Public License *
* version 3. *
* *
* https://www.gnu.org/licenses/agpl-3.0.en.html *
* *
* This program is distributed in the hope that it will be *
* useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR *
* PURPOSE. See the GNU Affero General Public License for *
* more details. *
********************************************************************/

package com.linagora.tmail.dav;

import java.time.Duration;

import com.linagora.tmail.configuration.CardDavConfiguration;
import com.linagora.tmail.dav.calendar.CalDavHandler;
import com.linagora.tmail.dav.card.CardDavCreationObjectRequest;
import com.linagora.tmail.dav.card.CardDavHandler;

import net.fortuna.ical4j.model.parameter.PartStat;
import reactor.core.publisher.Mono;
import reactor.netty.http.client.HttpClient;

public class DavClientImpl implements DavClient {
private static final Duration RESPONSE_TIMEOUT_DEFAULT = Duration.ofSeconds(10);

private final CardDavHandler cardDavHandler;
private final CalDavHandler calDavHandler;

public DavClientImpl(CardDavConfiguration cardDavConfiguration) {
HttpClient client = HttpClient.create()
.baseUrl(cardDavConfiguration.baseUrl().toString())
.responseTimeout(cardDavConfiguration.responseTimeout().orElse(RESPONSE_TIMEOUT_DEFAULT));

this.cardDavHandler = new CardDavHandler(cardDavConfiguration, client);
this.calDavHandler = new CalDavHandler();
}

@Override
public Mono<Boolean> existsCollectedContact(String username, String userId,
String collectedId) {
return cardDavHandler.existsCollectedContact(username, userId, collectedId);
}

@Override
public Mono<Void> createCollectedContact(String username, String userId,
CardDavCreationObjectRequest creationObjectRequest) {
return cardDavHandler.createCollectedContact(username, userId, creationObjectRequest);
}

@Override
public Mono<PartStat> getUserParticipationStatus(String userId, String eventUuid) {
return calDavHandler.getUserParticipationStatus(userId, eventUuid);
}

@Override
public Mono<Void> setUserParticipationStatus(String userId, String eventUuid,
PartStat partStat) {
return calDavHandler.setUserParticipationStatus(userId, eventUuid, partStat);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/********************************************************************
* As a subpart of Twake Mail, this file is edited by Linagora. *
* *
* https://twake-mail.com/ *
* https://linagora.com *
* *
* This file is subject to The Affero Gnu Public License *
* version 3. *
* *
* https://www.gnu.org/licenses/agpl-3.0.en.html *
* *
* This program is distributed in the hope that it will be *
* useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR *
* PURPOSE. See the GNU Affero General Public License for *
* more details. *
********************************************************************/

package com.linagora.tmail.dav.calendar;

import net.fortuna.ical4j.model.parameter.PartStat;
import reactor.core.publisher.Mono;

public class CalDavHandler {

public Mono<PartStat> getUserParticipationStatus(String userId, String eventUuid) {
return null;
}

public Mono<Void> setUserParticipationStatus(String userId, String eventUuid, PartStat partStat) {
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* more details. *
********************************************************************/

package com.linagora.tmail.carddav;
package com.linagora.tmail.dav.card;

import java.util.List;
import java.util.Optional;
Expand Down
Loading

0 comments on commit 5dc96d3

Please sign in to comment.