1# frozen_string_literal: true
2
3require "blather"
4require "rack"
5
6module FormToH
7 refine Blather::Stanza::X do
8 def to_h
9 params = Rack::Utils.default_query_parser.make_params
10 fields.each do |field|
11 Rack::Utils.default_query_parser.normalize_params(
12 params,
13 field.var,
14 field.value,
15 32
16 )
17 end
18 params.to_h
19 end
20 end
21
22 refine ::Hash do
23 def to_fields
24 map { |k, v| { var: k.to_s, value: v.to_s } }
25 end
26
27 def to_form(type)
28 Blather::Stanza::Iq::X.new(type).tap do |form|
29 form.fields = to_fields
30 end
31 end
32 end
33end