Search in sources :

Example 11 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 12 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)12 JSONObject (org.json.JSONObject)9 URL (java.net.URL)8 EventException (org.b3log.latke.event.EventException)6 MalformedURLException (java.net.MalformedURLException)5 LatkeBeanManager (org.b3log.latke.ioc.LatkeBeanManager)5 PreferenceQueryService (org.b3log.solo.service.PreferenceQueryService)5 HTTPResponse (org.b3log.latke.urlfetch.HTTPResponse)3 RequestProcessing (org.b3log.latke.servlet.annotation.RequestProcessing)2 JSONRenderer (org.b3log.latke.servlet.renderer.JSONRenderer)2 URLFetchService (org.b3log.latke.urlfetch.URLFetchService)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 ArticleSender (org.b3log.solo.event.rhythm.ArticleSender)1 JSONArray (org.json.JSONArray)1