# The Okta software accompanied by this notice is provided pursuant to the following terms:
# Copyright © 2025-Present, Okta, Inc.
# 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.
# coding: utf-8

"""
    Okta Admin Management

    Allows customers to easily access the Okta Management APIs

    The version of the OpenAPI document: 5.1.0
    Contact: devex-public@okta.com
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501

import os
from pathlib import Path

from yaml import load

from okta.configuration import Configuration

try:
    from yaml import CLoader as Loader
except ImportError:
    from yaml import Loader


class OktaConfiguration():
    """
    Configuraiton Provider
    """

    def get_configuration(self) -> Configuration:
        return self.read_configuration(os.path.expanduser('~/.okta/okta.yaml'))

    def read_configuration(self, file_path) -> Configuration:
        if Path(file_path).is_file():
            text = open(file_path).read()
            okta_config = load(text, Loader=Loader)
            config = Configuration()
            config.host = okta_config['oktaDomain']
            config.api_key['apiToken'] = okta_config['apiKey']
            config.api_key_prefix['apiToken'] = okta_config['apiKeyPrefix']
            config.verify_ssl = okta_config['verifySsl']
            return config

        return Configuration.get_default()
