예제 #1
0
def _courses():
    params_required = ['moodleid']
    params_requested = dict(request.args)

    is_validated, response_with_error = util.validate_params(params_requested, params_required)
    if not is_validated:
        return response_with_error
    
    moodle_id = request.args.get('moodleid')
    moodle_api_service = moodle_api.COURSE_GET_COURSES
    url = util.get_moodle_url(moodle_id, moodle_api_service)

    if url is None:
        return Response("{'error':'moodle with given id not found'}", status=404, mimetype='application/json')

    resp = requests.get(url)

    course_list = []
    for course in resp.json():
        course_dict = {
            'id' : course['id'],
            'shortname' : course['shortname'],
            'fullname' : course['fullname'],
            'displayname' : course['displayname']
        }
        course_list.append(course_dict)
    return json.dumps(course_list), 200, {'ContentType': 'application/json'}
예제 #2
0
def _course_check_updates():
    params_required = ['moodleid', 'courseid', 'moduleid', 'since']
    params_requested = dict(request.args)

    is_validated, response_with_error = util.validate_params(params_requested, params_required)
    if not is_validated:
        return response_with_error

    moodle_id = request.args.get('moodleid')
    args_for_api_service = ''
    course_id = request.args.get('courseid')
    args_for_api_service += '&courseid=' + course_id
    module_id = request.args.get('moduleid')
    args_for_api_service += '&tocheck[0][id]=' + module_id
    since = request.args.get('since')
    args_for_api_service += '&tocheck[0][since]=' + since
    args_for_api_service += '&tocheck[0][contextlevel]=module'
    moodle_api_service = moodle_api.COURSE_CHECK_UPDATES
    url = util.get_moodle_url(moodle_id, moodle_api_service, args_for_api_service)

    if url is None:
        return Response("{'error':'moodle with given id not found'}", status=404, mimetype='application/json')

    result = requests.get(url).json()

    if type(result) is dict and result.get('exception') is not None:
        return Response("{'error':" + result.get('message') + "}", status=404, mimetype='application/json')

    return json.dumps(result), 200, {'ContentType': 'application/json'}
예제 #3
0
def _events():
    params_required = ['moodleid']
    params_requested = dict(request.args)

    is_validated, response_with_error = util.validate_params(params_requested, params_required)
    if not is_validated:
        return response_with_error

    moodle_id = request.args.get('moodleid')
    args_for_api_service = ''
    moodle_api_service = moodle_api.CALENDAR_GET_CALENDAR_EVENTS

    url = util.get_moodle_url(moodle_id, moodle_api_service, args_for_api_service)

    if url is None:
        return Response("{'error':'moodle with given id not found'}", status=404, mimetype='application/json')

    result = requests.get(url).json()
    return json.dumps(result) , 200, {'ContentType': 'application/json'}
예제 #4
0
def _course_contents():
    params_required = ['moodleid', 'courseid']
    params_requested = dict(request.args)

    is_validated, response_with_error = util.validate_params(params_requested, params_required)
    if not is_validated:
        return response_with_error

    moodle_id = request.args.get('moodleid')
    course_id = request.args.get('courseid')
    args_for_api_service = '&courseid=' + course_id
    moodle_api_service = moodle_api.COURSE_GET_CONTENTS
    url = util.get_moodle_url(moodle_id, moodle_api_service, args_for_api_service)

    if url is None:
        return Response("{'error':'moodle with given id not found'}", status=404, mimetype='application/json')

    result = requests.get(url).json()

    if type(result) is dict and result.get('exception') is not None:
        return Response("{'error':" + result.get('message') + "}", status=404, mimetype='application/json')

    return json.dumps(result), 200, {'ContentType': 'application/json'}
예제 #5
0
def _file():
    params_required = ['moodleid', 'courseid', 'sectionid', 'filename']
    params_requested = dict(request.args)

    is_validated, response_with_error = util.validate_params(params_requested, params_required)
    if not is_validated:
        return response_with_error

    moodle_id = request.args.get('moodleid')
    course_id = request.args.get('courseid')
    args_for_api_service = '&courseid=' + course_id
    moodle_api_service = moodle_api.COURSE_GET_CONTENTS

    url = util.get_moodle_url(moodle_id, moodle_api_service, args_for_api_service)
    if url is None:
        return Response("{'error':'moodle with given id not found'}", status=404, mimetype='application/json')

    result = json.loads(requests.get(url).text)

    moodle = util.get_moodle_by_id(moodle_id)
    section_id = request.args.get('sectionid')
    module_id = request.args.get('moduleid')
    file_name = request.args.get('filename')

    for section in result:
        if section['id'] == int(section_id):
            for module in section['modules']:
                if module['id'] == int(module_id):
                    for content in module['contents']:
                        if content['filename'] == file_name:
                            file_url = content['fileurl']
                            if content['type'] != 'url':
                                file_url += '&token=' + moodle.get('token')
                            response = requests.get(file_url)
                            return Response(response, status=200, content_type=response.headers._store['content-type'][1])
    print('file not found')
    return Response("{'error':'file not found'}", status=404, mimetype='application/json')