All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xcase.msgraph.impl.simple.methods.GetContactFolderMethod Maven / Gradle / Ivy

/**
 * Copyright 2017 Xcase All rights reserved.
 */

package com.xcase.msgraph.impl.simple.methods;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.xcase.common.constant.CommonConstant;
import com.xcase.common.impl.simple.core.CommonHttpResponse;
import com.xcase.common.utils.ConverterUtils;
import com.xcase.msgraph.factories.MSGraphResponseFactory;
import com.xcase.msgraph.objects.MSGraphContactFolder;
import com.xcase.msgraph.transputs.GetContactFolderRequest;
import com.xcase.msgraph.transputs.GetContactFolderResponse;
import java.lang.invoke.MethodHandles;
import java.net.URL;
import org.apache.http.Header;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 *
 * @author martin
 */
public class GetContactFolderMethod extends BaseMSGraphMethod {
    /**
     * log4j object.
     */
    protected static final Logger LOGGER = LogManager.getLogger(MethodHandles.lookup().lookupClass());

    public GetContactFolderMethod() {
        super();
//        LOGGER.debug("finishing GetContactFolderMethod()");
    }

    public GetContactFolderResponse getContactFolder(GetContactFolderRequest request) {
        LOGGER.debug("starting getContactFolder()");
        try {
            GetContactFolderResponse response = MSGraphResponseFactory.createGetContactFolderResponse();
            String baseVersionUrl = super.apiUrl;
            LOGGER.debug("baseVersionUrl is " + baseVersionUrl);
            String endPoint = baseVersionUrl;
            LOGGER.debug("endPoint is " + endPoint);
            if (request.getUserId() != null && request.getContactFolderId() != null) {
                endPoint = endPoint + "users" + CommonConstant.SLASH_STRING + request.getUserId() + CommonConstant.SLASH_STRING + "mailFolders" + CommonConstant.SLASH_STRING + request.getContactFolderId();
            } else {
                endPoint = endPoint + "me" + CommonConstant.SLASH_STRING + "mailFolders" + CommonConstant.SLASH_STRING + request.getContactFolderId();
            }

            LOGGER.debug("endPoint is " + endPoint);
            String accessToken = request.getAccessToken();
            LOGGER.debug("accessToken is " + accessToken);
            Header authorizationHeader = createMSGraphAuthenticationTokenHeader(accessToken);
            LOGGER.debug("created Authorization header");
            Header acceptHeader = createAcceptHeader();
            Header contentTypeHeader = createContentTypeHeader();
            Header[] headers = {acceptHeader, authorizationHeader, contentTypeHeader};
            CommonHttpResponse commonHttpResponse = httpManager.doCommonHttpResponseGet(endPoint, headers, null, null);
            int responseCode = commonHttpResponse.getResponseCode();
            LOGGER.debug("responseCode is " + responseCode);
            response.setResponseCode(responseCode);
            if (responseCode == 200) {
                String responseEntityString = commonHttpResponse.getResponseEntityString();
                LOGGER.debug("responseEntityString is " + responseEntityString);
                Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd' 'HH:mm:ss").create();
                JsonObject responseEntityJsonObject = (JsonObject) ConverterUtils.parseStringToJson(responseEntityString);
                LOGGER.debug("parsed responseEntityString to JsonObject");
                MSGraphContactFolder mailFolder = gson.fromJson(responseEntityJsonObject, MSGraphContactFolder.class);
                LOGGER.debug("got mail folder " + mailFolder.id);
                response.setContactFolder(mailFolder);
            }

            return response;
        } catch (Exception e) {
            LOGGER.warn("exception getting mail folder: " + e.getMessage());
        }

        return null;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy