Search in sources :

Example 6 with HTTPRequest

use of org.b3log.latke.urlfetch.HTTPRequest 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 7 with HTTPRequest

use of org.b3log.latke.urlfetch.HTTPRequest 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 8 with HTTPRequest

use of org.b3log.latke.urlfetch.HTTPRequest 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

HTTPRequest (org.b3log.latke.urlfetch.HTTPRequest)8 JSONObject (org.json.JSONObject)8 EventException (org.b3log.latke.event.EventException)5 LatkeBeanManager (org.b3log.latke.ioc.LatkeBeanManager)5 PreferenceQueryService (org.b3log.solo.service.PreferenceQueryService)5 MalformedURLException (java.net.MalformedURLException)4 URL (java.net.URL)4 RequestProcessing (org.b3log.latke.servlet.annotation.RequestProcessing)2 JSONRenderer (org.b3log.latke.servlet.renderer.JSONRenderer)2 ParseException (java.text.ParseException)1 Future (java.util.concurrent.Future)1 RuntimeEnv (org.b3log.latke.RuntimeEnv)1 RepositoryException (org.b3log.latke.repository.RepositoryException)1 Transaction (org.b3log.latke.repository.Transaction)1 CreateTableResult (org.b3log.latke.repository.jdbc.util.JdbcRepositories.CreateTableResult)1 ServiceException (org.b3log.latke.service.ServiceException)1 HTTPResponse (org.b3log.latke.urlfetch.HTTPResponse)1 URLFetchService (org.b3log.latke.urlfetch.URLFetchService)1 ArticleSender (org.b3log.solo.event.rhythm.ArticleSender)1 JSONException (org.json.JSONException)1