5d628e023d33e47b92542ff9c4273614864c7d33
[fanfix.git] / src / be / nikiroo / fanfix / library / WebLibraryUrls.java
1 package be.nikiroo.fanfix.library;
2
3 import java.io.UnsupportedEncodingException;
4 import java.net.URLEncoder;
5
6 class WebLibraryUrls {
7 static public final String INDEX_URL = "/";
8
9 static public final String VERSION_URL = "/version";
10
11 static public final String LOGOUT_URL = "/logout";
12
13 static public final String EXIT_URL = "/exit";
14
15 static private final String VIEWER_URL_BASE = "/view/story/";
16 static private final String VIEWER_URL = VIEWER_URL_BASE
17 + "{luid}/{chap}/{para}";
18
19 static private final String STORY_URL_BASE = "/story/";
20 static private final String STORY_URL = STORY_URL_BASE
21 + "{luid}/{chap}/{para}";
22 static private final String STORY_URL_COVER = STORY_URL_BASE
23 + "{luid}/cover";
24 static private final String STORY_URL_JSON = STORY_URL_BASE + "{luid}/json";
25 static private final String STORY_URL_METADATA = STORY_URL_BASE
26 + "{luid}/metadata";
27
28 // GET/SET ("value" param -> set STA to this value)
29 static private final String STORY_URL_SOURCE = STORY_URL_BASE
30 + "{luid}/source";
31 static private final String STORY_URL_TITLE = STORY_URL_BASE
32 + "{luid}/title";
33 static private final String STORY_URL_AUTHOR = STORY_URL_BASE
34 + "{luid}/author";
35
36 static private final String LIST_URL_BASE = "/list/";
37
38 static public final String LIST_URL_METADATA = LIST_URL_BASE + "metadata";
39
40 // "import" requires param "url" and return an luid, "/{luid}" return
41 // progress status as a JSON Progress or 404 if none (done or failed)
42 static private final String IMPRT_URL_BASE = "/import/";
43 static private final String IMPRT_URL_PROGRESS = IMPRT_URL_BASE + "{luid}";
44 static public final String IMPRT_URL_IMPORT = IMPRT_URL_BASE + "import";
45
46 static private final String DELETE_URL_BASE = "/delete/";
47 static private final String DELETE_URL_STORY = DELETE_URL_BASE + "{luid}";
48
49 // GET/SET ("luid" param -> set cover to the cover of this story -- not ok
50 // for /cover/story/)
51 static private final String COVER_URL_BASE = "/cover/";
52 static private final String COVER_URL_STORY = COVER_URL_BASE
53 + "story/{luid}";
54 static private final String COVER_URL_AUTHOR = COVER_URL_BASE
55 + "author/{author}";
56 static private final String COVER_URL_SOURCE = COVER_URL_BASE
57 + "source/{source}";
58
59 static public String getViewUrl(String luid, Integer chap, Integer para) {
60 return VIEWER_URL //
61 .replace("{luid}", luid) //
62 .replace("/{chap}", chap == null ? "" : "/" + chap) //
63 .replace("/{para}",
64 (chap == null || para == null) ? "" : "/" + para);
65 }
66
67 static public String getStoryUrl(String luid, int chap, Integer para) {
68 return STORY_URL //
69 .replace("{luid}", luid) //
70 .replace("{chap}", Integer.toString(chap)) //
71 .replace("{para}", para == null ? "" : Integer.toString(para));
72 }
73
74 static public String getStoryUrlCover(String luid) {
75 return STORY_URL_COVER //
76 .replace("{luid}", luid);
77 }
78
79 static public String getStoryUrlJson(String luid) {
80 return STORY_URL_JSON //
81 .replace("{luid}", luid);
82 }
83
84 static public String getStoryUrlSource(String luid) {
85 return STORY_URL_SOURCE //
86 .replace("{luid}", luid);
87 }
88
89 static public String getStoryUrlTitle(String luid) {
90 return STORY_URL_TITLE//
91 .replace("{luid}", luid);
92 }
93
94 static public String getStoryUrlAuthor(String luid) {
95 return STORY_URL_AUTHOR //
96 .replace("{luid}", luid);
97 }
98
99 static public String getStoryUrlMetadata(String luid) {
100 return STORY_URL_METADATA //
101 .replace("{luid}", luid);
102 }
103
104 static public String getImprtProgressUrl(String luid) {
105 return IMPRT_URL_PROGRESS //
106 .replace("{luid}", luid);
107 }
108
109 static public boolean isSupportedUrl(String url,
110 boolean requiresLoginOnly) {
111 if (requiresLoginOnly) {
112 return INDEX_URL.equals(url) || LOGOUT_URL.equals(url)
113 || EXIT_URL.equals(url) || isViewUrl(url) || isStoryUrl(url)
114 || isListUrl(url) || isCoverUrl(url) || isImprtUrl(url)
115 || isDeleteUrl(url);
116 }
117
118 return isSupportedUrl(url, true) || VERSION_URL.equals(url);
119 }
120
121 static public String getCoverUrlStory(String luid) {
122 return COVER_URL_STORY //
123 .replace("{luid}", luid);
124 }
125
126 static public String getCoverUrlSource(String source) {
127 return COVER_URL_SOURCE //
128 .replace("{source}", url(source));
129 }
130
131 static public String getCoverUrlAuthor(String author) {
132 return COVER_URL_AUTHOR //
133 .replace("{author}", url(author));
134 }
135
136 static public String getDeleteUrlStory(String luid) {
137 return DELETE_URL_STORY //
138 .replace("{luid}", luid);
139 }
140
141 static public boolean isViewUrl(String url) {
142 return url != null && url.startsWith(VIEWER_URL_BASE);
143 }
144
145 static public boolean isStoryUrl(String url) {
146 return url != null && url.startsWith(STORY_URL_BASE);
147 }
148
149 static public boolean isListUrl(String url) {
150 return url != null && url.startsWith(LIST_URL_BASE);
151 }
152
153 static public boolean isCoverUrl(String url) {
154 return url != null && url.startsWith(COVER_URL_BASE);
155 }
156
157 static public boolean isImprtUrl(String url) {
158 return url != null && url.startsWith(IMPRT_URL_BASE);
159 }
160
161 static public boolean isDeleteUrl(String url) {
162 return url != null && url.startsWith(DELETE_URL_BASE);
163 }
164
165 static private String url(String value) {
166 try {
167 return URLEncoder.encode(value, "UTF-8");
168 } catch (UnsupportedEncodingException e) {
169 // UTF-8 is always supported
170 e.printStackTrace();
171 return value;
172 }
173 }
174 }