import json
import os
from googleapiclient import discovery
from oauth2client.service_account import ServiceAccountCredentials


def authenticated_directory_service(delegate_user_email):
    """ Returns a service object for accessing the admin directory service.
    """
    json_creds = json.loads(os.environ['GOOGLE_KEYFILE_JSON'])
    credentials = ServiceAccountCredentials.from_json_keyfile_dict(
        json_creds,
        scopes=["https://www.googleapis.com/auth/admin.directory.user.readonly"])
    credentials_delegated = credentials.create_delegated(delegate_user_email)
    service = discovery.build('admin', 'directory_v1', credentials=credentials_delegated)
    return service