You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.6 KiB
127 lines
4.6 KiB
4 months ago
|
// Copyright 2014 The Chromium OS Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
#ifndef LIBBRILLO_BRILLO_MIME_UTILS_H_
|
||
|
#define LIBBRILLO_BRILLO_MIME_UTILS_H_
|
||
|
|
||
|
#include <string>
|
||
|
#include <utility>
|
||
|
#include <vector>
|
||
|
|
||
|
#include <base/compiler_specific.h>
|
||
|
#include <base/macros.h>
|
||
|
#include <brillo/brillo_export.h>
|
||
|
|
||
|
namespace brillo {
|
||
|
namespace mime {
|
||
|
|
||
|
namespace types {
|
||
|
// Main MIME type categories
|
||
|
BRILLO_EXPORT extern const char kApplication[]; // application
|
||
|
BRILLO_EXPORT extern const char kAudio[]; // audio
|
||
|
BRILLO_EXPORT extern const char kImage[]; // image
|
||
|
BRILLO_EXPORT extern const char kMessage[]; // message
|
||
|
BRILLO_EXPORT extern const char kMultipart[]; // multipart
|
||
|
BRILLO_EXPORT extern const char kText[]; // test
|
||
|
BRILLO_EXPORT extern const char kVideo[]; // video
|
||
|
} // namespace types
|
||
|
|
||
|
namespace parameters {
|
||
|
// Common MIME parameters
|
||
|
BRILLO_EXPORT extern const char kCharset[]; // charset=...
|
||
|
} // namespace parameters
|
||
|
|
||
|
namespace image {
|
||
|
// Common image MIME types
|
||
|
BRILLO_EXPORT extern const char kJpeg[]; // image/jpeg
|
||
|
BRILLO_EXPORT extern const char kPng[]; // image/png
|
||
|
BRILLO_EXPORT extern const char kBmp[]; // image/bmp
|
||
|
BRILLO_EXPORT extern const char kTiff[]; // image/tiff
|
||
|
BRILLO_EXPORT extern const char kGif[]; // image/gif
|
||
|
} // namespace image
|
||
|
|
||
|
namespace text {
|
||
|
// Common text MIME types
|
||
|
BRILLO_EXPORT extern const char kPlain[]; // text/plain
|
||
|
BRILLO_EXPORT extern const char kHtml[]; // text/html
|
||
|
BRILLO_EXPORT extern const char kXml[]; // text/xml
|
||
|
} // namespace text
|
||
|
|
||
|
namespace application {
|
||
|
// Common application MIME types
|
||
|
// application/octet-stream
|
||
|
BRILLO_EXPORT extern const char kOctet_stream[];
|
||
|
// application/json
|
||
|
BRILLO_EXPORT extern const char kJson[];
|
||
|
// application/x-www-form-urlencoded
|
||
|
BRILLO_EXPORT extern const char kWwwFormUrlEncoded[];
|
||
|
// application/x-protobuf
|
||
|
BRILLO_EXPORT extern const char kProtobuf[];
|
||
|
} // namespace application
|
||
|
|
||
|
namespace multipart {
|
||
|
// Common multipart MIME types
|
||
|
// multipart/form-data
|
||
|
BRILLO_EXPORT extern const char kFormData[];
|
||
|
// multipart/mixed
|
||
|
BRILLO_EXPORT extern const char kMixed[];
|
||
|
} // namespace multipart
|
||
|
|
||
|
using Parameters = std::vector<std::pair<std::string, std::string>>;
|
||
|
|
||
|
// Combine a MIME type, subtype and parameters into a MIME string.
|
||
|
// e.g. Combine("text", "plain", {{"charset", "utf-8"}}) will give:
|
||
|
// "text/plain; charset=utf-8"
|
||
|
BRILLO_EXPORT std::string Combine(
|
||
|
const std::string& type,
|
||
|
const std::string& subtype,
|
||
|
const Parameters& parameters = {}) WARN_UNUSED_RESULT;
|
||
|
|
||
|
// Splits a MIME string into type and subtype.
|
||
|
// "text/plain;charset=utf-8" => ("text", "plain")
|
||
|
BRILLO_EXPORT bool Split(const std::string& mime_string,
|
||
|
std::string* type,
|
||
|
std::string* subtype);
|
||
|
|
||
|
// Splits a MIME string into type, subtype, and parameters.
|
||
|
// "text/plain;charset=utf-8" => ("text", "plain", {{"charset","utf-8"}})
|
||
|
BRILLO_EXPORT bool Split(const std::string& mime_string,
|
||
|
std::string* type,
|
||
|
std::string* subtype,
|
||
|
Parameters* parameters);
|
||
|
|
||
|
// Returns the MIME type from MIME string.
|
||
|
// "text/plain;charset=utf-8" => "text"
|
||
|
BRILLO_EXPORT std::string GetType(const std::string& mime_string);
|
||
|
|
||
|
// Returns the MIME sub-type from MIME string.
|
||
|
// "text/plain;charset=utf-8" => "plain"
|
||
|
BRILLO_EXPORT std::string GetSubtype(const std::string& mime_string);
|
||
|
|
||
|
// Returns the MIME parameters from MIME string.
|
||
|
// "text/plain;charset=utf-8" => {{"charset","utf-8"}}
|
||
|
BRILLO_EXPORT Parameters GetParameters(const std::string& mime_string);
|
||
|
|
||
|
// Removes parameters from a MIME string
|
||
|
// "text/plain;charset=utf-8" => "text/plain"
|
||
|
BRILLO_EXPORT std::string RemoveParameters(
|
||
|
const std::string& mime_string) WARN_UNUSED_RESULT;
|
||
|
|
||
|
// Appends a parameter to a MIME string.
|
||
|
// "text/plain" => "text/plain; charset=utf-8"
|
||
|
BRILLO_EXPORT std::string AppendParameter(
|
||
|
const std::string& mime_string,
|
||
|
const std::string& paramName,
|
||
|
const std::string& paramValue) WARN_UNUSED_RESULT;
|
||
|
|
||
|
// Returns the value of a parameter on a MIME string (empty string if missing).
|
||
|
// ("text/plain;charset=utf-8","charset") => "utf-8"
|
||
|
BRILLO_EXPORT std::string GetParameterValue(const std::string& mime_string,
|
||
|
const std::string& paramName);
|
||
|
|
||
|
} // namespace mime
|
||
|
} // namespace brillo
|
||
|
|
||
|
#endif // LIBBRILLO_BRILLO_MIME_UTILS_H_
|