# -*- coding: utf-8 -*-
# Licensed to Anthony Shaw (anthonyshaw@apache.org) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
import requests
from pluralsight.exceptions import PluralsightApiException
from .invites import InvitesClient
from .users import UsersClient
from .teams import TeamsClient
BASE_URL = "https://app.pluralsight.com/plans/api/license/v1/{0}"
[docs]class LicensingAPIClient(object):
"""
The licensing API client
"""
def __init__(self, plan, api_key):
"""
Instantiate a new reports API client
:param plan: The plan name
:type plan: ``str``
:param api_key: The API token (from the pluralsight team)
:type api_key: ``str``
"""
self._plan = plan
self._api_key = api_key
self.base_url = BASE_URL.format(plan)
self.session = requests.Session()
self.session.headers.update(
{"Accept": "application/json", "Authorization": "Token {0}".format(api_key)}
)
self.invites = InvitesClient(self)
self.users = UsersClient(self)
self.teams = TeamsClient(self)
[docs] def get(self, uri, params=None):
try:
result = self.session.get(
"{0}/{1}".format(self.base_url, uri), params=params
)
result.raise_for_status()
return result.json()
except requests.HTTPError as e:
raise PluralsightApiException(e.response.text, uri)
[docs] def post(self, uri, data=None):
try:
result = self.session.post("{0}/{1}".format(self.base_url, uri), json=data)
result.raise_for_status()
return result.json()
except requests.HTTPError as e:
raise PluralsightApiException(e.response.text)
[docs] def put(self, uri, data=None):
try:
result = self.session.put("{0}/{1}".format(self.base_url, uri), json=data)
result.raise_for_status()
except requests.HTTPError as e:
raise PluralsightApiException(e.response.text)
[docs] def delete(self, uri):
try:
result = self.session.delete("{0}/{1}".format(self.base_url, uri))
result.raise_for_status()
except requests.HTTPError as e:
raise PluralsightApiException(e.response.text)