13f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen/* 23f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * Copyright (C) 2015 The Android Open Source Project 33f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * 43f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * Licensed under the Apache License, Version 2.0 (the "License"); 53f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * you may not use this file except in compliance with the License. 63f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * You may obtain a copy of the License at 73f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * 83f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * http://www.apache.org/licenses/LICENSE-2.0 93f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * 103f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * Unless required by applicable law or agreed to in writing, software 113f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * distributed under the License is distributed on an "AS IS" BASIS, 123f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * See the License for the specific language governing permissions and 143f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * limitations under the License. 153f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen */ 163f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenpackage com.android.phone.common.mail.internet; 173f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 183f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenimport android.util.Base64; 193f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 203f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenimport com.android.phone.common.mail.Body; 213f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenimport com.android.phone.common.mail.MessagingException; 223f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 233f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenimport java.io.ByteArrayInputStream; 243f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenimport java.io.IOException; 253f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenimport java.io.InputStream; 263f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenimport java.io.OutputStream; 273f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenimport java.io.UnsupportedEncodingException; 283f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 293f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chenpublic class TextBody implements Body { 303f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen String mBody; 313f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 323f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen public TextBody(String body) { 333f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen this.mBody = body; 343f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen } 353f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 363f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen @Override 373f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen public void writeTo(OutputStream out) throws IOException, MessagingException { 383f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen byte[] bytes = mBody.getBytes("UTF-8"); 393f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen out.write(Base64.encode(bytes, Base64.CRLF)); 403f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen } 413f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 423f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen /** 433f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * Get the text of the body in it's unencoded format. 443f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * @return 453f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen */ 463f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen public String getText() { 473f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen return mBody; 483f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen } 493f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen 503f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen /** 513f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen * Returns an InputStream that reads this body's text in UTF-8 format. 523f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen */ 533f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen @Override 543f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen public InputStream getInputStream() throws MessagingException { 553f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen try { 563f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen byte[] b = mBody.getBytes("UTF-8"); 573f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen return new ByteArrayInputStream(b); 583f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen } 593f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen catch (UnsupportedEncodingException usee) { 603f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen return null; 613f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen } 623f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen } 633f51d09afa61649a1bcf02599bc1df5aafccf088Nancy Chen} 64