ex

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Revision:
49:b9eb462f36a9
Parent:
48:c7ee67edcf1d
Child:
50:9ecaa144d1f3
--- a/dcs-sdk-java-master/app/src/main/java/com/baidu/duer/dcs/framework/dispatcher/MultipartParser.java	Tue Jul 18 16:56:22 2017 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,174 +0,0 @@
-/*
- * Copyright (c) 2017 Baidu, Inc. All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.baidu.duer.dcs.framework.dispatcher;
-
-import com.baidu.duer.dcs.framework.message.DcsResponseBody;
-import com.baidu.duer.dcs.http.HttpConfig;
-
-import org.apache.commons.fileupload.MultipartStream;
-import org.apache.commons.lang3.StringUtils;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringReader;
-import java.util.HashMap;
-import java.util.Map;
-
-import okhttp3.Response;
-
-/**
- * 把从服务器返回multipart中json对象和二进制解析成directive对象
- * <p>
- * Created by wuruisheng on 2017/5/12.
- */
-public class MultipartParser extends Parser {
-    private static final int BUFFER_SIZE = 512;
-    private final IMultipartParserListener multipartParserListener;
-
-    public MultipartParser(IMultipartParserListener listener) {
-        this.multipartParserListener = listener;
-    }
-
-    public void parseResponse(Response response) throws IOException {
-        String boundary = getBoundary(response);
-        if (boundary != null) {
-            parseStream(response.body().byteStream(), boundary);
-        }
-    }
-
-    private void parseStream(InputStream inputStream, String boundary) throws IOException {
-        MultipartStream multipartStream = new MultipartStream(inputStream, boundary.getBytes(), BUFFER_SIZE, null);
-        parseMultipartStream(multipartStream);
-    }
-
-    private void parseMultipartStream(MultipartStream multipartStream) throws IOException {
-        try {
-            Boolean hasNextPart = multipartStream.skipPreamble();
-            while (hasNextPart) {
-                handlePart(multipartStream);
-                hasNextPart = multipartStream.readBoundary();
-            }
-        } catch (DcsJsonProcessingException exception) {
-            if (multipartParserListener != null) {
-                multipartParserListener.onParseFailed(exception.getUnparsedCotent());
-            }
-        } catch (MultipartStream.MalformedStreamException exception) {
-            // 用于处理 empty part
-        }
-    }
-
-    private void handlePart(MultipartStream multipartStream) throws IOException {
-        Map<String, String> headers = getPartHeaders(multipartStream);
-        if (headers != null) {
-            byte[] partBytes = getPartBytes(multipartStream);
-            Boolean isJsonData = isPartJSON(headers);
-            if (isJsonData) {
-                handleJsonData(partBytes);
-            } else {
-                handleAudio(headers, partBytes);
-            }
-        }
-    }
-
-    private void handleJsonData(byte[] partBytes) throws IOException {
-        final DcsResponseBody responseBody = parse(partBytes, DcsResponseBody.class);
-        if (multipartParserListener != null) {
-            multipartParserListener.onResponseBody(responseBody);
-        }
-    }
-
-    private void handleAudio(Map<String, String> headers, byte[] partBytes) {
-        String contentId = getMultipartContentId(headers);
-        final AudioData audioData = new AudioData(contentId, partBytes);
-        if (multipartParserListener != null) {
-            multipartParserListener.onAudioData(audioData);
-        }
-    }
-
-    private byte[] getPartBytes(MultipartStream multipartStream) throws IOException {
-        ByteArrayOutputStream data = new ByteArrayOutputStream();
-        multipartStream.readBodyData(data);
-        return data.toByteArray();
-    }
-
-    private Map<String, String> getPartHeaders(MultipartStream multipartStream) throws IOException {
-        String headers = multipartStream.readHeaders();
-        BufferedReader reader = new BufferedReader(new StringReader(headers));
-        Map<String, String> headerMap = new HashMap<>();
-        try {
-            for (String line = reader.readLine(); line != null; line = reader.readLine()) {
-                line = line.trim();
-                if (!StringUtils.isBlank(line) && line.contains(":")) {
-                    int colon = line.indexOf(":");
-                    String headerName = line.substring(0, colon).trim();
-                    String headerValue = line.substring(colon + 1).trim();
-                    headerMap.put(headerName.toLowerCase(), headerValue);
-                }
-            }
-        } catch (Exception e) {
-            throw e;
-        }
-
-        return headerMap;
-    }
-
-    private String getMultipartHeaderValue(Map<String, String> headers, String searchHeader) {
-        return headers.get(searchHeader.toLowerCase());
-    }
-
-    private String getMultipartContentId(Map<String, String> headers) {
-        String contentId = getMultipartHeaderValue(headers, HttpConfig.HttpHeaders.CONTENT_ID);
-        contentId = contentId.substring(1, contentId.length() - 1);
-        return contentId;
-    }
-
-    private boolean isPartJSON(Map<String, String> headers) {
-        String contentType = getMultipartHeaderValue(headers, HttpConfig.HttpHeaders.CONTENT_TYPE);
-        return StringUtils.contains(contentType, HttpConfig.ContentTypes.JSON);
-    }
-
-    private static String getBoundary(Response response) {
-        String headerValue = response.header(HttpConfig.HttpHeaders.CONTENT_TYPE);
-        String boundary = getHeaderParameter(headerValue, HttpConfig.Parameters.BOUNDARY);
-        return boundary;
-    }
-
-    private static String getHeaderParameter(final String headerValue, final String key) {
-        if ((headerValue == null) || (key == null)) {
-            return null;
-        }
-
-        String[] parts = headerValue.split(";");
-        for (String part : parts) {
-            part = part.trim();
-            if (part.startsWith(key)) {
-                return part.substring(key.length() + 1).replaceAll("(^\")|(\"$)", "").trim();
-            }
-        }
-
-        return null;
-    }
-
-    public interface IMultipartParserListener {
-        void onResponseBody(DcsResponseBody responseBody);
-
-        void onAudioData(AudioData audioData);
-
-        void onParseFailed(String unParseMessage);
-    }
-}