Skip to content
Snippets Groups Projects
Commit b067a176 authored by Max Lou's avatar Max Lou
Browse files

Fix: adapting xAPI statements faker to latest xapi endpoint

parent 457f0d31
No related branches found
No related tags found
No related merge requests found
......@@ -5,20 +5,6 @@ from datetime import datetime
class XApiFaker:
def __get_xapi_verb(self, base_url, verb_config):
return {
"id": base_url + "verbs/" + verb_config["id"],
"display": {"en-US": verb_config["name"]},
}
def __get_xapi_object(self, base_url, verb_config):
object = random.choice(verb_config["objects"])
return {
"id": base_url + "activity/" + object["id"],
"definition": {"name": {"de-DE": object["name"]}},
"objectType": "Activity",
}
def read_provider_config_file(self):
try:
with open("provider_config.json","r") as f:
......@@ -32,13 +18,16 @@ class XApiFaker:
provider_config = random.choice(providers)
verb_config = random.choice(provider_config["verbs"])
xapi_verb = self.__get_xapi_verb(provider_config["base_url"], verb_config)
xapi_object = self.__get_xapi_object(provider_config["base_url"], verb_config)
xapi_verb = {
"id": verb_config["id"],
}
xapi_object = random.choice(verb_config["objects"])
now = datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")
actor = random.choice(provider_config["actors"])
return {
"token": provider_config["token"],
"provider_name": provider_config["name"],
"statement": {
"actor": {"mbox": f"mailto:{actor}"},
"verb": xapi_verb,
......
......@@ -55,22 +55,22 @@ def transform_statement(statement, overwrite_ts):
return None
def send_x_api_statement(token, statistic, url, statement):
def send_x_api_statement(token, statistic, url, statement, provider_name):
headers = {"Authorization": f"Basic {token}"}
request = requests.post(url, json=statement, headers=headers)
try:
response_dict = request.json()
response = request.json()
if request.ok:
logging.info(
f"Accepted: {statement.get('actor').get('mbox')} {statement.get('verb').get('id')} - {response_dict.get('provider')}"
f"Accepted: {statement.get('actor').get('mbox')} {statement.get('verb').get('id')} - {response.get('provider')}"
)
statistic.add(response_dict.get("provider"), True)
statistic.add(provider_name, True)
else:
logging.warning(
f"Rejected: {statement.get('actor').get('mbox')} {statement.get('verb').get('id')} - {response_dict.get('provider')} - {response_dict.get('message')}"
f"Rejected: {statement.get('actor').get('mbox')} {statement.get('verb').get('id')} - {response.get('provider')} - {response.get('message')}"
)
statistic.add(response_dict.get("provider"), False)
return [request.status_code, response_dict.get("message")]
statistic.add(provider_name, False)
return [request.status_code, response.get("message")]
except json.JSONDecodeError:
logging.error(
f"Failed: {statement.get('actor').get('mbox')} {statement.get('verb').get('id')}"
......@@ -93,7 +93,7 @@ def import_json(args):
valid_statement = transform_statement(statement, overwrite_ts)
if valid_statement:
send_x_api_statement(token, statistic, url, valid_statement)
send_x_api_statement(token, statistic, url, valid_statement, "My provider")
else:
logging.error("Skipped xAPI statement: %s", statement.get("verb"))
......@@ -108,7 +108,7 @@ def start_random_generation(args):
while True:
try:
data = faker.fake_statement()
send_x_api_statement(data["token"], statistic, url, data["statement"])
send_x_api_statement(data["token"], statistic, url, data["statement"], data["provider_name"])
time.sleep(0.2)
except KeyboardInterrupt:
print(statistic)
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment