Microsoft Graph के लिए GraphClient का उपयोग कैसे करें

Contents
[ ]

GraphClient के साथ काम करना

का एक इंस्टेंस IGraphClient क्लास अनुरोधों का निर्माण, उन्हें Microsoft Graph API को भेजना, और प्रतिक्रियाओं को प्रोसेस करना संभालता है।

ITokenProvider ऑब्जेक्ट बनाएं

का नया इंस्टेंस बनाने के लिए IGraphClient क्लास, आपको इसका एक इंस्टेंस प्रदान करना होगा ITokenProvider, जो Microsoft Graph के लिए अनुरोधों को प्रमाणित कर सकता है।

ITokenProvider tokenProvider = new ITokenProvider() {
    Date expirationDate = null;

    @Override
    public void dispose() {
    }

    @Override
    public OAuthToken getAccessToken(boolean ignoreExistingToken) {
        // Gets oAuth access token.
        // If ignoreExistingToken is true, requests new token from a server. Otherwise behavior is depended on whether token exists or not.
        // If token exists and its expiration date is not expired returns current token, otherwise requests new token from a server.
        return null;
    }

    @Override
    public OAuthToken getAccessToken() {
        // Gets oAuth access token.
        // If token exists and its expiration date is not expired returns current token, otherwise requests new token from a server.
        return new OAuthToken("token", expirationDate);
    }
};

GraphClient ऑब्जेक्ट प्राप्त करें

TokenProvider सेट करने के बाद, आपको एक प्राप्त करना होगा IGraphClient ऑब्जेक्ट सेवा के विरुद्ध अनुरोध करने के लिए। एक बार आपके पास IGraphClient जो प्रमाणित हो, आप सेवा के विरुद्ध कॉल करना शुरू कर सकते हैं।

IGraphClient client = GraphClient.getClient(tokenProvider);

Microsoft Graph का उपयोग करके फ़ोल्डरों के साथ काम करें

फ़ोल्डर सूचीबद्ध करें

GraphFolderInfoCollection folders = client.listFolders();
for (GraphFolderInfo folderInfo : folders) {
    System.out.println(folderInfo.getDisplayName());
    for (KeyValuePair<Long, MapiProperty> prop : folderInfo.getProperties()) {
        System.out.println(prop.getValue().getDescriptor().toString() + " " + prop.getValue().getString());
    }
}

Inbox फ़ोल्डर से सबफ़ोल्डर सूचीबद्ध करें

GraphFolderInfoCollection inboxFolders = client.listFolders(GraphKnownFolders.Inbox);

रूट फ़ोल्डर बनाएं

GraphFolderInfo newFolder = client.createFolder("TEST_FOLDER");

सबफ़ोल्डर बनाएं

GraphFolderInfo inboxTestSubFolder1 = client.createFolder(GraphKnownFolders.Inbox, "TEST_SUBFOLDER_1");
GraphFolderInfo inboxTestSubFolder2 = client.createFolder(newFolder.getItemId(), "TEST_SUBFOLDER_2");

फ़ोल्डर प्राप्त करें

GraphFolderInfo sentItemsFolder = client.getFolder(GraphKnownFolders.SentItems);

फ़ोल्डर अपडेट करें

GraphFolderInfo originalFolder = client.createFolder("TEST_FOLDER");
originalFolder.setDisplayName("NEW_TEST_FOLDER");
GraphFolderInfo updatedFolder = client.updateFolder(originalFolder);

फ़ोल्डर और सामग्री को कॉपी करें

GraphFolderInfo parentFolder = client.createFolder("PARENT_FOLDER");
GraphFolderInfo testFolder = client.createFolder("TEST_FOLDER");
GraphFolderInfo testSubFolder = client.createFolder(testFolder.getItemId(), "TEST_SUBFOLDER");

MapiMessage message = new MapiMessage();
message.setSubject("Test subject");
message.setBody("Test body");
message.setProperty(KnownPropertyList.DISPLAY_TO, "to@host.com");
message.setProperty(KnownPropertyList.SENDER_NAME, "from");
message.setProperty(KnownPropertyList.SENT_REPRESENTING_EMAIL_ADDRESS, "from@host.com");
MapiMessage createdMessage = client.createMessage(testSubFolder.getItemId(), message);

