Кастомные ошибки и их вызов в скрипте#

Blitz Identity Provider позволяет создавать кастомные ошибки и вызывать их в процедурах входа. Выполните следующие действия:

  1. Руководствуясь инструкцией, добавьте кастомное сообщение об ошибке в файл messages в директории /usr/share/identityblitz/blitz-config/custom_messages.

    err.bad_gateway=Недоступно
    
  2. Вызовите данную ошибку при получении HTTP 502.

    if (result.status() == 502) {
                            return HttpLoop.error("bad_gateway",
                                            Collections.<String, String>singletonMap("status", "" + result.status()));
    }
    

    Пример скрипта, вызывающего кастомную ошибку HTTP 502 для метода Flash Call:

    package flashcall;
    
    import com.identityblitz.core.loop.http.HttpLoop;
    import com.identityblitz.core.loop.http.HttpLoopRequest;
    import com.identityblitz.core.loop.http.HttpLoopResult;
    import com.identityblitz.core.loop.JsObj;
    import java.util.Collections;
    
    public class FlashCallFlow implements HttpLoop {
    
            public HttpLoopRequest run(final JsObj obj, final HttpLoopResult result) {
                    if (result == null) {
                            final String number = obj.asString("phone_number");
                            return HttpLoop.callBuilder("POST", "http://test.flashcall.ru/api/v1")
                                            .withHeader("Token", "1234567890")
                                            .withBody(JsObj.empty.addString("id", "test").addString("dst_number", number.substring(number.length() - 10)))
                                            .build(JsObj.empty);
                    } else if (result.status() == 200) {
                            final JsObj body = result.body();
                            return HttpLoop.Ok(JsObj.empty.addString("code", body.asString("SenderID")));
                    } else if (result.status() == 502) {
                            return HttpLoop.error("bad_gateway",
                                            Collections.<String, String>singletonMap("status", "" + result.status()));
                    } else {
                            return HttpLoop.error("wrong_http_status",
                                            Collections.<String, String>singletonMap("status", "" + result.status()));
                    }
            }
    }