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

com.xcase.msgraph.MSGraphApplication Maven / Gradle / Ivy

/**
 * Copyright 2017 Xcase All rights reserved.
 */
package com.xcase.msgraph;

import com.xcase.msgraph.transputs.*;
import com.xcase.msgraph.objects.*;
import com.xcase.msgraph.constant.MSGraphConstant;
import com.xcase.msgraph.factories.MSGraphRequestFactory;
import com.xcase.msgraph.impl.simple.core.MSGraphConfigurationManager;
import java.lang.invoke.*;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.logging.log4j.*;

/**
 *
 * @author martin
 */
public class MSGraphApplication {

    /**
     * log4j object.
     */
    protected static final Logger LOGGER = LogManager.getLogger(MethodHandles.lookup().lookupClass());

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        LOGGER.debug("starting main()");
        /**
         * Client information from local configuration file
         */
        String clientId = MSGraphConfigurationManager.getConfigurationManager().getLocalConfig().getProperty(MSGraphConstant.LOCAL_OAUTH2_CLIENT_ID);
        LOGGER.debug("clientId is " + clientId);
        String clientSecret = MSGraphConfigurationManager.getConfigurationManager().getLocalConfig().getProperty(MSGraphConstant.LOCAL_OAUTH2_CLIENT_SECRET);
        LOGGER.debug("clientSecret is " + clientSecret);
        String tenantId = MSGraphConfigurationManager.getConfigurationManager().getLocalConfig().getProperty(MSGraphConstant.LOCAL_OAUTH2_TENANT_ID);
        LOGGER.debug("tenantId is " + tenantId);
        String username = MSGraphConfigurationManager.getConfigurationManager().getLocalConfig().getProperty(MSGraphConstant.LOCAL_OAUTH2_USERNAME);
        LOGGER.debug("username is " + username);
        String password = MSGraphConfigurationManager.getConfigurationManager().getLocalConfig().getProperty(MSGraphConstant.LOCAL_OAUTH2_PASSWORD);
        LOGGER.debug("password is " + password);
        MSGraphExternalAPI msGraphExternalAPI = new SimpleMSGraphImpl();
        LOGGER.debug("created msGraphExternalAPI");
        try {
            LOGGER.debug("about to get authorization code");
            GetAuthorizationCodeRequest getAuthorizationCodeRequest = MSGraphRequestFactory.createGetAuthorizationCodeRequest(clientId, tenantId, username, password);
            LOGGER.debug("created getAuthorizationCodeRequest");
            GetAuthorizationCodeResponse getAuthorizationCodeResponse = msGraphExternalAPI.getAuthorizationCode(getAuthorizationCodeRequest);
            LOGGER.debug("got authorization code " + getAuthorizationCodeResponse.getAuthorizationCode());
            LOGGER.debug("about to get access token");
            GetAccessTokenRequest getAccessTokenRequest = MSGraphRequestFactory.createGetAccessTokenRequest(clientId, clientSecret, tenantId);
            LOGGER.debug("created getAccessTokenRequest");
            GetAccessTokenResponse getAccessTokenResponse = msGraphExternalAPI.getAccessToken(getAccessTokenRequest);
            String accessToken = getAccessTokenResponse.getAccessToken();
            LOGGER.debug("got access token " + accessToken);
            GetMyProfileRequest getMyProfileRequest = MSGraphRequestFactory.createGetMyProfileRequest(accessToken);
            LOGGER.debug("created getMyProfileRequest");
            GetMyProfileResponse getMyProfileResponse = msGraphExternalAPI.getMyProfile(getMyProfileRequest);
            LOGGER.debug("got my profile");
            LOGGER.debug("about to get groups");
            String search = null;
            String select = "id,displayName";
            Integer top = 10;
            Integer skip = null;
            GetGroupsRequest getGroupsRequest = MSGraphRequestFactory.createGetGroupsRequest(accessToken, search, select, top, skip);
            LOGGER.debug("created getGroupsRequest");
            GetGroupsResponse getGroupsResponse = msGraphExternalAPI.getGroups(getGroupsRequest);
            LOGGER.debug("got groups");
            String groupId = null;
            MSGraphGroup updateGroup = null;
            MSGraphGroup[] groups = getGroupsResponse.getGroups();
            for(MSGraphGroup group : groups) {
                groupId = group.id;
                GetGroupRequest getGroupRequest = MSGraphRequestFactory.createGetGroupRequest(accessToken, groupId);
                LOGGER.debug("created getGroupRequest");
                GetGroupResponse getGroupResponse = msGraphExternalAPI.getGroup(getGroupRequest);
                updateGroup = getGroupResponse.getGroup();
                LOGGER.debug("got group " + updateGroup.displayName + ":" + updateGroup.description);
            }

            LOGGER.debug("about to update group");
            updateGroup.description = "Updated description";
            UpdateGroupRequest updateGroupRequest = MSGraphRequestFactory.createUpdateGroupRequest(accessToken, groupId, updateGroup);
            LOGGER.debug("created updateGroupRequest");
            UpdateGroupResponse updateGroupResponse = msGraphExternalAPI.updateGroup(updateGroupRequest);
            LOGGER.debug("updated group");
            GetGroupRequest getGroupRequest = MSGraphRequestFactory.createGetGroupRequest(accessToken, groupId);
            LOGGER.debug("created getGroupRequest");
            GetGroupResponse getGroupResponse = msGraphExternalAPI.getGroup(getGroupRequest);
            MSGraphGroup updatedGroup = getGroupResponse.getGroup();
            LOGGER.debug("got group " + updatedGroup.displayName + ":" + updatedGroup.description);
            LOGGER.debug("about to get users");
            search = null;
            select = "id,displayName";
            top = null;
            skip = null;
            GetUsersRequest getUsersRequest = MSGraphRequestFactory.createGetUsersRequest(accessToken, search, select, top, skip);
            LOGGER.debug("created getUsersRequest");
            GetUsersResponse getUsersResponse = msGraphExternalAPI.getUsers(getUsersRequest);
            LOGGER.debug("got users");
            String userId = null;
            String testUserid = null;
            MSGraphUser[] users = getUsersResponse.getUsers();
            for(MSGraphUser user : users) {
                userId = user.id;
                LOGGER.debug("userId is " + userId);
                GetUserRequest getUserRequest = MSGraphRequestFactory.createGetUserRequest(accessToken, userId);
                LOGGER.debug("created getUserRequest");
                GetUserResponse getUserResponse = msGraphExternalAPI.getUser(getUserRequest);
                LOGGER.debug("got user " + getUserResponse.getUser().displayName);
                if (getUserResponse.getUser().displayName.equals("Martin Gilchrist")) {
                    testUserid = userId;
                    LOGGER.debug("testUserid is " + testUserid);
                }
            }

            AddGroupMemberRequest addGroupMemberRequest = MSGraphRequestFactory.createAddGroupMemberRequest(accessToken, groupId, testUserid);
            LOGGER.debug("created addGroupMemberRequest");
            AddGroupMemberResponse AddGroupMemberResponse = msGraphExternalAPI.addGroupMember(addGroupMemberRequest);
            LOGGER.debug("added group member");
            RemoveGroupMemberRequest removeGroupMemberRequest = MSGraphRequestFactory.createRemoveGroupMemberRequest(accessToken, groupId, testUserid);
            LOGGER.debug("created removeGroupMemberRequest");
            RemoveGroupMemberResponse removeGroupMemberResponse = msGraphExternalAPI.removeGroupMember(removeGroupMemberRequest);
            LOGGER.debug("removed group member");
            LOGGER.debug("about to get calendars");
            search = null;
            select = "id,displayName";
            top = 10;
            skip = null;
            GetCalendarsRequest getCalendarsRequest = MSGraphRequestFactory.createGetCalendarsRequest(accessToken, testUserid);
            LOGGER.debug("created getCalendarsRequest");
            GetCalendarsResponse getCalendarsResponse = msGraphExternalAPI.getCalendars(getCalendarsRequest);
            LOGGER.debug("got calendars");
            String calendarId = null;
            MSGraphCalendar[] calendars = getCalendarsResponse.getCalendars();
            for(MSGraphCalendar calendar : calendars) {
                calendarId = calendar.id;
                LOGGER.debug("calendarId is " + calendarId);
                GetCalendarRequest getCalendarRequest = MSGraphRequestFactory.createGetCalendarRequest(accessToken, calendarId, testUserid);
                LOGGER.debug("created getCalendarRequest");
                GetCalendarResponse getCalendarResponse = msGraphExternalAPI.getCalendar(getCalendarRequest);
                LOGGER.debug("got calendar " + getCalendarResponse.getCalendar().id);
            }

            GetContactFoldersRequest getContactFoldersRequest = MSGraphRequestFactory.createGetContactFoldersRequest(accessToken, testUserid);
            LOGGER.debug("created getContactFoldersRequest");
            GetContactFoldersResponse getContactFoldersResponse = msGraphExternalAPI.getContactFolders(getContactFoldersRequest);
            LOGGER.debug("got contact folders");
            String contactFolderId = null;
            MSGraphContactFolder[] contactFolders = getContactFoldersResponse.getContactFolders();
            for(MSGraphContactFolder contactFolder : contactFolders) {
                contactFolderId = contactFolder.id;
                LOGGER.debug("contactFolderId is " + contactFolderId);
                GetContactFolderRequest getContactFolderRequest = MSGraphRequestFactory.createGetContactFolderRequest(accessToken, contactFolderId, testUserid);
                LOGGER.debug("created getContactFolderRequest");
                GetContactFolderResponse getContactFolderResponse = msGraphExternalAPI.getContactFolder(getContactFolderRequest);
                LOGGER.debug("got contact folder " + getContactFolderResponse.getContactFolder().id);
            }

            search = null;
            select = "id,displayName";
            top = 10;
            skip = null;
            GetMailFoldersRequest getMailFoldersRequest = MSGraphRequestFactory.createGetMailFoldersRequest(accessToken, testUserid);
            LOGGER.debug("created getMailFoldersRequest");
            GetMailFoldersResponse getMailFoldersResponse = msGraphExternalAPI.getMailFolders(getMailFoldersRequest);
            LOGGER.debug("got mail folders");
            String mailFolderId = null;
            MSGraphMailFolder[] mailFolders = getMailFoldersResponse.getMailFolders();
            for(MSGraphMailFolder mailFolder : mailFolders) {
                mailFolderId = mailFolder.id;
                LOGGER.debug("mailFolderId is " + mailFolderId);
                GetMailFolderRequest getMailFolderRequest = MSGraphRequestFactory.createGetMailFolderRequest(accessToken, mailFolderId, testUserid);
                LOGGER.debug("created getMailFolderRequest");
                GetMailFolderResponse getMailFolderResponse = msGraphExternalAPI.getMailFolder(getMailFolderRequest);
                LOGGER.debug("got mail folder " + getMailFolderResponse.getMailFolder().id);
            }

            LOGGER.debug("about to get drive for user");
            GetDriveRequest getDriveRequest = MSGraphRequestFactory.createGetDriveRequest(accessToken, testUserid);
            LOGGER.debug("created getDriveRequest");
            GetDriveResponse getDriveResponse = msGraphExternalAPI.getDrive(getDriveRequest);
            LOGGER.debug("got drive");
            LOGGER.debug("about to invoke advanced method");
            String method = "GET";
            LOGGER.debug("method is " + method);
            String advancedUrl = "groups/asdfsadfsadf";
            LOGGER.debug("advancedUrl is " + advancedUrl);
            List parameters = new ArrayList();
            String memberBody = null;
            LOGGER.debug("memberBody is " + memberBody);
            InvokeAdvancedRequest invokeAdvancedRequest = MSGraphRequestFactory.createInvokeAdvancedRequest(accessToken, advancedUrl, memberBody, method, parameters);
            LOGGER.debug("created invokeAdvancedRequest");
            InvokeAdvancedResponse invokeAdvancedResponse = msGraphExternalAPI.invokeAdvanced(invokeAdvancedRequest);
            LOGGER.debug("invoked advanced method");
        } catch (Exception e) {
            LOGGER.warn("exception executing methods: " + e.getMessage());
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy