Esempio n. 1
0
Transfer::URI AssetDownloadTask::getURL(const Transfer::URI& orig, const String& given_url) {
    // We need to handle relative and absolute URIs:

    // If we can decode a URL, then we may need to handle relative URLs.
    Transfer::URL orig_url(orig);
    if (!orig_url.empty()) {
        // The URL constructor will figure out absolute/relative, or just fail
        // if it can't construct a valid URL.
        Transfer::URL deriv_url(orig_url.context(), given_url);
        if (!deriv_url.empty()) return Transfer::URI(deriv_url.toString());
    }

    // Otherwise, try to decode as a plain URI, ignoring the original URI. This
    // will either succeed with a full URI or fail and return an empty URI
    return Transfer::URI(given_url);
}
Esempio n. 2
0
static char *
MimeMessage_partial_message_html(const char *data, void *closure,
                 MimeHeaders *headers)
{
  MimeMessage *msg = (MimeMessage *)closure;
  nsCAutoString orig_url(data);
  char *uidl = MimeHeaders_get(headers, HEADER_X_UIDL, PR_FALSE, PR_FALSE);
  char *msgId = MimeHeaders_get(headers, HEADER_MESSAGE_ID, PR_FALSE,
                  PR_FALSE);
  char *msgIdPtr = PL_strstr(msgId, "<");
  int msgBase;

  PRInt32 pos = orig_url.Find("mailbox-message");
  if (pos != -1)
    orig_url.Cut(pos + 7, 8);

  pos = orig_url.Find("#");
  if (pos != -1)
    orig_url.Replace(pos, 1, "?number=", 8);

  if (msgIdPtr)
    msgIdPtr++;
  else
    msgIdPtr = msgId;
  char *gtPtr = PL_strstr(msgIdPtr, ">");
  if (gtPtr)
    *gtPtr = 0;

  msgBase = (msg->bodyLength > MSG_LINEBREAK_LEN) ? MIME_MSG_PARTIAL_FMT_1 : MIME_MSG_PARTIAL_FMT2_1;

  nsCString partialMsgHtml;
  nsCString item;

  item.Adopt(MimeGetStringByID(msgBase));
  partialMsgHtml += item;

  item.Adopt(MimeGetStringByID(msgBase+1));
  partialMsgHtml += item;

  partialMsgHtml.Append(orig_url);

  if (msgIdPtr) {
    partialMsgHtml.AppendLiteral("&messageid=");

    MsgEscapeString(nsDependentCString(msgIdPtr), nsINetUtil::ESCAPE_URL_PATH,
                    item);

    partialMsgHtml.Append(item);
  }

  if (uidl) {
    partialMsgHtml.AppendLiteral("&uidl=");

    MsgEscapeString(nsDependentCString(uidl), nsINetUtil::ESCAPE_XALPHAS,
                    item);

    partialMsgHtml.Append(item);
  }

  item.Adopt(MimeGetStringByID(msgBase+2));
  partialMsgHtml += item;

  return ToNewCString(partialMsgHtml);
}
Esempio n. 3
0
static char *
MimeMessage_partial_message_html(const char *data, void *closure,
                                 MimeHeaders *headers)
{
  MimeMessage *msg = (MimeMessage *)closure;
  nsAutoCString orig_url(data);
  char *uidl = MimeHeaders_get(headers, HEADER_X_UIDL, false, false);
  char *msgId = MimeHeaders_get(headers, HEADER_MESSAGE_ID, false,
                  false);
  char *msgIdPtr = PL_strchr(msgId, '<');

  int32_t pos = orig_url.Find("mailbox-message");
  if (pos != -1)
    orig_url.Cut(pos + 7, 8);

  pos = orig_url.FindChar('#');
  if (pos != -1)
    orig_url.Replace(pos, 1, "?number=", 8);

  if (msgIdPtr)
    msgIdPtr++;
  else
    msgIdPtr = msgId;
  char *gtPtr = PL_strchr(msgIdPtr, '>');
  if (gtPtr)
    *gtPtr = 0;

  bool msgBaseTruncated = (msg->bodyLength > MSG_LINEBREAK_LEN);

  nsCString partialMsgHtml;
  nsCString item;

  partialMsgHtml.AppendLiteral("<div style=\"margin: 1em auto; border: 1px solid black; width: 80%\">");
  partialMsgHtml.AppendLiteral("<div style=\"margin: 5px; padding: 10px; border: 1px solid gray; font-weight: bold; text-align: center;\">");

  partialMsgHtml.AppendLiteral("<span style=\"font-size: 120%;\">");
  if (msgBaseTruncated)
    item.Adopt(MimeGetStringByName(MOZ_UTF16("MIME_MSG_PARTIAL_TRUNCATED")));
  else
    item.Adopt(MimeGetStringByName(MOZ_UTF16("MIME_MSG_PARTIAL_NOT_DOWNLOADED")));
  partialMsgHtml += item;
  partialMsgHtml.AppendLiteral("</span><hr>");

  if (msgBaseTruncated)
    item.Adopt(MimeGetStringByName(MOZ_UTF16("MIME_MSG_PARTIAL_TRUNCATED_EXPLANATION")));
  else
    item.Adopt(MimeGetStringByName(MOZ_UTF16("MIME_MSG_PARTIAL_NOT_DOWNLOADED_EXPLANATION")));
  partialMsgHtml += item;
  partialMsgHtml.AppendLiteral("<br><br>");

  partialMsgHtml.AppendLiteral("<a href=\"");
  partialMsgHtml.Append(orig_url);

  if (msgIdPtr) {
    partialMsgHtml.AppendLiteral("&messageid=");

    MsgEscapeString(nsDependentCString(msgIdPtr), nsINetUtil::ESCAPE_URL_PATH,
                    item);

    partialMsgHtml.Append(item);
  }

  if (uidl) {
    partialMsgHtml.AppendLiteral("&uidl=");

    MsgEscapeString(nsDependentCString(uidl), nsINetUtil::ESCAPE_XALPHAS,
                    item);

    partialMsgHtml.Append(item);
  }

  partialMsgHtml.AppendLiteral("\">");
  item.Adopt(MimeGetStringByName(MOZ_UTF16("MIME_MSG_PARTIAL_CLICK_FOR_REST")));
  partialMsgHtml += item;
  partialMsgHtml.AppendLiteral("</a>");

  partialMsgHtml.AppendLiteral("</div></div>");

  return ToNewCString(partialMsgHtml);
}