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