/usr/include/sipxtapi/net/HttpBody.h is in libsipxtapi-dev 3.3.0~test17-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | //
// Copyright (C) 2005-2008 SIPez LLC.
// Licensed to SIPfoundry under a Contributor Agreement.
//
// Copyright (C) 2004-2008 SIPfoundry Inc.
// Licensed by SIPfoundry under the LGPL license.
//
// Copyright (C) 2004-2006 Pingtel Corp. All rights reserved.
// Licensed to SIPfoundry under a Contributor Agreement.
//
// $$
///////////////////////////////////////////////////////////////////////////////
// Author: Dan Petrie (dpetrie AT SIPez DOT com)
#ifndef _HttpBody_h_
#define _HttpBody_h_
// SYSTEM INCLUDES
//#include <...>
// APPLICATION INCLUDES
#include <utl/UtlString.h>
#include <utl/UtlDList.h>
// DEFINES
#define CONTENT_TYPE_TEXT_PLAIN "text/plain"
#define CONTENT_TYPE_TEXT_HTML "text/html"
#define CONTENT_SMIME_PKCS7 "application/pkcs7-mime"
#define CONTENT_TYPE_PIDF "application/pidf+xml"
#define CONTENT_TYPE_MULTIPART "multipart/"
#define CONTENT_TYPE_MULTIPART_RELATED "multipart/related"
#define CONTENT_TYPE_CONTENT_INDIRECTION "message/external-body"
#define DIALOG_EVENT_CONTENT_TYPE "application/dialog-info+xml"
#define MULTIPART_BOUNDARY_PARAMETER "boundary"
#define MAX_HTTP_BODY_PARTS 20
// MACROS
// EXTERNAL FUNCTIONS
// EXTERNAL VARIABLES
// CONSTANTS
// STRUCTS
// TYPEDEFS
// FORWARD DECLARATIONS
class MimeBodyPart;
//! class to contain an HTTP body
/*! This is the base class and container for all HTTP (SIP, etc.)
* message bodies. This includes multipart MIME bodies, single
* part MIME and specific MIME types. The HttpBody is essentially
* a container for a blob.
*/
class HttpBody : public UtlString
{
friend class HttpBodyMultipart;
/* //////////////////////////// PUBLIC //////////////////////////////////// */
public:
enum BodyClassTypes
{
UNKNOWN_BODY_CLASS = 0,
HTTP_BODY_CLASS,
SMIME_BODY_CLASS,
SDP_BODY_CLASS,
PIDF_BODY_CLASS,
DIALOG_EVENT_BODY_CLASS
};
/* ============================ CREATORS ================================== */
HttpBody(const char* bytes = NULL,
int length = -1,
const char* contentType = NULL);
//: Construct an HttpBody from a bunch of bytes
HttpBody(const char* contentType);
//: Construct a multipart HttpBody with zero parts.
// contentType should have no "boundary" parameter.
HttpBody(const HttpBody& rHttpBody);
//:Copy constructor
virtual
~HttpBody();
//:Destructor
/* ============================ MANIPULATORS ============================== */
HttpBody& operator=(const HttpBody& rhs);
//:Assignment operator
//! Copy the source HttpBody using the correct derived class constructor
static HttpBody* copyBody(const HttpBody& sourceBody);
//! Pseudo body factory
static HttpBody* createBody(const char* bodyBytes,
int bodyBytesLength,
const char* contentType,
const char* contentEncoding);
//! Append a multipart body part to an existing multiparty body.
void appendBodyPart(const HttpBody& body,
const UtlDList& parameters);
/* ============================ ACCESSORS ================================= */
virtual int getLength() const;
// Note: for convenience, bytes is null terminated
// However depending upon the content type, the body may
// contain more than one null character.
// *bytes != NULL, even if *length == 0.
virtual void getBytes(const char** bytes, int* length) const;
virtual void getBytes(UtlString* bytes, int* length) const;
virtual const char* getBytes() const;
UtlBoolean getMultipartBytes(int partIndex,
const char** bytes,
int* length,
int* start) const;
const MimeBodyPart* getMultipart(int partIndex) const;
int getMultipartCount() const;
BodyClassTypes getClassType() const;
//! Get the multipart boundary string.
// Valid while HttpBody exists and is not modified.
const char* getMultipartBoundary() const;
//! Get the content type string.
// Valid while HttpBody exists and is not modified.
const char* getContentType() const;
/* ============================ INQUIRY =================================== */
UtlBoolean isMultipart() const;
/* //////////////////////////// PROTECTED ///////////////////////////////// */
protected:
int bodyLength;
UtlString mBody;
UtlString mMultipartBoundary;
int mBodyPartCount;
MimeBodyPart* mpBodyParts[MAX_HTTP_BODY_PARTS];
BodyClassTypes mClassType;
/* //////////////////////////// PRIVATE /////////////////////////////////// */
private:
// The counter for generating boundary values.
static unsigned boundaryCounter;
// Generate the next boundary value.
static void nextBoundary(UtlString& boundary);
};
// Carrier class to provide a constructor that would otherwise conflict
// with an existing constructor for HttpBody.
class HttpBodyMultipart : public HttpBody
{
public:
HttpBodyMultipart(const char* contentType);
//: Construct a multipart HttpBody with zero parts.
// contentType should have no "boundary" parameter.
};
/* ============================ INLINE METHODS ============================ */
#endif // _HttpBody_h_
|