Erlang大小写表达式未返回值



下面是我用来解密一些以前加密过的XML的代码片段。如果它没有加密(纯文本),那么我不需要解密和处理它,我想按原样返回它

它根本没有归还任何东西。请帮我把它做好。

更新代码:

pop_offline_messages(Ls, LUser, LServer, odbc) ->
    EUser = ejabberd_odbc:escape(LUser),
    case odbc_queries:get_and_del_spool_msg_t(LServer,
                          EUser)
    of
      {atomic, {selected, [<<"username">>, <<"xml">>], Rs}} ->
      Ls ++
        lists:flatmap(fun ([_, XML]) ->
        ?INFO_MSG("decrypted message from mod_offline ~p ",[XML]),
       Top = case str:str(XML, <<"message">>) of
       Top >= 1 -> XML;
       Top == 0 -> crypto:aes_cfb_128_decrypt(<<"abcdefghabcdefgh">>,<<"12345678abcdefgh">>,base64:decode(XML))
    end,  
           case xml_stream:parse_element(XML) of
                    {error, _Reason} ->
                                          [];
                    El ->
                                          case offline_msg_to_route(LServer, El) of
                                              error ->
                                                  [];
                                              RouteMsg ->
                                                  [RouteMsg]
                                          end
                  end
              end,
              Rs);
      _ -> Ls
    end;

如果它"不返回任何内容",要么是因为您没有执行它,要么是由于您没有存储结果。我建议您将代码更改为:

Result = case str:str(XML, <<"message">>) of
      1 -> XML;
      _ -> crypto:aes_cfb_128_decrypt(<<"abcdefghabcdefgh">>,<<"12345678abcdefgh">>,base64:decode(XML))
    end,
io:format("~p~n",[result]),
...

因为在当前的snippet版本中,没有使用案例的结果,所以一旦评估就丢失了。

最新更新