2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FNetHttp_HttpMultipartEntityImpl.h
20 * @brief This is the header file for the %_HttpMultipartEntityImpl class.
22 * This header file contains the declarations of the %_HttpMultipartEntityImpl class.
25 #ifndef _FNET_HTTP_INTERNAL_HTTP_MULTIPART_ENTITY_IMPL_H_
26 #define _FNET_HTTP_INTERNAL_HTTP_MULTIPART_ENTITY_IMPL_H_
28 #include <FBaseObject.h>
29 #include <FOspConfig.h>
30 #include <FNetHttpHttpTypes.h>
31 #include <FNetHttpIHttpEntity.h>
33 namespace Tizen { namespace Base
38 namespace Tizen { namespace Text
43 namespace Tizen { namespace Net { namespace Http
45 class HttpMultipartEntity;
47 * @class _HttpMultipartEntityImpl
48 * @brief This class represents a multipart/form-data entity as defined in RFC 2388.
53 class _OSP_EXPORT_ _HttpMultipartEntityImpl
54 : public Tizen::Base::Object
60 * This is the default constructor for this class.
63 * @remarks After creating an instance of this class, the Construct() method must be called explicitly to initialize this instance.
66 _HttpMultipartEntityImpl(void);
69 * This is the destructor for this class.
73 virtual ~_HttpMultipartEntityImpl(void);
76 * @see HttpMultipartEntity::Construct()
78 result Construct(void);
81 * @see HttpMultipartEntity::Construct()
83 result Construct(const Tizen::Base::String& boundary);
86 * @see HttpMultipartEntity::GetContentLength()
88 virtual long long GetContentLength(void) const;
91 * @see HttpMultipartEntity::GetContentType()
93 virtual Tizen::Base::String GetContentType(void) const;
96 * @see HttpMultipartEntity::AddStringPart()
98 result AddStringPart(const Tizen::Base::String& name, const Tizen::Base::String& text);
101 * @see HttpMultipartEntity::AddStringPart()
103 result AddStringPart(const Tizen::Base::String& name, const Tizen::Base::String& text, const Tizen::Base::String& mimeType, const Tizen::Base::String& charset, const Tizen::Text::Encoding& encoding);
106 * @see HttpMultipartEntity::AddFilePart()
108 result AddFilePart(const Tizen::Base::String& name, const Tizen::Base::String& filePath);
111 * @see HttpMultipartEntity::AddFilePart()
113 result AddFilePart(const Tizen::Base::String& name, const Tizen::Base::String& filePath, const Tizen::Base::String& fileName, const Tizen::Base::String& mimeType, const Tizen::Base::String& charset);
116 * @see HttpMultipartEntity::AddFilePartByBuffer()
118 result AddFilePartByBuffer(const Tizen::Base::String& name, const Tizen::Base::String& fileName, const Tizen::Base::ByteBuffer& buffer);
121 * @see HttpMultipartEntity::AddFilePartByBuffer()
123 result AddFilePartByBuffer(const Tizen::Base::String& name, const Tizen::Base::String& fileName, const Tizen::Base::ByteBuffer& buffer, const Tizen::Base::String& mimeType, const Tizen::Base::String& charset);
127 * Gets the Impl instance.
130 * @return The pointer to _HttpMultipartEntityImpl
131 * @param[in] pHttpMultipartEntity An instance of HttpMultipartEntity
133 static _HttpMultipartEntityImpl* GetInstance(HttpMultipartEntity& httpMultipartEntity);
136 * Gets the Impl instance.
139 * @return The pointer to _HttpMultipartEntityImpl
140 * @param[in] pHttpMultipartEntity An instance of HttpMultipartEntity
142 static const _HttpMultipartEntityImpl* GetInstance(const HttpMultipartEntity& httpMultipartEntity);
145 Tizen::Base::Collection::IList* GetStringPartList(void) const;
147 Tizen::Base::Collection::IList* GetFilePartList(void) const;
149 Tizen::Base::String GetBoundary(void) const;
154 * @see HttpMultipartEntity::HasNextData()
156 virtual bool HasNextData(void);
159 * @see HttpMultipartEntity::GetNextDataN()
161 virtual Tizen::Base::ByteBuffer* GetNextDataN(int recommendedSize);
164 _HttpMultipartEntityImpl(const _HttpMultipartEntityImpl& rhs);
166 _HttpMultipartEntityImpl& operator =(const _HttpMultipartEntityImpl& rhs);
168 Tizen::Base::String GenerateBoundary(void) const;
171 Tizen::Base::String __boundary;
172 Tizen::Base::Collection::IList* __pStringPartList;
173 Tizen::Base::Collection::IList* __pFilePartList;
175 class _HttpMultipartConverter* __pHttpMultipartConverter;
177 friend class HttpMultipartEntity;
179 }; // _HttpMultipartEntityImpl
181 } } } // Tizen::Net::Http
182 #endif // _FNET_HTTP_INTERNAL_HTTP_MULTIPART_ENTITY_IMPL_H_