Search in sources :

Example 11 with EventException

use of org.b3log.latke.event.EventException in project solo by b3log.

the class UpdateArticleGoogleBlogSearchPinger method action.

@Override
public void action(final Event<JSONObject> event) throws EventException {
    final JSONObject eventData = event.getData();
    String articleTitle = null;
    final LatkeBeanManager beanManager = Lifecycle.getBeanManager();
    final PreferenceQueryService preferenceQueryService = beanManager.getReference(PreferenceQueryService.class);
    try {
        final JSONObject article = eventData.getJSONObject(Article.ARTICLE);
        articleTitle = article.getString(Article.ARTICLE_TITLE);
        final JSONObject preference = preferenceQueryService.getPreference();
        final String blogTitle = preference.getString(Option.ID_C_BLOG_TITLE);
        if (Latkes.getServePath().contains("localhost")) {
            LOGGER.log(Level.TRACE, "Solo runs on local server, so should not ping " + "Google Blog Search Service for the article[title={0}]", new Object[] { article.getString(Article.ARTICLE_TITLE) });
            return;
        }
        final String articlePermalink = Latkes.getServePath() + article.getString(Article.ARTICLE_PERMALINK);
        final String spec = "http://blogsearch.google.com/ping?name=" + URLEncoder.encode(blogTitle, "UTF-8") + "&url=" + URLEncoder.encode(Latkes.getServePath(), "UTF-8") + "&changesURL=" + URLEncoder.encode(articlePermalink, "UTF-8");
        LOGGER.log(Level.DEBUG, "Request Google Blog Search Service API[{0}] while updateing " + "an article[title=" + articleTitle + "]", spec);
        final HTTPRequest request = new HTTPRequest();
        request.setURL(new URL(spec));
        URL_FETCH_SERVICE.fetchAsync(request);
    } catch (final Exception e) {
        LOGGER.log(Level.ERROR, "Ping Google Blog Search Service fail while updating an " + "article[title=" + articleTitle + "]", e);
    }
}
Also used : PreferenceQueryService(org.b3log.solo.service.PreferenceQueryService) HTTPRequest(org.b3log.latke.urlfetch.HTTPRequest) JSONObject(org.json.JSONObject) URL(java.net.URL) EventException(org.b3log.latke.event.EventException) LatkeBeanManager(org.b3log.latke.ioc.LatkeBeanManager)

Example 12 with EventException

use of org.b3log.latke.event.EventException in project solo by b3log.

the class ArticleUpdater method action.

@Override
public void action(final Event<JSONObject> event) throws EventException {
    final JSONObject data = event.getData();
    LOGGER.log(Level.DEBUG, "Processing an event[type={0}, data={1}] in listener[className={2}]", new Object[] { event.getType(), data, ArticleUpdater.class.getName() });
    try {
        final JSONObject originalArticle = data.getJSONObject(Article.ARTICLE);
        if (!originalArticle.getBoolean(Article.ARTICLE_IS_PUBLISHED)) {
            LOGGER.log(Level.DEBUG, "Ignores post article[title={0}] to Rhythm", originalArticle.getString(Article.ARTICLE_TITLE));
            return;
        }
        final LatkeBeanManager beanManager = Lifecycle.getBeanManager();
        final PreferenceQueryService preferenceQueryService = beanManager.getReference(PreferenceQueryService.class);
        final JSONObject preference = preferenceQueryService.getPreference();
        if (null == preference) {
            throw new EventException("Not found preference");
        }
        if (!Strings.isEmptyOrNull(originalArticle.optString(Article.ARTICLE_VIEW_PWD))) {
            return;
        }
        if (Latkes.getServePath().contains("localhost")) {
            LOGGER.log(Level.INFO, "Solo runs on local server, so should not send this article[id={0}, title={1}] to Rhythm", new Object[] { originalArticle.getString(Keys.OBJECT_ID), originalArticle.getString(Article.ARTICLE_TITLE) });
            return;
        }
        final HTTPRequest httpRequest = new HTTPRequest();
        httpRequest.setURL(UPDATE_ARTICLE_URL);
        httpRequest.setRequestMethod(HTTPRequestMethod.PUT);
        final JSONObject requestJSONObject = new JSONObject();
        final JSONObject article = new JSONObject();
        article.put(Keys.OBJECT_ID, originalArticle.getString(Keys.OBJECT_ID));
        article.put(Article.ARTICLE_TITLE, originalArticle.getString(Article.ARTICLE_TITLE));
        article.put(Article.ARTICLE_PERMALINK, originalArticle.getString(Article.ARTICLE_PERMALINK));
        article.put(Article.ARTICLE_TAGS_REF, originalArticle.getString(Article.ARTICLE_TAGS_REF));
        article.put(Article.ARTICLE_AUTHOR_EMAIL, originalArticle.getString(Article.ARTICLE_AUTHOR_EMAIL));
        article.put(Article.ARTICLE_CONTENT, originalArticle.getString(Article.ARTICLE_CONTENT));
        article.put(Article.ARTICLE_CREATE_DATE, ((Date) originalArticle.get(Article.ARTICLE_CREATE_DATE)).getTime());
        article.put(Common.POST_TO_COMMUNITY, originalArticle.getBoolean(Common.POST_TO_COMMUNITY));
        // Removes this property avoid to persist
        originalArticle.remove(Common.POST_TO_COMMUNITY);
        requestJSONObject.put(Article.ARTICLE, article);
        requestJSONObject.put(Common.BLOG_VERSION, SoloServletListener.VERSION);
        requestJSONObject.put(Common.BLOG, "B3log Solo");
        requestJSONObject.put(Option.ID_C_BLOG_TITLE, preference.getString(Option.ID_C_BLOG_TITLE));
        requestJSONObject.put("blogHost", Latkes.getServerHost() + ":" + Latkes.getServerPort());
        requestJSONObject.put("userB3Key", preference.optString(Option.ID_C_KEY_OF_SOLO));
        requestJSONObject.put("clientAdminEmail", preference.optString(Option.ID_C_ADMIN_EMAIL));
        requestJSONObject.put("clientRuntimeEnv", Latkes.getRuntimeEnv().name());
        httpRequest.setPayload(requestJSONObject.toString().getBytes("UTF-8"));
        urlFetchService.fetchAsync(httpRequest);
    } catch (final Exception e) {
        LOGGER.log(Level.ERROR, "Sends an article to Rhythm error: {0}", e.getMessage());
    }
    LOGGER.log(Level.DEBUG, "Sent an article to Rhythm");
}
Also used : PreferenceQueryService(org.b3log.solo.service.PreferenceQueryService) HTTPRequest(org.b3log.latke.urlfetch.HTTPRequest) JSONObject(org.json.JSONObject) EventException(org.b3log.latke.event.EventException) MalformedURLException(java.net.MalformedURLException) EventException(org.b3log.latke.event.EventException) LatkeBeanManager(org.b3log.latke.ioc.LatkeBeanManager)

