mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
documentation is now generated during build time and swagger is not needed for runtime anymore
This commit is contained in:
@@ -31,7 +31,7 @@ import com.commafeed.backend.services.ApplicationSettingsService;
|
||||
import com.commafeed.backend.services.MailService;
|
||||
import com.commafeed.frontend.CommaFeedSession;
|
||||
import com.commafeed.frontend.utils.WicketUtils;
|
||||
import com.google.api.client.util.Maps;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public abstract class BasePage extends WebPage {
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
package com.commafeed.frontend.pages;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.apache.wicket.RestartResponseException;
|
||||
import org.apache.wicket.markup.html.WebPage;
|
||||
import org.apache.wicket.request.mapper.parameter.PageParameters;
|
||||
|
||||
import com.commafeed.backend.StartupBean;
|
||||
import com.commafeed.backend.dao.UserDAO;
|
||||
import com.commafeed.backend.feeds.FeedUtils;
|
||||
import com.commafeed.backend.feeds.OPMLImporter;
|
||||
import com.commafeed.backend.model.ApplicationSettings;
|
||||
import com.commafeed.backend.model.User;
|
||||
import com.commafeed.backend.services.ApplicationSettingsService;
|
||||
import com.commafeed.frontend.CommaFeedSession;
|
||||
import com.commafeed.frontend.utils.WicketUtils;
|
||||
import com.commafeed.frontend.utils.exception.DisplayException;
|
||||
import com.google.api.client.auth.oauth2.AuthorizationCodeResponseUrl;
|
||||
import com.google.api.client.auth.oauth2.AuthorizationCodeTokenRequest;
|
||||
import com.google.api.client.auth.oauth2.BearerToken;
|
||||
import com.google.api.client.auth.oauth2.TokenResponse;
|
||||
import com.google.api.client.http.GenericUrl;
|
||||
import com.google.api.client.http.HttpRequest;
|
||||
import com.google.api.client.http.HttpTransport;
|
||||
import com.google.api.client.http.javanet.NetHttpTransport;
|
||||
import com.google.api.client.json.jackson2.JacksonFactory;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class GoogleImportCallbackPage extends WebPage {
|
||||
|
||||
private static final String TOKEN_URL = "https://accounts.google.com/o/oauth2/token";
|
||||
private static final String EXPORT_URL = "https://www.google.com/reader/subscriptions/export";
|
||||
|
||||
public static final String PAGE_PATH = "google/import/callback";
|
||||
|
||||
@Inject
|
||||
ApplicationSettingsService applicationSettingsService;
|
||||
|
||||
@Inject
|
||||
OPMLImporter importer;
|
||||
|
||||
@Inject
|
||||
UserDAO userDAO;
|
||||
|
||||
public static String getCallbackUrl(String publicUrl) {
|
||||
return FeedUtils.removeTrailingSlash(publicUrl) + "/" + PAGE_PATH;
|
||||
}
|
||||
|
||||
public GoogleImportCallbackPage(PageParameters params) {
|
||||
|
||||
HttpServletRequest request = WicketUtils.getHttpServletRequest();
|
||||
StringBuffer urlBuffer = request.getRequestURL();
|
||||
if (request.getQueryString() != null) {
|
||||
urlBuffer.append('?').append(request.getQueryString());
|
||||
}
|
||||
AuthorizationCodeResponseUrl responseUrl = new AuthorizationCodeResponseUrl(urlBuffer.toString());
|
||||
String code = responseUrl.getCode();
|
||||
|
||||
if (responseUrl.getError() != null) {
|
||||
// user declined
|
||||
throw new RestartResponseException(getApplication().getHomePage());
|
||||
} else if (code == null) {
|
||||
throw new DisplayException("Missing authorization code");
|
||||
} else {
|
||||
ApplicationSettings settings = applicationSettingsService.get();
|
||||
String redirectUri = getCallbackUrl(settings.getPublicUrl());
|
||||
String clientId = settings.getGoogleClientId();
|
||||
String clientSecret = settings.getGoogleClientSecret();
|
||||
|
||||
HttpTransport httpTransport = new NetHttpTransport();
|
||||
JacksonFactory jsonFactory = new JacksonFactory();
|
||||
|
||||
AuthorizationCodeTokenRequest tokenRequest = new AuthorizationCodeTokenRequest(httpTransport, jsonFactory, new GenericUrl(
|
||||
TOKEN_URL), code);
|
||||
tokenRequest.setRedirectUri(redirectUri);
|
||||
tokenRequest.put("client_id", clientId);
|
||||
tokenRequest.put("client_secret", clientSecret);
|
||||
tokenRequest.setGrantType("authorization_code");
|
||||
|
||||
try {
|
||||
// potential fix for invalid_grant error, happens if local
|
||||
// system time is ahead of google servers time
|
||||
Thread.sleep(1000);
|
||||
TokenResponse tokenResponse = tokenRequest.execute();
|
||||
String accessToken = tokenResponse.getAccessToken();
|
||||
|
||||
HttpRequest httpRequest = httpTransport.createRequestFactory().buildGetRequest(new GenericUrl(EXPORT_URL));
|
||||
BearerToken.authorizationHeaderAccessMethod().intercept(httpRequest, accessToken);
|
||||
String opml = httpRequest.execute().parseAsString();
|
||||
User user = CommaFeedSession.get().getUser();
|
||||
if (user != null) {
|
||||
if (StartupBean.USERNAME_DEMO.equals(user.getName())) {
|
||||
throw new DisplayException("Import is disabled for the demo account");
|
||||
}
|
||||
importer.importOpml(CommaFeedSession.get().getUser(), opml);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new DisplayException(e);
|
||||
}
|
||||
}
|
||||
setResponsePage(getApplication().getHomePage());
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
package com.commafeed.frontend.pages;
|
||||
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.apache.http.client.utils.URIBuilder;
|
||||
import org.apache.wicket.markup.html.WebPage;
|
||||
import org.apache.wicket.request.flow.RedirectToUrlException;
|
||||
import org.jboss.logging.Logger;
|
||||
|
||||
import com.commafeed.backend.model.ApplicationSettings;
|
||||
import com.commafeed.backend.services.ApplicationSettingsService;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class GoogleImportRedirectPage extends WebPage {
|
||||
|
||||
private static Logger log = Logger.getLogger(GoogleImportRedirectPage.class);
|
||||
|
||||
private static final String SCOPE = "https://www.google.com/reader/subscriptions/export email profile";
|
||||
private static final String AUTH_URL = "https://accounts.google.com/o/oauth2/auth";
|
||||
|
||||
@Inject
|
||||
ApplicationSettingsService applicationSettingsService;
|
||||
|
||||
public GoogleImportRedirectPage() {
|
||||
|
||||
ApplicationSettings settings = applicationSettingsService.get();
|
||||
|
||||
String clientId = settings.getGoogleClientId();
|
||||
|
||||
String redirectUri = GoogleImportCallbackPage.getCallbackUrl(settings.getPublicUrl());
|
||||
try {
|
||||
URIBuilder builder = new URIBuilder(AUTH_URL);
|
||||
|
||||
builder.addParameter("redirect_uri", redirectUri);
|
||||
builder.addParameter("response_type", "code");
|
||||
builder.addParameter("scope", SCOPE);
|
||||
builder.addParameter("approval_prompt", "force");
|
||||
builder.addParameter("client_id", clientId);
|
||||
builder.addParameter("access_type", "offline");
|
||||
|
||||
throw new RedirectToUrlException(builder.build().toString());
|
||||
} catch (URISyntaxException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ import org.apache.wicket.markup.html.form.StatelessForm;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.model.PropertyModel;
|
||||
import org.apache.wicket.validation.IValidatable;
|
||||
import org.apache.wicket.validation.IValidator;
|
||||
import org.apache.wicket.validation.ValidationError;
|
||||
@@ -26,7 +27,6 @@ import com.commafeed.backend.services.ApplicationSettingsService;
|
||||
import com.commafeed.backend.services.UserService;
|
||||
import com.commafeed.frontend.CommaFeedSession;
|
||||
import com.commafeed.frontend.model.request.RegistrationRequest;
|
||||
import com.commafeed.frontend.utils.ModelFactory.MF;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class RegisterPanel extends Panel {
|
||||
@@ -62,9 +62,8 @@ public class RegisterPanel extends Panel {
|
||||
add(form);
|
||||
add(new BootstrapFeedbackPanel("feedback", new ContainerFeedbackMessageFilter(form)));
|
||||
|
||||
RegistrationRequest p = MF.p(RegistrationRequest.class);
|
||||
form.add(new RequiredTextField<String>("name", MF.m(model, p.getName())).add(StringValidator.lengthBetween(3, 32)).add(
|
||||
new IValidator<String>() {
|
||||
form.add(new RequiredTextField<String>("name", new PropertyModel<String>(model, "name")).add(StringValidator.lengthBetween(3, 32))
|
||||
.add(new IValidator<String>() {
|
||||
@Override
|
||||
public void validate(IValidatable<String> validatable) {
|
||||
String name = validatable.getValue();
|
||||
@@ -74,9 +73,9 @@ public class RegisterPanel extends Panel {
|
||||
}
|
||||
}
|
||||
}));
|
||||
form.add(new PasswordTextField("password", MF.m(model, p.getPassword())).setResetPassword(false).add(
|
||||
form.add(new PasswordTextField("password", new PropertyModel<String>(model, "password")).setResetPassword(false).add(
|
||||
StringValidator.minimumLength(6)));
|
||||
form.add(new RequiredTextField<String>("email", MF.m(model, p.getEmail())) {
|
||||
form.add(new RequiredTextField<String>("email", new PropertyModel<String>(model, "email")) {
|
||||
@Override
|
||||
protected String getInputType() {
|
||||
return "email";
|
||||
|
||||
Reference in New Issue
Block a user