metaproxy  1.21.0
Classes | Public Member Functions | Private Attributes | List of all members
metaproxy_1::filter::HttpRewrite1 Class Reference

#include <filter_http_rewrite1.hpp>

Inheritance diagram for metaproxy_1::filter::HttpRewrite1:
Inheritance graph
Collaboration diagram for metaproxy_1::filter::HttpRewrite1:
Collaboration graph

Classes

class  Rep
 
class  Rule
 

Public Member Functions

 HttpRewrite1 ()
 
 ~HttpRewrite1 ()
 
void process (metaproxy_1::Package &package) const
 
void configure (const xmlNode *ptr, bool test_only, const char *path)
 

Private Attributes

boost::scoped_ptr< Repm_p
 

Detailed Description

Definition at line 28 of file filter_http_rewrite1.hpp.

Constructor & Destructor Documentation

◆ HttpRewrite1()

mp::filter::HttpRewrite1::HttpRewrite1 ( )

Definition at line 58 of file filter_http_rewrite1.cpp.

58  : m_p(new Rep)
59 {
60 }

◆ ~HttpRewrite1()

mp::filter::HttpRewrite1::~HttpRewrite1 ( )

Definition at line 62 of file filter_http_rewrite1.cpp.

63 {
64 }

Member Function Documentation

◆ configure()

void mp::filter::HttpRewrite1::configure ( const xmlNode *  ptr,
bool  test_only,
const char *  path 
)

Definition at line 120 of file filter_http_rewrite1.cpp.

122 {
123  for (ptr = ptr->children; ptr; ptr = ptr->next)
124  {
125  if (ptr->type != XML_ELEMENT_NODE)
126  continue;
127  else if (!strcmp((const char *) ptr->name, "replace"))
128  {
129  HttpRewrite1::Rule rule;
130 
131  const struct _xmlAttr *attr;
132  for (attr = ptr->properties; attr; attr = attr->next)
133  {
134  if (!strcmp((const char *) attr->name, "pattern"))
135  rule.pattern = mp::xml::get_text(attr->children);
136  else if (!strcmp((const char *) attr->name, "replacement"))
137  rule.replacement = mp::xml::get_text(attr->children);
138  else if (!strcmp((const char *) attr->name, "mode"))
139  rule.mode = mp::xml::get_text(attr->children);
140  else if (!strcmp((const char *) attr->name, "content-type"))
141  rule.content_type = mp::xml::get_text(attr->children);
142  else
143  throw mp::filter::FilterException
144  ("Bad attribute "
145  + std::string((const char *) attr->name)
146  + " in replace section of http_rewrite1");
147  }
148  if (rule.pattern.length() > 0)
149  m_p->rules.push_back(rule);
150  }
151  else
152  {
153  throw mp::filter::FilterException
154  ("Bad element "
155  + std::string((const char *) ptr->name)
156  + " in http_rewrite1 filter");
157  }
158  }
159 }

References metaproxy_1::filter::HttpRewrite1::Rule::content_type, metaproxy_1::filter::HttpRewrite1::Rule::mode, metaproxy_1::filter::HttpRewrite1::Rule::pattern, and metaproxy_1::filter::HttpRewrite1::Rule::replacement.

◆ process()

void mp::filter::HttpRewrite1::process ( metaproxy_1::Package &  package) const

Definition at line 97 of file filter_http_rewrite1.cpp.

98 {
99  Z_GDU *gdu_req = package.request().get();
100  if (gdu_req && gdu_req->which == Z_GDU_HTTP_Request)
101  {
102  Z_HTTP_Request *hreq = gdu_req->u.HTTP_Request;
103 
104  assert(hreq); // not changing request (such as POST content)
105  package.move();
106 
107  Z_GDU *gdu_res = package.response().get();
108  Z_HTTP_Response *hres = gdu_res->u.HTTP_Response;
109  if (hres)
110  {
111  mp::odr o;
112  m_p->rewrite_response(o, hres);
113  package.response() = gdu_res;
114  }
115  }
116  else
117  package.move();
118 }

Member Data Documentation

◆ m_p

boost::scoped_ptr<Rep> metaproxy_1::filter::HttpRewrite1::m_p
private

Definition at line 31 of file filter_http_rewrite1.hpp.


The documentation for this class was generated from the following files: