# -*- coding: utf-8 -*-

# Copyright 2014 OpenMarket Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


def threePidAssocFromDict(d):
    """
    Instantiates a ThreepidAssociation from the given dict.

    :param d: The dict to use when instantiating the ThreepidAssociation.
    :type d: dict[str, any]

    :return: The instantiated ThreepidAssociation.
    :rtype: ThreepidAssociation
    """
    assoc = ThreepidAssociation(
        d['medium'],
        d['address'],
        None, # empty lookup_hash digest by default
        d['mxid'],
        d['ts'],
        d['not_before'],
        d['not_after'],
    )
    return assoc


class ThreepidAssociation:
    def __init__(self, medium, address, lookup_hash, mxid, ts, not_before, not_after):
        """
        :param medium: The medium of the 3pid (eg. email)
        :param address: The identifier (eg. email address)
        :param lookup_hash: A hash digest of the 3pid. Can be a str or None
        :param mxid: The matrix ID the 3pid is associated with
        :param ts: The creation timestamp of this association, ms
        :param not_before: The timestamp, in ms, at which this association becomes valid
        :param not_after: The timestamp, in ms, at which this association ceases to be valid
        """
        self.medium = medium
        self.address = address
        self.lookup_hash = lookup_hash
        self.mxid = mxid
        self.ts = ts
        self.not_before = not_before
        self.not_after = not_after
        self.extra_fields = {}