GraphFolderInfo folderCopy = client.copyFolder(parentFolder.getItemId(), testFolder.getItemId());

GraphFolderInfoCollection folderColl = client.listFolders(parentFolder.getItemId());
// TEST_FOLDER
System.out.println(folderColl.get(0).getDisplayName());

folderColl = client.listFolders(folderColl.get(0).getItemId());
// TEST_SUBFOLDER
System.out.println(folderColl.get(0).getDisplayName());

GraphMessageInfoCollection listMessages = client.listMessages(folderColl.get(0).getItemId());
// Test subject
System.out.println(listMessages.get(0).getSubject());

फ़ोल्डर और सामग्री को मूव करें

GraphFolderInfo folder = client.moveFolder(parentFolder.getItemId(), testFolder.getItemId());

फ़ोल्डर हटाएँ

client.delete(testFolder.getItemId());

Microsoft Graph का उपयोग करके संदेश सूचीबद्ध करें

GraphMessageInfoCollection messageInfoColl = client.listMessages(GraphKnownFolders.Inbox);
for (GraphMessageInfo messageInfo : messageInfoColl) {
    MapiMessage message = client.fetchMessage(messageInfo.getItemId());
}

भेजे गए तिथि के अनुसार संदेश सूचीबद्ध करें

यह OrderBy फ़ीचर का उपयोग यह दर्शाने के लिए किया जाता है कि संदेशों को उनके भेजे जाने की तिथि के अनुसार आरोही क्रम में क्रमबद्ध किया जाए। यह क्लाइंट को संदेशों की सूची प्राप्त करने की सुविधा देता है GraphKnownFolders.Inbox फ़ोल्डर को एक विशिष्ट क्रम में, इस मामले में, भेजे जाने की तिथि के आधार पर।

निम्न कोड नमूना दिखाता है कि कैसे संदेशों को भेजे जाने की तिथि के आधार पर क्रमबद्ध करने वाली क्वेरी बनाई जाए, और फिर इस क्वेरी का उपयोग करके Graph API के माध्यम से इनबॉक्स फ़ोल्डर से संदेशों का एक पेज प्राप्त किया जाए:

// create orderby messages query 'ASC'
GraphQueryBuilder builder = new GraphQueryBuilder();
builder.getSentDate().orderBy(true);
MailQuery query = builder.getQuery();

GraphMessagePageInfo pageInfo = client.listMessages(GraphKnownFolders.Inbox, new PageInfo(10), query);

संदेश प्राप्त करें

GraphMessageInfo messageInfo = messageInfoColl.get(0);
MapiMessage fetchedMessage = client.fetchMessage(messageInfo.getItemId());

संदेश सूची में पेजिनेशन

API संदेश सूचीबद्ध करने के लिए पेजिनेशन और फ़िल्टरिंग समर्थन प्रदान करता है। यह तब बहुत उपयोगी होता है जब मेलबॉक्स में बड़ी संख्या में संदेश होते हैं और उनका सारांश जानकारी प्राप्त करने में बहुत समय लगता है। नीचे दिया गया कोड नमूना दिखाएगा कि IGraphClient का उपयोग करके एक्सचेंज सर्वर से संदेश सूचीबद्ध करते समय बड़े संदेश सेट के लिए पेजिनेशन कैसे उपयोग किया जाए:

// send ping test messages
for (int i = 0; i < 5; i++) {
    MailMessage eml = new MailMessage(user.EMail, user.EMail, "ping" + i, "test body");
    client.send(MapiMessage.fromMailMessage(eml));
}
// waiting for inbox
Thread.sleep(10000);

// paging option
int itemsPerPage = 2;
// create unread messages filter
GraphQueryBuilder builder = new GraphQueryBuilder();
builder.isRead().equals(false);
MailQuery query = builder.getQuery();

// list messages
GraphMessagePageInfo pageInfo = client.listMessages(GraphKnownFolders.Inbox, new PageInfo(itemsPerPage), query);
GraphMessageInfoCollection messages = pageInfo.getItems();
while (!pageInfo.getLastPage())
{
    pageInfo = client.listMessages(GraphKnownFolders.Inbox, pageInfo.getNextPage(), query);
    // add next page items to common collection
    messages.addRange(pageInfo.getItems());
}

