EmailHelper.java
6.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.day.cq.commons.inherit.HierarchyNodeInheritanceValueMap
* com.day.cq.mailer.MessageTemplate
* com.day.cq.mailer.commons.MailHelper
* com.day.cq.mcm.api.newsletter.NewsLetter
* com.day.cq.mcm.core.NewsletterHelper
* com.day.cq.wcm.api.Page
* com.day.cq.wcm.api.PageManager
* javax.servlet.http.HttpServletRequest
* org.apache.commons.lang.StringUtils
* org.apache.sling.api.SlingHttpServletRequest
* org.apache.sling.api.SlingHttpServletResponse
* org.apache.sling.api.request.RequestParameterMap
* org.apache.sling.api.resource.Resource
* org.apache.sling.api.resource.ResourceResolver
* org.apache.sling.auth.core.AuthUtil
* org.slf4j.Logger
* org.slf4j.LoggerFactory
*/
package com.day.cq.mcm.emailprovider.util;
import com.day.cq.commons.inherit.HierarchyNodeInheritanceValueMap;
import com.day.cq.mailer.MessageTemplate;
import com.day.cq.mailer.commons.MailHelper;
import com.day.cq.mcm.api.newsletter.NewsLetter;
import com.day.cq.mcm.core.NewsletterHelper;
import com.day.cq.mcm.emailprovider.impl.types.EmailImpl;
import com.day.cq.mcm.emailprovider.types.Email;
import com.day.cq.wcm.api.Page;
import com.day.cq.wcm.api.PageManager;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.request.RequestParameterMap;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.auth.core.AuthUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class EmailHelper {
private static final String EXTENSION_HTML = ".html";
private static final String REDIRECT_PAGE_PARAMETER = ":redirect";
private static final String CLOUD_CONFIG_PROPERTY_NAME = "cq:cloudserviceconfigs";
private static final String SCRIPT_START_TAG = "<script";
private static final String SCRIPT_END_TAG = "</script>";
private static final String DEFAULT_CQ_NEWSLETTER_NAME = "CQ Newsletter";
private static final Logger log = LoggerFactory.getLogger(EmailHelper.class);
public static final String PN_PROVIDER_NAME = "providerName";
public static final String PN_USERNAME = "username";
public static final String PN_PASSWORD = "password";
public static final String PN_ENDPOINT = "endpoint";
public static final String PN_APIENDPOINT = "apiendpoint";
public static final String PN_EMAIL = "email";
public static final String PN_LISTID = "subscriptionlist";
public static final String PN_AUTORESPONDER_EMAIL = "autoresponderemail";
public static final String PN_EMAIL_CLASSIFICATION = "emailclassification";
public static final String PN_ACCOUNTID = "accountId";
public static String[] getConfig(SlingHttpServletRequest request) {
Page page;
RequestParameterMap map = request.getRequestParameterMap();
String path = NewsletterHelper.getParameter((RequestParameterMap)map, (String)"newsletter");
Resource resource = path != null ? request.getResourceResolver().resolve(path) : request.getResource();
PageManager pmgr = (PageManager)request.getResourceResolver().adaptTo(PageManager.class);
if (pmgr != null && (page = pmgr.getContainingPage(resource)) != null) {
resource = (Resource)page.adaptTo(Resource.class);
HierarchyNodeInheritanceValueMap pageProperties = new HierarchyNodeInheritanceValueMap(page.getContentResource());
return (String[])pageProperties.getInherited("cq:cloudserviceconfigs", (Object)new String[0]);
}
return new String[0];
}
public static void redirectUrl(Boolean isError, SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException {
String redirectUrl = request.getParameter(":redirect");
if (redirectUrl != null && !AuthUtil.isRedirectValid((HttpServletRequest)request, (String)redirectUrl)) {
log.error("Invalid redirect specified: ", (Object)redirectUrl);
redirectUrl = null;
}
Resource resource = request.getResource();
PageManager pmgr = (PageManager)request.getResourceResolver().adaptTo(PageManager.class);
Page page = null;
if (pmgr != null) {
page = pmgr.getContainingPage(resource);
}
if (isError.booleanValue() || redirectUrl == null) {
if (page != null) {
redirectUrl = request.getContextPath() + page.getPath() + ".html";
} else {
return;
}
}
response.sendRedirect(redirectUrl);
}
private static String getName(String name, NewsLetter newsletter) {
if (name == null || name.trim().equals("")) {
String path = newsletter.getPath();
int index = path.lastIndexOf(47);
if (index == -1) {
index = path.lastIndexOf(92);
}
name = index == -1 ? "CQ Newsletter" : path.substring(index + 1);
}
return name;
}
private static String convertMail(String html) {
StringBuffer strBuf = new StringBuffer("");
int startIndex = html.indexOf("<script");
if (startIndex == -1) {
return html;
}
int subStartIndex = 0;
int subEndIndex = startIndex;
do {
strBuf.append(html.substring(subStartIndex, subEndIndex));
int endIndex = html.indexOf("</script>", startIndex);
if (endIndex == -1) {
log.debug("Invalid HTML, No matching script end tag.");
return html;
}
startIndex = html.indexOf("<script", endIndex + "</script>".length());
subStartIndex = endIndex + "</script>".length();
subEndIndex = startIndex;
} while (startIndex != -1);
strBuf.append(html.substring(subStartIndex));
return strBuf.toString();
}
private static String getHtml(MessageTemplate template) {
String html = MailHelper.getHtml((MessageTemplate)template);
return EmailHelper.convertMail(html);
}
public static Email getEmail(String name, NewsLetter letter) {
EmailImpl email = new EmailImpl();
email.setName(EmailHelper.getName(name, letter));
String text = MailHelper.getText((MessageTemplate)letter.getMessageTemplate());
if (StringUtils.isEmpty((String)text)) {
email.setContent(EmailHelper.getHtml(letter.getMessageTemplate()));
email.setHtml(true);
} else {
email.setContent(text);
email.setHtml(false);
}
String subject = letter.getSubject();
if (subject == null || subject.trim().equals("")) {
subject = "No Subject";
}
email.setSubject(subject);
return email;
}
}