Рефакторинг обработчиков. Часть 3 #21
This commit is contained in:
@@ -7,8 +7,8 @@
|
||||
%%% GET / – индексная страница с выбором API
|
||||
%%% GET /admin/ – Swagger UI для административного API
|
||||
%%% GET /admin/swagger.json – OpenAPI-спецификация (admin)
|
||||
%%% GET /client/ – Swagger UI для клиентского API
|
||||
%%% GET /client/swagger.json – OpenAPI-спецификация (client)
|
||||
%%% GET /user/ – Swagger UI для клиентского API
|
||||
%%% GET /user/swagger.json – OpenAPI-спецификация (user)
|
||||
%%% @end
|
||||
%%%-------------------------------------------------------------------
|
||||
-module(swagger_docs_handler).
|
||||
@@ -35,12 +35,12 @@ handle(<<"/admin/">>, Req) ->
|
||||
serve_ui(admin, Req);
|
||||
handle(<<"/admin/swagger.json">>, Req) ->
|
||||
serve_json(admin, Req);
|
||||
handle(<<"/client">>, Req) ->
|
||||
redirect_to_slash(<<"/client/">>, Req);
|
||||
handle(<<"/client/">>, Req) ->
|
||||
serve_ui(client, Req);
|
||||
handle(<<"/client/swagger.json">>, Req) ->
|
||||
serve_json(client, Req);
|
||||
handle(<<"/user">>, Req) ->
|
||||
redirect_to_slash(<<"/user/">>, Req);
|
||||
handle(<<"/user/">>, Req) ->
|
||||
serve_ui(user, Req);
|
||||
handle(<<"/user/swagger.json">>, Req) ->
|
||||
serve_json(user, Req);
|
||||
handle(_, Req) ->
|
||||
cowboy_req:reply(404, #{}, <<"Not Found">>, Req),
|
||||
{ok, [], []}.
|
||||
@@ -58,7 +58,7 @@ serve_index(Req) ->
|
||||
<h1>EventHub API Documentation</h1>
|
||||
<ul>
|
||||
<li><a href=\"/admin/\">Admin API</a></li>
|
||||
<li><a href=\"/client/\">Client API</a></li>
|
||||
<li><a href=\"/user/\">User API</a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>">>,
|
||||
@@ -69,11 +69,11 @@ serve_index(Req) ->
|
||||
%% Swagger UI
|
||||
%%--------------------------------------------------------------------
|
||||
|
||||
-spec serve_ui(admin | client, cowboy_req:req()) -> {ok, cowboy_req:req(), any()}.
|
||||
-spec serve_ui(admin | user, cowboy_req:req()) -> {ok, cowboy_req:req(), any()}.
|
||||
serve_ui(Api, Req) ->
|
||||
{Title, SpecUrl} = case Api of
|
||||
admin -> {<<"EventHub Admin API">>, <<"/admin/swagger.json">>};
|
||||
client -> {<<"EventHub Client API">>, <<"/client/swagger.json">>}
|
||||
user -> {<<"EventHub User API">>, <<"/user/swagger.json">>}
|
||||
end,
|
||||
Html = iolist_to_binary([
|
||||
"<!DOCTYPE html><html><head><title>", Title,
|
||||
@@ -91,18 +91,18 @@ serve_ui(Api, Req) ->
|
||||
%% OpenAPI JSON
|
||||
%%--------------------------------------------------------------------
|
||||
|
||||
-spec serve_json(admin | client, cowboy_req:req()) -> {ok, cowboy_req:req(), any()}.
|
||||
-spec serve_json(admin | user, cowboy_req:req()) -> {ok, cowboy_req:req(), any()}.
|
||||
serve_json(Api, Req) ->
|
||||
Trails = case Api of
|
||||
admin -> trails:admin();
|
||||
client -> trails:client()
|
||||
user -> trails:user()
|
||||
end,
|
||||
OpenApi = #{
|
||||
openapi => <<"3.0.3">>,
|
||||
info => #{
|
||||
title => case Api of
|
||||
admin -> <<"EventHub Admin API">>;
|
||||
client -> <<"EventHub Client API">>
|
||||
user -> <<"EventHub User API">>
|
||||
end,
|
||||
version => <<"1.0.0">>
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user