-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
401 - Not implemented error handling #302
Comments
Do we know in which systems the |
It resolves #241 as that issue was actually caused by the LMS incorrectly returning a 201 error for that unsupported element via Despite this, the #303 PR is essentially still using the same logic as |
It's not the same logic.
This is how the spec says to check. It has worked until this LMS. It's not an additional call, it's the correct checking call that has been there for a long time. SCORM_1.2_RunTimeEnv (section 3-9)
Yes, you're changing the way support detection is working for all lmss because one isn't implemented correctly.
Have you tested it on lmss that don't support a feature but which do report that they don't support a feature correctly?
For me it's not about the number of calls. It's about unnecessarily removing a system which works to spec, for an untested alternative. There is a risk that by dropping errors on a set and performing a set on an indicated unsupported property, we open ourselves up to other as yet unidentified oddities on a set for a different reason from any of the other lmss (as is Matts concern). As far as I can tell, both systems can be implemented together, and there is no reason to remove the isSupported checks - you're just returning early after the request in a particular circumstance. |
The section quoted above doesn't explicitly say you must use
There would be little point in including a 401 error code as part of the spec for After discussion, the decision has been made to include the commits for the 401 error checking when handling errors, but keep the |
🎉 This issue has been resolved in version 5.9.4 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Currently the SCORM wrapper checks support for non-mandatory elements via an
LMSGetValue
/GetValue
before attempting anLMSSetValue
/SetValue
. For elements with_children
, such ascmi.interactions
andcmi.objectives
, it assumes that if the_count
is supported, all elements of that data model are supported. Whilst this is generally true, there are edge cases where an LMS doesn't support all child elements, causing Adapt to raise an error.For future reference the following occurs for Adobe Learning Manager:
SCORM 1.2
cmi.student_preference.language
is unsupported by the LMS, but incorrectly returns a 201 invalid element error rather than the 401 unsupported error. The error codes are inconsistently implemented with anLMSGetValue
call to this element incorrectly returning 201, but anLMSSetValue
correctly returning 401.cmi.student_preference._children
correctly returns an empty string and a 401 error.cmi.objectives._children
returns “id,score,status” as the supported elements, butscore
andstatus
both return 401 errors when you attempt to use them.SCORM 2004
cmi.learner_preference
andcmi.objectives
have not been implemented, yet are mandatory elements. Both incorrectly return “undefined” and a 201 error when calling_children
.Should we simplify this approach and remove conditional checks completely and instead handle 401 errors silently? This removes the potential for implementation issues such as #294, with the knowledge that a call to any valid unsupported elements will fail gracefully in the same way they are when
isSupported
calls are made. If we wish to maintain conditional checks to reduce the number of 401 handled errors, the recommended approach would be to check which_children
are returned first - see #241.The text was updated successfully, but these errors were encountered: