本文整理汇总了C++中ContentType::type方法的典型用法代码示例。如果您正苦于以下问题:C++ ContentType::type方法的具体用法?C++ ContentType::type怎么用?C++ ContentType::type使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ContentType
的用法示例。
在下文中一共展示了ContentType::type方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: appendAnyPart
void Multipart::appendAnyPart( EString &r, const Bodypart * bp,
ContentType * ct, bool avoidUtf8 ) const
{
ContentType * childct = bp->header()->contentType();
EString::Encoding e = EString::Binary;
ContentTransferEncoding * cte
= bp->header()->contentTransferEncoding();
if ( cte )
e = cte->encoding();
if ( ( childct && childct->type() == "message" ) ||
( ct && ct->type() == "multipart" && ct->subtype() == "digest" &&
!childct ) )
{
if ( childct && childct->subtype() != "rfc822" )
appendTextPart( r, bp, childct );
else
r.append( bp->message()->rfc822( avoidUtf8 ) );
}
else if ( !childct || childct->type().lower() == "text" ) {
appendTextPart( r, bp, childct );
}
else if ( childct->type() == "multipart" ) {
bp->appendMultipart( r, avoidUtf8 );
}
else {
r.append( bp->data().encoded( e, 72 ) );
}
}
示例2: load
void MediaPlayer::load(const String& url, const ContentType& contentType)
{
String type = contentType.type().lower();
String typeCodecs = contentType.parameter(codecs());
// If the MIME type is missing or is not meaningful, try to figure it out from the URL.
if (type.isEmpty() || type == applicationOctetStream() || type == textPlain()) {
if (protocolIs(url, "data"))
type = mimeTypeFromDataURL(url);
else {
size_t pos = url.reverseFind('.');
if (pos != notFound) {
String extension = url.substring(pos + 1);
String mediaType = MIMETypeRegistry::getMediaMIMETypeForExtension(extension);
if (!mediaType.isEmpty())
type = mediaType;
}
}
}
m_url = url;
m_contentMIMEType = type;
m_contentTypeCodecs = typeCodecs;
loadWithNextMediaEngine(0);
}
示例3: load
bool MediaPlayer::load(const URL& url, const ContentType& contentType, const String& keySystem)
{
m_contentMIMEType = contentType.type().lower();
m_contentTypeCodecs = contentType.parameter(codecs());
m_url = url;
m_keySystem = keySystem.lower();
m_contentMIMETypeWasInferredFromExtension = false;
#if ENABLE(MEDIA_SOURCE)
m_mediaSource = 0;
#endif
// If the MIME type is missing or is not meaningful, try to figure it out from the URL.
if (m_contentMIMEType.isEmpty() || m_contentMIMEType == applicationOctetStream() || m_contentMIMEType == textPlain()) {
if (m_url.protocolIsData())
m_contentMIMEType = mimeTypeFromDataURL(m_url.string());
else {
String lastPathComponent = url.lastPathComponent();
size_t pos = lastPathComponent.reverseFind('.');
if (pos != notFound) {
String extension = lastPathComponent.substring(pos + 1);
String mediaType = MIMETypeRegistry::getMediaMIMETypeForExtension(extension);
if (!mediaType.isEmpty()) {
m_contentMIMEType = mediaType;
m_contentMIMETypeWasInferredFromExtension = true;
}
}
}
}
loadWithNextMediaEngine(0);
return m_currentMediaEngine;
}
示例4: substituer
void substituer(MimeEntity * mimeEntity, const string url, const string affectations, const string affectations_html) {
// Substitue _URL_ et _AFFECTATIONS_ dans toutes les parties text/plain et text/html
ContentType contentType = mimeEntity->header().contentType();
if (
contentType.type() == "text" and (
contentType.subtype() == "plain" or
contentType.subtype() == "html")
)
{
Body& body = mimeEntity->body();
string::size_type position;
while((position = body.find("_URL_")) != string::npos) {
body.replace(position, sizeof("_URL_") - 1, url);
}
while((position = body.find("_AFFECTATIONS_")) != string::npos) {
body.replace(position, sizeof("_AFFECTATIONS_") - 1, (contentType.subtype() == "html" ? affectations_html : affectations));
}
} else {
MimeEntityList::iterator sous_partie_iterator = mimeEntity->body().parts().begin(),
fin = mimeEntity->body().parts().end();
for(;sous_partie_iterator!=fin;++sous_partie_iterator) {
substituer(*sous_partie_iterator, url, affectations, affectations_html);
}
}
}
示例5: if
ContentType * Bodypart::contentType() const
{
ContentType * ct = header()->contentType();
if ( ct )
return ct;
if ( !parent() )
return 0;
ct = parent()->header()->contentType();
if ( ct ) {
if ( ct->type() == "multipart" ) {
ct = 0;
}
else if ( ct->type() == "message" && ct->subtype() == "rfc822" ) {
Bodypart * bp = parent()->children()->firstElement();
ct = bp->header()->contentType();
}
}
return ct;
}
示例6: supportsType
MediaPlayer::SupportsType MediaPlayer::supportsType(ContentType contentType)
{
String type = contentType.type();
String codecs = contentType.parameter("codecs");
MediaPlayerFactory* engine = chooseBestEngineForTypeAndCodecs(type, codecs);
if (!engine)
return IsNotSupported;
return engine->supportsTypeAndCodecs(type, codecs);
}
示例7: contentTransferEncoding
EString::Encoding Bodypart::contentTransferEncoding() const
{
ContentTransferEncoding * cte = header()->contentTransferEncoding();
if ( !cte && parent() ) {
ContentType * ct = parent()->header()->contentType();
if ( !ct || ( ct->type() != "multipart" &&
ct->type() != "message" ) )
cte = parent()->header()->contentTransferEncoding();
}
if ( cte )
return cte->encoding();
return EString::Binary;
}
示例8: load
bool MediaPlayer::load(const URL& url, const ContentType& contentType, MediaSourcePrivateClient* mediaSource)
{
ASSERT(!m_reloadTimer.isActive());
ASSERT(mediaSource);
m_mediaSource = mediaSource;
m_contentMIMEType = contentType.type().convertToASCIILowercase();
m_contentTypeCodecs = contentType.parameter(codecs());
m_url = url;
m_keySystem = emptyString();
m_contentMIMETypeWasInferredFromExtension = false;
loadWithNextMediaEngine(0);
return m_currentMediaEngine;
}
示例9: addSourceBuffer
MediaSourcePrivate::AddStatus MockMediaSourcePrivate::addSourceBuffer(const ContentType& contentType, RefPtr<SourceBufferPrivate>& outPrivate)
{
MediaEngineSupportParameters parameters;
parameters.isMediaSource = true;
parameters.type = contentType.type();
parameters.codecs = contentType.parameter(ASCIILiteral("codecs"));
if (MockMediaPlayerMediaSource::supportsType(parameters) == MediaPlayer::IsNotSupported)
return NotSupported;
m_sourceBuffers.append(MockSourceBufferPrivate::create(this));
outPrivate = m_sourceBuffers.last();
return Ok;
}
示例10: supportsType
MediaPlayer::SupportsType MediaPlayer::supportsType(const ContentType& contentType)
{
String type = contentType.type().lower();
String typeCodecs = contentType.parameter(codecs());
// 4.8.10.3 MIME types - The canPlayType(type) method must return the empty string if type is a type that the
// user agent knows it cannot render or is the type "application/octet-stream"
if (type == applicationOctetStream())
return IsNotSupported;
MediaPlayerFactory* engine = bestMediaEngineForTypeAndCodecs(type, typeCodecs);
if (!engine)
return IsNotSupported;
return engine->supportsTypeAndCodecs(type, typeCodecs);
}
示例11: if
void Message::fix8BitHeaderFields()
{
EString charset;
EString fallback = "us-ascii";
bool conflict = false;
List<Bodypart>::Iterator i( allBodyparts() );
while ( i ) {
ContentType * ct = 0;
if ( i->header() )
ct = i->header()->contentType();
if ( ct && ct->type() == "text" ) {
EString cs = ct->parameter( "charset" ).lower();
if ( cs == "windows-1252" )
cs = "iso-8859-1";
if ( cs.isEmpty() )
; // no conclusion from this part
else if ( charset.isEmpty() )
charset = cs; // use this charset...?
else if ( cs != charset )
conflict = true;
if ( ct && ct->subtype() == "html" )
fallback = "iso-8859-1";
}
++i;
}
Codec * c = 0;
if ( !charset.isEmpty() )
c = Codec::byName( charset );
else
c = Codec::byString( badFields( header() ) );
if ( !c )
c = Codec::byName( fallback );
if ( conflict || !c )
c = new AsciiCodec;
header()->fix8BitFields( c );
i = allBodyparts()->first();
while ( i ) {
if ( i->header() )
i->header()->fix8BitFields( c );
if ( i->message() && i->message()->header() )
i->message()->header()->fix8BitFields( c );
++i;
}
}
示例12: body
EString Message::body() const
{
EString r;
ContentType *ct = header()->contentType();
if ( ct && ct->type() == "multipart" ) {
appendMultipart( r );
}
else {
// XXX: Is this the right place to restore this linkage?
Bodypart * firstChild = children()->first();
if ( firstChild ) {
firstChild->setHeader( header() );
appendAnyPart( r, firstChild, ct );
}
}
return r;
}
示例13: load
void MediaPlayer::load(const String& url, const ContentType& contentType)
{
String type = contentType.type();
String codecs = contentType.parameter("codecs");
// if we don't know the MIME type, see if the extension can help
if (type.isEmpty() || type == "application/octet-stream" || type == "text/plain") {
int pos = url.reverseFind('.');
if (pos >= 0) {
String extension = url.substring(pos + 1);
String mediaType = MIMETypeRegistry::getMediaMIMETypeForExtension(extension);
if (!mediaType.isEmpty())
type = mediaType;
}
}
MediaPlayerFactory* engine = 0;
if (!type.isEmpty())
engine = chooseBestEngineForTypeAndCodecs(type, codecs);
// if we didn't find an engine that claims the MIME type, just use the first engine
if (!engine && !installedMediaEngines().isEmpty())
engine = installedMediaEngines()[0];
// don't delete and recreate the player unless it comes from a different engine
if (engine && m_currentMediaEngine != engine) {
m_currentMediaEngine = engine;
m_private.clear();
m_private.set(engine->constructor(this));
#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
m_private->setMediaPlayerProxy(m_playerProxy);
#endif
m_private->setAutobuffer(autobuffer());
m_private->setPreservesPitch(preservesPitch());
}
if (m_private)
m_private->load(url);
else
m_private.set(createNullMediaPlayer(this));
}
示例14: headerSummary
static void headerSummary( Header * h, int n )
{
EStringList l;
ContentType * ct = h->contentType();
if ( ct )
l.append( ct->type() + "/" + ct->subtype() );
ContentTransferEncoding * cte = h->contentTransferEncoding();
if ( cte ) {
EString s;
switch ( cte->encoding() ) {
case EString::QP:
s = "quoted-printable";
break;
case EString::Base64:
s = "base64";
break;
case EString::Uuencode:
s = "x-uuencode";
break;
case EString::Binary:
s = "7bit";
break;
}
l.append( s );
}
HeaderField * cd = h->field( HeaderField::ContentDescription );
if ( cd )
l.append( cd->rfc822( false ) );
if ( !l.isEmpty() ) {
spaces( n );
fprintf( stderr, "%s\n", l.join( ";" ).cstr() );
}
}
示例15: parse
void Message::parse( const EString & rfc2822 )
{
uint i = 0;
children()->clear();
setHeader( parseHeader( i, rfc2822.length(), rfc2822, Header::Rfc2822 ) );
header()->repair();
header()->repair( this, rfc2822.mid( i ) );
ContentType * ct = header()->contentType();
if ( ct && ct->type() == "multipart" ) {
Bodypart::parseMultipart( i, rfc2822.length(), rfc2822,
ct->parameter( "boundary" ),
ct->subtype() == "digest",
children(), this );
}
else {
Bodypart * bp = Bodypart::parseBodypart( i, rfc2822.length(), rfc2822,
header(), this );
children()->append( bp );
}
fix8BitHeaderFields();
header()->simplify();
EString e = d->error;
recomputeError();
if ( d->error.isEmpty() )
d->error = e;
if ( !d->error.isEmpty() )
return;
setAddressesFetched();
setHeadersFetched();
setBodiesFetched();
}