Example 13 with EventException

use of org.b3log.latke.event.EventException in project solo by b3log.

the class CommentSender method action.

@Override
public void action(final Event<JSONObject> event) throws EventException {
    final JSONObject data = event.getData();
    LOGGER.log(Level.DEBUG, "Processing an event[type={0}, data={1}] in listener[className={2}]", new Object[] { event.getType(), data, ArticleSender.class.getName() });
    try {
        final JSONObject originalComment = data.getJSONObject(Comment.COMMENT);
        final LatkeBeanManager beanManager = Lifecycle.getBeanManager();
        final PreferenceQueryService preferenceQueryService = beanManager.getReference(PreferenceQueryService.class);
        final JSONObject preference = preferenceQueryService.getPreference();
        if (null == preference) {
            throw new EventException("Not found preference");
        }
        if (Latkes.getServePath().contains("localhost")) {
            LOGGER.log(Level.TRACE, "Solo runs on local server, so should not send this comment[id={0}] to Symphony", new Object[] { originalComment.getString(Keys.OBJECT_ID) });
            return;
        }
        final HTTPRequest httpRequest = new HTTPRequest();
        httpRequest.setURL(ADD_COMMENT_URL);
        httpRequest.setRequestMethod(HTTPRequestMethod.POST);
        final JSONObject requestJSONObject = new JSONObject();
        final JSONObject comment = new JSONObject();
        comment.put("commentId", originalComment.optString(Keys.OBJECT_ID));
        comment.put("commentAuthorName", originalComment.getString(Comment.COMMENT_NAME));
        comment.put("commentAuthorEmail", originalComment.getString(Comment.COMMENT_EMAIL));
        comment.put(Comment.COMMENT_CONTENT, originalComment.getString(Comment.COMMENT_CONTENT));
        comment.put("articleId", originalComment.getString(Comment.COMMENT_ON_ID));
        requestJSONObject.put(Comment.COMMENT, comment);
        requestJSONObject.put("clientVersion", SoloServletListener.VERSION);
        requestJSONObject.put("clientRuntimeEnv", Latkes.getRuntimeEnv().name());
        requestJSONObject.put("clientName", "B3log Solo");
        requestJSONObject.put("clientHost", Latkes.getServerHost() + ":" + Latkes.getServerPort());
        requestJSONObject.put("clientAdminEmail", preference.optString(Option.ID_C_ADMIN_EMAIL));
        requestJSONObject.put("userB3Key", preference.optString(Option.ID_C_KEY_OF_SOLO));
        httpRequest.setPayload(requestJSONObject.toString().getBytes("UTF-8"));
        urlFetchService.fetchAsync(httpRequest);
    } catch (final Exception e) {
        LOGGER.log(Level.ERROR, "Sends a comment to Symphony error: {0}", e.getMessage());
    }
    LOGGER.log(Level.DEBUG, "Sent a comment to Symphony");
}
Also used : PreferenceQueryService(org.b3log.solo.service.PreferenceQueryService) HTTPRequest(org.b3log.latke.urlfetch.HTTPRequest) JSONObject(org.json.JSONObject) EventException(org.b3log.latke.event.EventException) ArticleSender(org.b3log.solo.event.rhythm.ArticleSender) MalformedURLException(java.net.MalformedURLException) EventException(org.b3log.latke.event.EventException) LatkeBeanManager(org.b3log.latke.ioc.LatkeBeanManager)

Aggregations

EventException (org.b3log.latke.event.EventException)13 JSONObject (org.json.JSONObject)11 LatkeBeanManager (org.b3log.latke.ioc.LatkeBeanManager)8 PreferenceQueryService (org.b3log.solo.service.PreferenceQueryService)7 HTTPRequest (org.b3log.latke.urlfetch.HTTPRequest)5 ServiceException (org.b3log.latke.service.ServiceException)4 MalformedURLException (java.net.MalformedURLException)3 JSONException (org.json.JSONException)3 URL (java.net.URL)2 Date (java.util.Date)2 Message (org.b3log.latke.mail.MailService.Message)2 ViewLoadEventData (org.b3log.latke.plugin.ViewLoadEventData)2 RepositoryException (org.b3log.latke.repository.RepositoryException)2 Transaction (org.b3log.latke.repository.Transaction)2 ArchiveDate (org.b3log.solo.model.ArchiveDate)2 CommentRepository (org.b3log.solo.repository.CommentRepository)2 IOException (java.io.IOException)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 ParseException (java.text.ParseException)1 AbstractPlugin (org.b3log.latke.plugin.AbstractPlugin)1