Class: OpenRosa::Submission
- Inherits:
-
Object
- Object
- OpenRosa::Submission
- Defined in:
- lib/open_rosa/submission.rb
Overview
Represents a parsed OpenRosa form submission
Handles parsing of multipart MIME submissions containing:
- XML submission file (required, named "xml_submission_file")
- Media attachments (optional, images/audio/video)
Per OpenRosa spec:
- POST to /submission with multipart/form-data
- XML part must be named "xml_submission_file"
- Other parts are treated as media attachments
Defined Under Namespace
Classes: Attachment, ParseError
Instance Attribute Summary collapse
-
#attachments ⇒ Object
readonly
rubocop:disable Metrics/ClassLength.
-
#data ⇒ Object
readonly
rubocop:disable Metrics/ClassLength.
-
#form_id ⇒ Object
readonly
rubocop:disable Metrics/ClassLength.
-
#instance_id ⇒ Object
readonly
rubocop:disable Metrics/ClassLength.
-
#metadata ⇒ Object
readonly
rubocop:disable Metrics/ClassLength.
-
#raw_xml ⇒ Object
readonly
rubocop:disable Metrics/ClassLength.
Class Method Summary collapse
-
.parse(rack_request) ⇒ Submission
Parse a Rack request into a Submission object.
Instance Method Summary collapse
-
#initialize(form_id:, instance_id:, data:, raw_xml:, attachments: [], metadata: {}) ⇒ Submission
constructor
rubocop:disable Metrics/ParameterLists.
Constructor Details
#initialize(form_id:, instance_id:, data:, raw_xml:, attachments: [], metadata: {}) ⇒ Submission
rubocop:disable Metrics/ParameterLists
23 24 25 26 27 28 29 30 31 |
# File 'lib/open_rosa/submission.rb', line 23 def initialize(form_id:, instance_id:, data:, raw_xml:, attachments: [], metadata: {}) # rubocop:enable Metrics/ParameterLists @form_id = form_id @instance_id = instance_id @data = data @attachments = @metadata = @raw_xml = raw_xml end |
Instance Attribute Details
#attachments ⇒ Object (readonly)
rubocop:disable Metrics/ClassLength
18 19 20 |
# File 'lib/open_rosa/submission.rb', line 18 def @attachments end |
#data ⇒ Object (readonly)
rubocop:disable Metrics/ClassLength
18 19 20 |
# File 'lib/open_rosa/submission.rb', line 18 def data @data end |
#form_id ⇒ Object (readonly)
rubocop:disable Metrics/ClassLength
18 19 20 |
# File 'lib/open_rosa/submission.rb', line 18 def form_id @form_id end |
#instance_id ⇒ Object (readonly)
rubocop:disable Metrics/ClassLength
18 19 20 |
# File 'lib/open_rosa/submission.rb', line 18 def instance_id @instance_id end |
#metadata ⇒ Object (readonly)
rubocop:disable Metrics/ClassLength
18 19 20 |
# File 'lib/open_rosa/submission.rb', line 18 def @metadata end |
#raw_xml ⇒ Object (readonly)
rubocop:disable Metrics/ClassLength
18 19 20 |
# File 'lib/open_rosa/submission.rb', line 18 def raw_xml @raw_xml end |
Class Method Details
.parse(rack_request) ⇒ Submission
Parse a Rack request into a Submission object
39 40 41 42 43 44 45 |
# File 'lib/open_rosa/submission.rb', line 39 def parse(rack_request) validate_request!(rack_request) raw_xml = extract_raw_xml(rack_request) doc = parse_xml(raw_xml) build_submission(doc, rack_request, raw_xml) end |