// set messages state as read
for (GraphMessageInfo message : messages) {
    client.setRead(message.getItemId());
}

संदेश बनाएं

MapiMessage message = new MapiMessage();
message.setSubject("Subject");
message.setBody("Body");
message.setProperty(KnownPropertyList.DISPLAY_TO, "to@host.com");
message.setProperty(KnownPropertyList.SENDER_NAME, "from");
message.setProperty(KnownPropertyList.SENT_REPRESENTING_EMAIL_ADDRESS, "from@host.com");

MapiMessage createdMessage = client.createMessage(GraphKnownFolders.Inbox, message);

संदेश अपडेट करें

fetchedMessage.setSubject("Update message");
MapiMessage updatedMessage = client.updateMessage(fetchedMessage);

संदेश भेजें

client.send(message);

ड्राफ्ट संदेश भेजें

MapiMessage draftMessage = client.createMessage(GraphKnownFolders.Drafts, message);
client.send(draftMessage.getItemId());

संदेश कॉपी करें

MapiMessage copiedMessage = client.copyMessage(GraphKnownFolders.Inbox, draftMessage.getItemId());

संदेश मूव करें

MapiMessage movedMessage = client.moveMessage(GraphKnownFolders.Inbox, draftMessage.getItemId());

संदेश अटैचमेंट्स

MapiAttachmentCollection attachments = client.listAttachments(fetchedMessage.getItemId());
for (MapiAttachment att : attachments) {
    client.deleteAttachment(att.getItemId());
}

संदेश हटाएँ

client.delete(message.getItemId());

केटेगरीज API

String categoryName = "Test Category";
int preset = CategoryPreset.Preset10;
OutlookCategory category = client.createCategory(categoryName, preset);
OutlookCategory fetchedCategory = client.fetchCategory(category.getId());

List<OutlookCategory> categories = client.listCategories();

fetchedCategory.setDisplayName("Update Category");
fetchedCategory.setPreset(CategoryPreset.Preset11);
OutlookCategory updatedCategory = client.updateCategory(fetchedCategory);

client.delete(category.getId());

ओवरराइड्स API

int focusedType = ClassificationType.Focused;
ClassificationOverride override = client.createOrUpdateOverride(new MailAddress("testUser@host.com", "testUser"), focusedType);

List<ClassificationOverride> list = client.listOverrides();
for (ClassificationOverride item : list)
    System.out.println(item.getSender().getAddress());

ClassificationOverride fetchedOverride = list.get(0);
fetchedOverride.setClassifyAs(ClassificationType.Other);
fetchedOverride.getSender().setDisplayName("testUser_1");

ClassificationOverride updatedOverride = client.createOrUpdateOverride(fetchedOverride);

fetchedOverride.setClassifyAs(ClassificationType.Focused);
updatedOverride = client.updateOverride(fetchedOverride);

client.delete(updatedOverride.getId());

रूल्स API

InboxRule rule = new InboxRule();
rule.setDisplayName("Test rule");
rule.setPriority(1);
rule.setEnabled(true);
rule.setConditions(new RulePredicates());
rule.getConditions().containsSenderStrings(new StringCollection());
rule.getConditions().containsSenderStrings().addItem("testUser");
rule.setActions(new RuleActions());
rule.getActions().setForwardToRecipients(new MailAddressCollection());
rule.getActions().getForwardToRecipients().addMailAddress(new MailAddress("testUser@host.com", "testUser", true));
rule.getActions().setStopProcessingRules(true);

InboxRule createdRule = client.createRule(rule);

List<InboxRule> listedRules = client.listRules();
for (InboxRule item : listedRules)
    System.out.println(item.getDisplayName());

InboxRule fetchedRule = client.fetchRule(createdRule.getRuleId());

createdRule.setDisplayName("Test rule 1");
createdRule.setEnabled(false);
InboxRule updatedRule = client.updateRule(createdRule);

client.delete(createdRule.getRuleId());

कई मेलबॉक्स को समर्थन देने के लिए रिसोर्स का उपयोग

сlient.setResource(ResourceType.Users);
сlient.setResourceId("mailbox");
сlient.listMessages("mailfolder")
// back to the current mailbox
сlient.setResource(ResourceType.Me);