Metadata-Version: 2.1
Name: exchange-interface
Version: 0.0.2
Summary: An interface to Microsoft Exchange Web Services (EWS). Allows the user to manipulate the outlook calendar events.
Home-page: https://github.com/GrantGMiller/exchange_interface
Author: Grant miller
Author-email: grant@grant-miller.com
License: PSF
Project-URL: Source Code, https://github.com/GrantGMiller/exchange_interface
Keywords: grant miller microsoft office365 ews
Platform: UNKNOWN
Requires-Dist: calendar-base
Requires-Dist: requests

This module allows access to Microsoft Office 365 account calendars.
It allows for personal, delegate, and service accounts.

Install
=======

::

    pip install exchange_interface

Example Script
==============

::

    import requests
    from exchange_interface import EWS
    import datetime

    ews = EWS(
        username='me@email.com',
        password='SuperSecretPassword',
    )
    ews.Connected = lambda _, state: print('EWS', state)
    ews.Disconnected = lambda _, state: print('EWS', state)
    ews.NewCalendarItem = lambda _, item: print('NewCalendarItem(', item)
    ews.CalendarItemChanged = lambda _, item: print('CalendarItemChanged(', item)
    ews.CalendarItemDeleted = lambda _, item: print('CalendarItemDeleted(', item)

    ews.UpdateCalendar()

    print('Events happending now=', ews.GetNowCalItems())

    print('Event(s) happening next=', ews.GetNextCalItems())

    nowDT = datetime.datetime.now()
    nowPlus24hrs = nowDT + datetime.timedelta(days=1)

    print('Events happening in the next 24 hours=', ews.GetEventsInRange(startDT=nowDT, endDT=nowPlus24hrs))

    # You can create a new event like this:
    ews.CreateCalendarEvent(
        subjec='Test Subject',
        body='Test Body',
        startDT=datetime.datetime.now(),
        endDT=datetime.datetime.now() + datetime.timedelta(hours=1),
        )

Service Accounts
================

::

    import requests
    from exchange_interface import EWS

    ews = EWS(
        username='serviceAccount@email.com',
        password='SuperSecretPassword', # the service account password
        impersonation='roomAccount@email.com'
    )

Oauth
==============

::

    import requests
    from exchange_interface import EWS

    def GetAccessToken():
        # do the oauth magic here
        return 'theOauthToken'

    ews = EWS(
        username='serviceAccount@email.com',
        oauthCallback=GetAccessToken, # this will be called before each HTTP request is sent
        impersonation='roomAccount@email.com'
    )



