00001 /* 00002 * Copyright 2009 DreamLab Onet.pl Sp. z o.o. 00003 * Licensed under the Apache License, Version 2.0 (the "License"); 00004 * you may not use this file except in compliance with the License. 00005 * You may obtain a copy of the License at 00006 * 00007 * http://www.apache.org/licenses/LICENSE-2.0 00008 * 00009 * Unless required by applicable law or agreed to in writing, software 00010 * distributed under the License is distributed on an "AS IS" BASIS, 00011 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00012 * See the License for the specific language governing permissions and 00013 * limitations under the License. 00014 * 00015 * 00016 * Authors: 00017 * Przemyslaw Gajda, email: quermit(malpa)gmail.com 00018 * Piotr Janik, email: janik.piotrek(malpa)gmail.com 00019 * malpa = @ 00020 */ 00021 00022 #ifndef NGX_HTTP_XXSLT_SELECTOR_H_ 00023 #define NGX_HTTP_XXSLT_SELECTOR_H_ 00024 00025 #include <ngx_config.h> 00026 #include <ngx_core.h> 00027 #include <ngx_http.h> 00028 #include <libxml/tree.h> 00029 #include <libxml/parser.h> 00030 00031 #include "ngx_http_xxslt_filter_module.h" 00032 #include "ngx_http_xxslt_udata.h" 00033 #include "ngx_http_xxslt_parse.h" 00034 00035 #define NGX_HTTP_XXSLT_MATCH_OPEN 1 00036 #define NGX_HTTP_XXSLT_MATCH_CLOSE 2 00037 00038 #define NGX_HTTP_XXSLT_SELECTOR_UNKNOWN 3 00039 #define NGX_HTTP_XXSLT_SELECTOR_PARSE 5 00040 00041 struct ngx_http_xxslt_out_data_s; 00042 00044 typedef struct { 00046 u_char *open; 00048 ngx_int_t o_pos; 00050 ngx_int_t o_len; 00051 00053 u_char *close; 00055 ngx_int_t c_pos; 00057 ngx_int_t c_len; 00058 00060 ngx_chain_t *cl_before; 00062 u_char *buf_before; 00063 00065 ngx_int_t state; 00066 } ngx_http_xxslt_selector_match_t; 00067 00069 typedef struct { 00071 ngx_http_request_t *r; 00072 00074 ngx_int_t id_data; 00076 ngx_int_t select_mode; 00078 ngx_int_t data_type; 00080 ngx_flag_t async; 00081 00083 struct ngx_http_xxslt_out_data_s *act_out_data_unknown; 00085 struct ngx_http_xxslt_out_data_s *act_out_data_parse; 00086 00088 ngx_http_xxslt_selector_match_t *match_data; 00090 ngx_chain_t *backup_in; 00091 00093 xmlDocPtr includes; /* pointer to xml file data */ 00094 } ngx_http_xxslt_selector_data_t; 00095 00096 // FUNS 00097 00098 ngx_http_xxslt_selector_data_t * 00099 ngx_http_xxslt_selector_init(ngx_http_request_t *r); 00100 ngx_int_t 00101 ngx_http_xxslt_selector_add_data_chunk(ngx_http_xxslt_selector_data_t *sel_ctx, ngx_chain_t *in); 00102 void 00103 ngx_http_xxslt_selector_log_chain(ngx_http_request_t *r, ngx_chain_t *cl, u_char *label); 00104 void 00105 ngx_http_xxslt_selector_cleanup(ngx_http_xxslt_selector_data_t *sel_ctx); 00106 #endif /* NGX_HTTP_XXSLT_SELECTOR_H_ */