Source code for pluralsight.licensing.client

# -*- 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)