/* * Copyright (C) 2021 Huawei Device Co., Ltd. * 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. */ #ifndef MMS_MSG_H #define MMS_MSG_H #include #include "mms_header.h" #include "mms_body.h" #include "mms_body_part.h" #include "mms_content_param.h" #include "mms_decode_buffer.h" #include "mms_attachment.h" #include "mms_address.h" namespace OHOS { namespace Telephony { class MmsMsg { public: MmsMsg() = default; ~MmsMsg() = default; /** * @brief Dump the mms Message, printf Mms Message Infomations. */ void DumpMms(); /** * @brief Get Mms Header Protocol Version. * * @return returns Mms Header Protocol Version. */ uint16_t GetMmsVersion(); /** * @brief Set Mms Header Protocol Version. * * @param value the Mms Header Protocol Version. * @return true if set successfully, false otherwise. */ bool SetMmsVersion(uint16_t value); /** * @brief Get the Mms Message Type. * * @return uint8_t returns Mms Header Message Type. */ uint8_t GetMmsMessageType(); /** * @brief Set the Mms Message Type. * * @param value Mms Header Message Type. * @return true if set successfully, false otherwise. */ bool SetMmsMessageType(uint8_t value); /** * @brief Get the Mms Transaction Id From Header, a unique identifier for the PDU. * * @return std::string returns the Mms Transaction Id. */ std::string GetMmsTransactionId(); /** * @brief Set the Mms Transaction Id To Header, a unique identifier for the PDU. * * @param value the Mms Transaction Id. * @return true if set successfully, false otherwise. */ bool SetMmsTransactionId(std::string value); /** * @brief Get the Mms Date From Header. * * @return int64_t return the Mms Message Header Date Infomations. */ int64_t GetMmsDate(); /** * @brief Set the Mms Date To Header. * * @param value the Mms Message Header Date Infomations. * @return true if set successfully, false otherwise. */ bool SetMmsDate(int64_t value); /** * @brief Get the Mms Subject From Header. * * @return std::string Mms Message Header SubJect Infomations. */ std::string GetMmsSubject(); /** * @brief Set Mms Message Header Subject Infomations. * * @param value Mms Message Header Subject Infomations. * @return true if set successfully, false otherwise. */ bool SetMmsSubject(std::string value); /** * @brief Get Mms Message Header From Address Infomations. * * @return returns a MmsAddress object, contains the address, address type .etc */ MmsAddress GetMmsFrom(); /** * @brief Set Mms Message Header From Address Infomations. * * @param address the MmsAddress object, contains the address, address type .etc * @return true if set successfully, false otherwise. */ bool SetMmsFrom(MmsAddress address); /** * @brief Set the Mms To Address in Header, support multiple address. * * @param toAddrs a list of MmsAddress objects. * @return true if set successfully, false otherwise. */ bool SetMmsTo(std::vector& toAddrs); /** * @brief Get the Mms Msg to address from the header, support multiple address. * * @param toAddrs a list of MmsAddress objects. * @return true if get successfully, false otherwise. */ bool GetMmsTo(std::vector& toAddrs); /** * @brief Get Octet Type Value From the Header. * This is Generic methods to Get Mms Message Header. * * @param fieldId the Header Field Assigned Number {@link MmsFieldCode}. * @return uint8_t returns the Octet Type Value. */ uint8_t GetHeaderOctetValue(uint8_t fieldId); /** * @brief Set the Header Octet Value To Header. * This is Generic methods to Set Mms Message Header. * * @param fieldId the Header Field Assigned Number {@link MmsFieldCode}. * @param value the Header Octet Value. * @return true if set successfully, false otherwise. */ bool SetHeaderOctetValue(uint8_t fieldId, uint8_t value); /** * @brief Get the Header Integer Value From Header. * This is Generic methods to Get Mms Message Header. * * @param fieldId the Header Field Assigned Number {@link MmsFieldCode}. * @return int32_t return the Header Octet Value. */ int32_t GetHeaderIntegerValue(uint8_t fieldId); /** * @brief Set the Header Integer Value To Header. * This is Generic methods to Set Mms Message Header. * * @param fieldId the Header Field Assigned Number {@link MmsFieldCode}. * @param value the Header Integer Value. * @return true if set successfully, false otherwise. */ bool SetHeaderIntegerValue(uint8_t fieldId, int32_t value); /** * @brief Get Long Type Value From the Header. * This is Generic methods to Get Mms Message Header. * * @param fieldId the Header Field Assigned Number {@link MmsFieldCode}. * @return int64_t return the Long Type Value. */ int64_t GetHeaderLongValue(uint8_t fieldId); /** * @brief Set the Header Long Value To Header * This is Generic methods to Set Mms Message Header. * * @param fieldId the Header Field Assigned Number {@link MmsFieldCode} * @param value the Field Long Value * @return true if set successfully, false otherwise */ bool SetHeaderLongValue(uint8_t fieldId, int64_t value); /** * @brief Get String or Encode String Type Value From the Header. * This is Generic methods to Get Mms Message Header. * * @param fieldId the Header Field Assigned Number {@link MmsFieldCode}. * @return std::string return Field Text Value Or EncondeString with UTF_8. */ std::string GetHeaderStringValue(uint8_t fieldId); /** * @brief Set the Header String Value To Header. * This is Generic methods to Set Mms Message Header. * * @param fieldId the Header Field Assigned Number {@link MmsFieldCode}. * @param value Field Text Value. * @return true if set successfully, false otherwise. */ bool SetHeaderStringValue(uint8_t fieldId, std::string &value); /** * @brief Set the Header Encoded String Value From Header. * This is Generic methods to Set Mms Message Header. * * @param fieldId the Header Field Assigned Number {@link MmsFieldCode}. * @param value the Field EncondeString Value. * @param charset the charset type. * @return true if set successfully, false otherwise. */ bool SetHeaderEncodedStringValue(uint8_t fieldId, const std::string &value, uint32_t charset); /** * @brief AddHeaderAddressValue, for example: To / Cc / Bcc. * * @param fieldId the Header Field Assigned Number {@link MmsFieldCode}. * @param address the MmsAddress object, contains the address, address type .etc * @return true if add successfully, false otherwise. */ bool AddHeaderAddressValue(uint8_t fieldId, MmsAddress &address); /** * @brief Get the Header All Address Value From Header, * for example: To / Cc / Bcc. * * @param fieldId the Header Field Assigned Number {@link MmsFieldCode}. * @param addressValue a list of MmsAddress Objects. * @return true if get successfully, false otherwise. */ bool GetHeaderAllAddressValue(uint8_t fieldId, std::vector &addressValue); /** * @brief Set the Content Type. * * @param strType the content type. * @return true if set successfully, false otherwise. */ bool SetHeaderContentType(std::string strType); /** * @brief Get the Content Type. * * @return std::string return the header content type. */ std::string GetHeaderContentType(); /** * @brief Get the Content Type start parameter. * * @return std::string return the Content Type start parameter. */ std::string GetHeaderContentTypeStart(); /** * @brief add attachment to mms message if attachment is smil file must to add first. * * @param attachment the MmsAttachment object, indicates the attachment * detail information for the MMS message. * @return returns true if add successfully, false otherwise. */ bool AddAttachment(MmsAttachment &attachment); /** * @brief Get the All Attachments from mms message. * * @param attachments a list of MmsAttachment objects, indicates the attachment * detail information for the MMS message. * @return returns true if get successfully, false otherwise. */ bool GetAllAttachment(std::vector &attachments); /** * @brief DecodeMsg from a mms file. * * @param mmsFilePathName the path of mms file. * @return true if decode successfully, false otherwise. */ bool DecodeMsg(std::string mmsFilePathName); /** * @brief DecodeMsg from a mms from buff. * * @param inBuff the mms buffer. * @param inLen the mms buffer length. * @return true if decode successfully, false otherwise. */ bool DecodeMsg(std::unique_ptr inBuff, uint32_t inLen); /** * @brief EncodeMsg form MmsMsg. * * @param outLen the result message length limit. * @return return eoncode MmsMsg result data buff. */ std::unique_ptr EncodeMsg(uint32_t &outLen); MmsHeader &GetHeader(); private: MmsHeader mmsHeader_; MmsBody mmsBody_; }; } // namespace Telephony } // namespace OHOS #endif