001package com.plivo.examples.multipartycall;
002
003import com.plivo.api.Plivo;
004import com.plivo.api.exceptions.PlivoRestException;
005import com.plivo.api.exceptions.PlivoValidationException;
006import com.plivo.api.models.base.ListResponse;
007import com.plivo.api.models.multipartycall.MultiPartyCall;
008import com.plivo.api.models.multipartycall.MultiPartyCallUtils;
009import com.plivo.api.util.PropertyFilter;
010
011import java.io.IOException;
012import java.text.SimpleDateFormat;
013import java.time.OffsetDateTime;
014import java.time.format.DateTimeFormatter;
015import java.util.Date;
016
017public class ListMPC {
018
019  private static boolean checkTime(String timeString) {
020    return OffsetDateTime.parse(timeString, DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ssXXXXX")).isBefore(OffsetDateTime.now().minusHours(1));
021  }
022
023  public static void main(String[] args) throws IOException, PlivoRestException, PlivoValidationException, NoSuchMethodException {
024    Plivo.init("<YOUR-AUTH-ID>", "<YOUR-AUTH-TOKEN>");
025
026    // Fetch all MultiPartyCalls for an account
027    ListResponse<MultiPartyCall> allMPC = MultiPartyCall.lister().list();
028    System.out.println(allMPC.getMeta().getTotalCount());
029
030    // Fetch only ended MultiPartyCalls for an account. Other possible status are (initialized, active)
031    ListResponse<MultiPartyCall> endedMPC = MultiPartyCall.lister().status(MultiPartyCallUtils.ended).list();
032    if (endedMPC.getObjects().stream().allMatch(mpc -> mpc.getStatus().equals(MultiPartyCallUtils.ended))) {
033      System.out.println("fetched only ended MPC");
034    } else {
035      System.out.println("failed to fetch only ended MPC");
036    }
037
038    ListResponse<MultiPartyCall> previousHourMPC = MultiPartyCall.lister().
039      endTime(new PropertyFilter<String>().lessThan(new SimpleDateFormat("yyyy-MM-dd hh:mm").
040        format(new Date(System.currentTimeMillis() - 3600 * 1000)))).list();
041    if (previousHourMPC.getObjects().stream().allMatch(mpc -> ListMPC.checkTime(mpc.getEndTime()))) {
042      System.out.println("fetched only MPC older than 1 hour");
043    } else {
044      System.out.println("failed to fetch MPC older than 1 hour");
045    }
046  }
047}