Skip to content

Commit bca22fd

Browse files
authored
feat: Create repository page should provide to fill all information in single form (#112)
1 parent 5c96431 commit bca22fd

File tree

12 files changed

+269
-145
lines changed

12 files changed

+269
-145
lines changed

pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,8 @@ https://github.com/artipie/front/LICENSE.txt
245245
<excludes combine.children="append">
246246
<exclude>checkstyle:.*/src/test/resources/.*</exclude>
247247
<exclude>pmd:.*/src/test/resources/.*</exclude>
248+
<exclude>checkstyle:.*/src/main/resources/public/.*</exclude>
249+
<exclude>pmd:.*/src/main/resources/public/.*</exclude>
248250
</excludes>
249251
</configuration>
250252
</plugin>

src/main/java/com/artipie/front/Service.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@
44
*/
55
package com.artipie.front;
66

7+
import com.artipie.front.api.RepositoryInfoRest;
8+
import com.artipie.front.api.RepositoryTemplateRest;
79
import com.artipie.front.internal.HealthRoute;
810
import com.artipie.front.rest.AuthService;
911
import com.artipie.front.rest.RepositoryService;
1012
import com.artipie.front.rest.SettingsService;
1113
import com.artipie.front.ui.HbTemplateEngine;
1214
import com.artipie.front.ui.PostSignIn;
1315
import com.artipie.front.ui.SignInPage;
14-
import com.artipie.front.ui.repository.RepoAddConfig;
15-
import com.artipie.front.ui.repository.RepoAddInfo;
16+
import com.artipie.front.ui.repository.RepoCreate;
1617
import com.artipie.front.ui.repository.RepoEdit;
1718
import com.artipie.front.ui.repository.RepoList;
1819
import com.artipie.front.ui.repository.RepoRemove;
@@ -117,7 +118,10 @@ void start(final int port, final String rest) {
117118
}
118119
Logger.info(this, "starting service on port: %d", port);
119120
this.ignite = spark.Service.ignite().port(port);
121+
this.ignite.staticFileLocation("public");
120122
this.ignite.get("/.health", new HealthRoute());
123+
final RepositoryInfo info = new RepositoryInfo();
124+
final RepositoryTemplate template = new RepositoryTemplate();
121125
this.ignite.path(
122126
"/signin",
123127
() -> {
@@ -133,6 +137,13 @@ void start(final int port, final String rest) {
133137
);
134138
}
135139
);
140+
this.ignite.path(
141+
"/api",
142+
() -> {
143+
this.ignite.post("/template", new RepositoryTemplateRest(template));
144+
this.ignite.post("/info", new RepositoryInfoRest(info));
145+
}
146+
);
136147
this.ignite.path(
137148
"/dashboard",
138149
() -> {
@@ -144,8 +155,6 @@ void start(final int port, final String rest) {
144155
}
145156
);
146157
final RepositoryService repository = new RepositoryService(rest);
147-
final RepositoryInfo info = new RepositoryInfo();
148-
final RepositoryTemplate template = new RepositoryTemplate();
149158
final Layout layout = new SettingsService(rest).layout();
150159
this.ignite.path(
151160
"/repository", () -> {
@@ -154,6 +163,7 @@ void start(final int port, final String rest) {
154163
new RepoList(repository, layout),
155164
this.engine
156165
);
166+
this.ignite.get("/create", new RepoCreate(layout), this.engine);
157167
if (layout == Layout.FLAT) {
158168
this.ignite.get(
159169
"/edit/:repo",
@@ -187,12 +197,6 @@ void start(final int port, final String rest) {
187197
this.engine
188198
);
189199
}
190-
this.ignite.get("/add/info", new RepoAddInfo(), this.engine);
191-
this.ignite.get(
192-
"/add/config",
193-
new RepoAddConfig(layout, info, template),
194-
this.engine
195-
);
196200
}
197201
);
198202
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* The MIT License (MIT) Copyright (c) 2022 artipie.com
3+
* https://github.com/artipie/front/LICENSE.txt
4+
*/
5+
package com.artipie.front.api;
6+
7+
import com.artipie.front.ui.repository.RepositoryInfo;
8+
import java.io.StringReader;
9+
import java.util.Map;
10+
import javax.json.Json;
11+
import javax.json.JsonObject;
12+
import org.eclipse.jetty.http.MimeTypes;
13+
import spark.Request;
14+
import spark.Response;
15+
import spark.Route;
16+
17+
/**
18+
* Endpoint to obtain repository info. Accepts GET request with json body
19+
* with fields `name` and `type` and returns json with `content` field.
20+
*
21+
* @since 1.0
22+
*/
23+
public final class RepositoryInfoRest implements Route {
24+
/**
25+
* Repository info.
26+
*/
27+
private final RepositoryInfo info;
28+
29+
/**
30+
* Ctor.
31+
*
32+
* @param info Repository info
33+
*/
34+
public RepositoryInfoRest(final RepositoryInfo info) {
35+
this.info = info;
36+
}
37+
38+
@Override
39+
@SuppressWarnings("PMD.AvoidDuplicateLiterals")
40+
public String handle(final Request req, final Response res) {
41+
final JsonObject json = Json.createReader(new StringReader(req.body())).readObject();
42+
final String type = json.getString("type");
43+
res.type(MimeTypes.Type.APPLICATION_JSON.toString());
44+
return Json.createObjectBuilder().add(
45+
"content", this.info.render(
46+
type,
47+
Map.of(
48+
"user", req.session().attribute("uid"),
49+
"repo", json.getString("name"),
50+
"type", type
51+
)
52+
)
53+
).build().toString();
54+
}
55+
}
56+
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* The MIT License (MIT) Copyright (c) 2022 artipie.com
3+
* https://github.com/artipie/front/LICENSE.txt
4+
*/
5+
package com.artipie.front.api;
6+
7+
import com.artipie.front.ui.repository.RepositoryTemplate;
8+
import java.io.StringReader;
9+
import java.util.Map;
10+
import javax.json.Json;
11+
import javax.json.JsonObject;
12+
import org.eclipse.jetty.http.MimeTypes;
13+
import spark.Request;
14+
import spark.Response;
15+
import spark.Route;
16+
17+
/**
18+
* Endpoint to obtain repository template. Accepts GET request with json body
19+
* with fields `name` and `type` and returns json with `content` field.
20+
*
21+
* @since 1.0
22+
*/
23+
public final class RepositoryTemplateRest implements Route {
24+
/**
25+
* Repository template.
26+
*/
27+
private final RepositoryTemplate template;
28+
29+
/**
30+
* Ctor.
31+
*
32+
* @param template Repository template
33+
*/
34+
public RepositoryTemplateRest(final RepositoryTemplate template) {
35+
this.template = template;
36+
}
37+
38+
@Override
39+
@SuppressWarnings("PMD.AvoidDuplicateLiterals")
40+
public String handle(final Request req, final Response res) {
41+
final JsonObject json = Json.createReader(new StringReader(req.body())).readObject();
42+
final String type = json.getString("type");
43+
res.type(MimeTypes.Type.APPLICATION_JSON.toString());
44+
return Json.createObjectBuilder().add(
45+
"content", this.template.render(
46+
type,
47+
Map.of(
48+
"user", req.session().attribute("uid"),
49+
"repo", json.getString("name"),
50+
"type", type
51+
)
52+
)
53+
).build().toString();
54+
}
55+
}
56+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*
2+
* The MIT License (MIT) Copyright (c) 2022 artipie.com
3+
* https://github.com/artipie/front/LICENSE.txt
4+
*/
5+
6+
/**
7+
* Artipie settings.
8+
* @since 0.1
9+
*/
10+
package com.artipie.front.api;

src/main/java/com/artipie/front/ui/repository/RepoAddConfig.java

Lines changed: 0 additions & 65 deletions
This file was deleted.

src/main/java/com/artipie/front/ui/repository/RepoAddInfo.java renamed to src/main/java/com/artipie/front/ui/repository/RepoCreate.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,30 @@
44
*/
55
package com.artipie.front.ui.repository;
66

7+
import com.artipie.front.Layout;
78
import com.artipie.front.misc.RouteWrap;
89
import com.artipie.front.ui.HbPage;
910
import java.util.Map;
1011

1112
/**
12-
* Add repository info view page.
13+
* Create repository info view page.
1314
*
1415
* @since 1.0
1516
*/
1617
@SuppressWarnings("PMD.AvoidDuplicateLiterals")
17-
public final class RepoAddInfo extends RouteWrap.TemplateViewRoute {
18+
public final class RepoCreate extends RouteWrap.TemplateViewRoute {
1819
/**
1920
* Add repository info page.
21+
* @param layout Repository layout
2022
*/
21-
public RepoAddInfo() {
23+
public RepoCreate(final Layout layout) {
2224
super(
2325
new HbPage(
24-
"repository/add_info",
26+
"repository/create",
2527
req -> Map.of(
26-
"title", "Add repository"
28+
"title", "Create repository",
29+
"uid", req.session().attribute("uid"),
30+
"layout", layout
2731
)
2832
)
2933
);

src/main/resources/html/base

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<link rel="shortcut icon" href="/logo.png"/>
88
<link rel="stylesheet" href="//cdn.jsdelivr.net/gh/yegor256/tacit@gh-pages/tacit-css.min.css"/>
99
<link rel="stylesheet" href="//cdn.jsdelivr.net/gh/yegor256/drops@gh-pages/drops.min.css"/>
10+
<script src="/scripts/jquery-3.6.1.min.js"></script>
1011
</head>
1112
<body>
1213
<header>
@@ -24,7 +25,7 @@
2425
<ul id="navMenu">
2526
<li><a href="/dashboard/repository/list">Repositories</a>
2627
<ul>
27-
<li><a href="/dashboard/repository/add/info">Create</a></li>
28+
<li><a href="/dashboard/repository/create">Create</a></li>
2829
</ul>
2930
</li>
3031
<li>Artipie

src/main/resources/html/repository/add_config

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/main/resources/html/repository/add_info

Lines changed: 0 additions & 41 deletions
This file was deleted.

0 commit comments

Comments
 (0)