Client library for Apereo OpenLRW API


Keywords
apereo, openlrw, api, client, learning-analytics, python, utility
License
ECL-2.0
Install
pip install openlrw==1.1.0

Documentation

OpenLRW Python API Client

A Python Client making your scripts for OpenLRW easier

code style pep 8 PyPI version

BETA VERSION

Getting Started

pip install openlrw

Usage

Import the library

Add this import before using the next examples

from openlrw.client import OpenLRW
from openlrw.exceptions import *

Setup the client

openlrw = OpenLRW(uri, username, password) # Create an instance of the client
openlrw.setup_email('localhost', 'script@openlrw.dev', 'your_email@domain.com')  # Optional: Allows you to send emails

Create JSON Web Token

jwt = openlrw.generate_jwt()

Use OneRoster Routes

There are two ways to call OneRoster routes: by using a generic call or use implemented methods

Generic methods

# GET
try: 
  classes = openlrw.http_auth_get('/api/classes', jwt)
except ExpiredTokenException:
  print("Error: JWT Expired)
  
# POST
try: 
  openlrw.http_auth_post('/api/classes', data, jwt)
except ExpiredTokenException:
  print("Error: JWT Expired)
except BadRequestException as e:
  print("Error: " + str(e.message.content))
except InternalServerErrorException as e:
  print("Error: " + str(e.message.content))
  
 

Users

Get a user

try: 
  user = openlrw.get_user(user_id, jwt) # One user
  users = openlrw.get_users(jwt) # All the users
  new_user_res = openlrw.post_user(json, jwt, True) # Creates a user
  patch_user_res = openlrw.patch_user(user_id, json, jwt)
  delete_user_res = openlrw.delete_user(user_id, jwt)
except ExpiredTokenException:
  OpenLRW.pretty_error("Error", "JWT Expired")

Line items

try: 
    line_item = openlrw.get_lineitem("lineItemId", jwt)
    line_items = openlrw.get_lineitems(jwt)
    openlrw.post_lineitem_for_a_class("classId", json, jwt, True)
    openlrw.post_lineitem(json, jwt, True)
except ExpiredTokenException:
  OpenLRW.pretty_error("Error", "JWT Expired")
except InternalServerErrorException as e:
    script_name = str(sys.argv[0])
    openlrw.mail_server(script_name + " error", str(e.message)) # Send an email with the details
    exit()
except BadRequestException:
    OpenLRW.pretty_error("Bad Request", "Lorem ipsum")

Class

try:
    openlrw.post_class(json, jwt, True)
except InternalServerErrorException as e:
    script_name = str(sys.argv[0])
    openlrw.mail_server(script_name + " error", str(e.message)) # Send an email with the details
    exit()
except BadRequestException:
    OpenLRW.pretty_error("Bad Request", "Lorem ipsum")

Result

try: 
    result = openlrw.post_result_for_a_class("classId", json, jwt, True)
except ExpiredTokenException:
  OpenLRW.pretty_error("Error", "JWT Expired")
except InternalServerErrorException as e:
    script_name = str(sys.argv[0])
    openlrw.mail_server(script_name + " error", str(e.message)) # Send an email with the details
    exit()
except BadRequestException:
    OpenLRW.pretty_error("Bad Request", "Lorem ipsum")

Send a Caliper statement

try:
   response_code = openlrw.send_caliper(statement)
except BadRequestException as e:
   print(str(e.message))
   OpenLRW.pretty_error("Bad Request", "An error happened.")
except InternalServerErrorException as e:
   print(str(e.message))
   OpenLRW.pretty_error("Internal Server Error", "An error happened.")
   

OpenLRW.pretty_message("Script finished", "Ask the features you want in the pull requests!")