]> granicus.if.org Git - ejabberd/commitdiff
Format list of {{name,string}, {value, _}} as json struct name/val
authorPaweł Chmielowski <pchmielowski@process-one.net>
Mon, 3 Dec 2018 12:52:53 +0000 (13:52 +0100)
committerPaweł Chmielowski <pchmielowski@process-one.net>
Mon, 3 Dec 2018 12:53:07 +0000 (13:53 +0100)
src/mod_http_api.erl

index e3c7b3bc73114fa98ec0a4185228dd8dfbaafd43..3fb0d5981bc29581e652c978b19f91c3c5fb047f 100644 (file)
@@ -476,6 +476,9 @@ format_result(Code, {Name, restuple}) ->
 format_result(Els, {Name, {list, {_, {tuple, [{_, atom}, _]}} = Fmt}}) ->
     {misc:atom_to_binary(Name), {[format_result(El, Fmt) || El <- Els]}};
 
+format_result(Els, {Name, {list, {_, {tuple, [{name, string}, {value, _}]}} = Fmt}}) ->
+    {misc:atom_to_binary(Name), {[format_result(El, Fmt) || El <- Els]}};
+
 format_result(Els, {Name, {list, Def}}) ->
     {misc:atom_to_binary(Name), [element(2, format_result(El, Def)) || El <- Els]};
 
@@ -484,6 +487,11 @@ format_result(Tuple, {_Name, {tuple, [{_, atom}, ValFmt]}}) ->
     {_, Val2} = format_result(Val, ValFmt),
     {misc:atom_to_binary(Name2), Val2};
 
+format_result(Tuple, {_Name, {tuple, [{name, string}, {value, _} = ValFmt]}}) ->
+    {Name2, Val} = Tuple,
+    {_, Val2} = format_result(Val, ValFmt),
+    {iolist_to_binary(Name2), Val2};
+
 format_result(Tuple, {Name, {tuple, Def}}) ->
     Els = lists:zip(tuple_to_list(Tuple), Def),
     {misc:atom_to_binary(Name), {[format_result(El, ElDef) || {El, ElDef} <- Els]}};