正在显示
20 个修改的文件
包含
280 行增加
和
204 行删除
... | ... | @@ -135,6 +135,9 @@ std::map<std::string, DmpMapLayer*> DmpProject::mapLayers() const |
135 | 135 | |
136 | 136 | DmpMapLayer *DmpProject::getLayer(const std::string &layerName) const |
137 | 137 | { |
138 | + if(layerName.empty()){ | |
139 | + return getLayer(); | |
140 | + } | |
138 | 141 | std::string name = boost::to_upper_copy(layerName); |
139 | 142 | std::map<std::string, DmpMapLayer*>::const_iterator iter = mapLayers_.find(name); |
140 | 143 | if (iter != mapLayers_.end()) |
... | ... | @@ -145,4 +148,17 @@ DmpMapLayer *DmpProject::getLayer(const std::string &layerName) const |
145 | 148 | { |
146 | 149 | return nullptr; |
147 | 150 | } |
151 | +} | |
152 | + | |
153 | +DmpMapLayer *DmpProject::getLayer() const | |
154 | +{ | |
155 | + std::map<std::string, DmpMapLayer*>::const_iterator iter = mapLayers_.begin(); | |
156 | + if (iter != mapLayers_.end()) | |
157 | + { | |
158 | + return iter->second; | |
159 | + } | |
160 | + else | |
161 | + { | |
162 | + return nullptr; | |
163 | + } | |
148 | 164 | } |
\ No newline at end of file | ... | ... |
... | ... | @@ -29,6 +29,7 @@ class CORE_EXPORT DmpProject |
29 | 29 | DmpCoordinateReferenceSystem crs() const; |
30 | 30 | std::map<std::string, DmpMapLayer*> mapLayers() const; |
31 | 31 | DmpMapLayer* getLayer(const std::string &layerName) const; |
32 | + DmpMapLayer* getLayer()const; | |
32 | 33 | private: |
33 | 34 | static DmpProject *project_; |
34 | 35 | std::string projectName_; | ... | ... |
... | ... | @@ -18,7 +18,7 @@ DmpApacheServerRequest::DmpApacheServerRequest(FCGX_ParamArray& evnp,FCGX_Stream |
18 | 18 | { |
19 | 19 | if (strcmp(med,"POST") == 0) |
20 | 20 | { |
21 | - set_method(POST_METHOD); | |
21 | + setMethod(POST_METHOD); | |
22 | 22 | //获取请求中URL携带的参数 |
23 | 23 | query_ = FCGX_GetParam("QUERY_STRING", evnp); |
24 | 24 | //获取POST请求携带的参数长度 |
... | ... | @@ -44,18 +44,18 @@ DmpApacheServerRequest::DmpApacheServerRequest(FCGX_ParamArray& evnp,FCGX_Stream |
44 | 44 | { |
45 | 45 | //Get请求方式 |
46 | 46 | query_ = FCGX_GetParam("QUERY_STRING", evnp); |
47 | - set_method(GET_METHOD); | |
47 | + setMethod(GET_METHOD); | |
48 | 48 | } |
49 | - set_query(query_); | |
50 | - set_path(uri); | |
49 | + setQuery(query_); | |
50 | + setPath(uri); | |
51 | 51 | //添加请求头 |
52 | - SetParameter("Accept", FCGX_GetParam("HTTP_ACCEPT", evnp)); | |
53 | - SetParameter("Accept-Encoding", FCGX_GetParam("HTTP_ACCEPT_ENCODING", evnp)); | |
54 | - SetParameter("Accept-Language", FCGX_GetParam("HTTP_ACCEPT_LANGUAGE", evnp)); | |
52 | + setParameter("Accept", FCGX_GetParam("HTTP_ACCEPT", evnp)); | |
53 | + setParameter("Accept-Encoding", FCGX_GetParam("HTTP_ACCEPT_ENCODING", evnp)); | |
54 | + setParameter("Accept-Language", FCGX_GetParam("HTTP_ACCEPT_LANGUAGE", evnp)); | |
55 | 55 | //SetParameter("Cache-Control", FCGX_GetParam("HTTP_CACHE_CONTROL", evnp)); |
56 | - SetParameter("Connection", FCGX_GetParam("HTTP_CONNECTION", evnp)); | |
57 | - SetParameter("Host", FCGX_GetParam("HTTP_HOST", evnp)); | |
58 | - SetParameter("User-Agent", FCGX_GetParam("HTTP_USER_AGENT", evnp)); | |
56 | + setParameter("Connection", FCGX_GetParam("HTTP_CONNECTION", evnp)); | |
57 | + setParameter("Host", FCGX_GetParam("HTTP_HOST", evnp)); | |
58 | + setParameter("User-Agent", FCGX_GetParam("HTTP_USER_AGENT", evnp)); | |
59 | 59 | |
60 | 60 | } |
61 | 61 | |
... | ... | @@ -69,7 +69,7 @@ DmpApacheServerRequest::DmpApacheServerRequest(CgiENV &env) |
69 | 69 | { |
70 | 70 | if (strcmp(med,"POST") == 0) |
71 | 71 | { |
72 | - set_method(POST_METHOD); | |
72 | + setMethod(POST_METHOD); | |
73 | 73 | //获取请求中URL携带的参数 |
74 | 74 | query_ = env.QUERY_STRING; |
75 | 75 | //获取POST请求携带的参数长度 |
... | ... | @@ -97,18 +97,18 @@ DmpApacheServerRequest::DmpApacheServerRequest(CgiENV &env) |
97 | 97 | { |
98 | 98 | //Get请求方式 |
99 | 99 | query_ = env.QUERY_STRING; |
100 | - set_method(GET_METHOD); | |
100 | + setMethod(GET_METHOD); | |
101 | 101 | } |
102 | 102 | } |
103 | - set_query(query_); | |
104 | - set_path(env.REQUEST_URI); | |
103 | + setQuery(query_); | |
104 | + setPath(env.REQUEST_URI); | |
105 | 105 | //添加请求头 |
106 | - SetParameter("Accept", env.HTTP_ACCEPT); | |
107 | - SetParameter("Accept-Encoding", env.HTTP_ACCEPT_ENCODING); | |
106 | + setParameter("Accept", env.HTTP_ACCEPT); | |
107 | + setParameter("Accept-Encoding", env.HTTP_ACCEPT_ENCODING); | |
108 | 108 | //SetParameter("Accept-Language", env.HTTP_ACCEPT_LANGUAGE); |
109 | 109 | //SetParameter("Connection", env.HTTP_CONNECTION); |
110 | - SetParameter("Host", env.HTTP_HOST); | |
111 | - SetParameter("User-Agent", env.HTTP_USER_AGENT); | |
110 | + setParameter("Host", env.HTTP_HOST); | |
111 | + setParameter("User-Agent", env.HTTP_USER_AGENT); | |
112 | 112 | |
113 | 113 | |
114 | 114 | } | ... | ... |
... | ... | @@ -50,7 +50,7 @@ bool DmpMainServer::Init() |
50 | 50 | serverManager_->init(module_path_); |
51 | 51 | |
52 | 52 | #ifdef HAVE_SERVER_PYTHON_PLUGINS |
53 | - InitPython(); | |
53 | + InitPython(); | |
54 | 54 | #endif |
55 | 55 | |
56 | 56 | initialized_ = true; |
... | ... | @@ -60,7 +60,7 @@ bool DmpMainServer::Init() |
60 | 60 | |
61 | 61 | void DmpMainServer::HandleRequest(DmpServerRequest &request, DmpServerResponse &response) |
62 | 62 | { |
63 | - LOGGER_DEBUG("DmpMainServer: HandleRequest"); | |
63 | + LOGGER_DEBUG("DmpMainServer: HandleRequest"); | |
64 | 64 | DmpFilterResponseDecorator responseDecorator(server_interface_->Filters(), response); |
65 | 65 | DmpRequestHandler requestHandler(request, response); |
66 | 66 | try |
... | ... | @@ -69,7 +69,7 @@ void DmpMainServer::HandleRequest(DmpServerRequest &request, DmpServerResponse & |
69 | 69 | } |
70 | 70 | catch (std::exception &ex) |
71 | 71 | { |
72 | - LOGGER_ERROR("Parse input exception: "); | |
72 | + LOGGER_ERROR("Parse input exception: "); | |
73 | 73 | } |
74 | 74 | |
75 | 75 | // Set the request handler into the interface for plugins to manipulate it |
... | ... | @@ -84,38 +84,49 @@ void DmpMainServer::HandleRequest(DmpServerRequest &request, DmpServerResponse & |
84 | 84 | response.sendError(500, "Internal Server Error"); |
85 | 85 | LOGGER_ERROR(ex.what()); |
86 | 86 | } |
87 | - const DmpServerParameters params = request.ServerParameters(); | |
87 | + // const DmpServerParameters params = request.serverParameters(); | |
88 | 88 | std::shared_ptr<DmpServerApi> api = nullptr; |
89 | - if ( params.Service().empty()) | |
89 | + // if (params.Service().empty()) | |
90 | + // { | |
91 | + // if (api = serverManager_->apiForRequest(request)) | |
92 | + // { | |
93 | + // DmpServerApiContext context{&request, &responseDecorator, serverManager_}; | |
94 | + // api->executeRequest(context); | |
95 | + // } | |
96 | + // else | |
97 | + // { | |
98 | + // LOGGER_DEBUG("DmpMainServer: getCapabilities"); | |
99 | + // std::string capsJson = serverManager_->getCapabilities(); | |
100 | + // response.writeJson(capsJson); | |
101 | + // } | |
102 | + // } | |
103 | + | |
104 | + std::shared_ptr<DmpServer> server = serverManager_->serverForRequest(request); | |
105 | + if (server) | |
90 | 106 | { |
91 | - if(api = serverManager_->apiForRequest(request)) { | |
92 | - DmpServerApiContext context {&request, &responseDecorator, serverManager_}; | |
93 | - api->executeRequest(context); | |
107 | + try | |
108 | + { | |
109 | + server->executeRequest(request, responseDecorator); | |
94 | 110 | } |
95 | - else { | |
96 | - LOGGER_DEBUG("DmpMainServer: getCapabilities"); | |
97 | - std::string capsJson = serverManager_->getCapabilities(); | |
98 | - response.writeJson(capsJson); | |
111 | + catch (std::exception ex) | |
112 | + { | |
113 | + | |
114 | + response.sendError(500, "Internal Server Error"); | |
115 | + LOGGER_ERROR(ex.what()); | |
99 | 116 | } |
100 | 117 | } |
101 | - else | |
118 | + else if (api = serverManager_->apiForRequest(request)) | |
102 | 119 | { |
103 | - std::shared_ptr<DmpServer> server = serverManager_->serverForRequest(request); | |
104 | - if (server) { | |
105 | - try { | |
106 | - server->executeRequest(request,responseDecorator); | |
107 | - } | |
108 | - catch (std::exception ex) { | |
109 | - | |
110 | - response.sendError(500, "Internal Server Error"); | |
111 | - LOGGER_ERROR(ex.what()); | |
112 | - } | |
113 | - } | |
114 | - else { | |
115 | - std::string capsJson = serverManager_->getCapabilities(); | |
116 | - response.writeJson(capsJson); | |
117 | - } | |
120 | + DmpServerApiContext context{&request, &responseDecorator, serverManager_}; | |
121 | + api->executeRequest(context); | |
118 | 122 | } |
123 | + else | |
124 | + { | |
125 | + LOGGER_DEBUG("DmpMainServer: getCapabilities"); | |
126 | + std::string capsJson = serverManager_->getCapabilities(); | |
127 | + response.writeJson(capsJson); | |
128 | + } | |
129 | + | |
119 | 130 | |
120 | 131 | try |
121 | 132 | { | ... | ... |
... | ... | @@ -32,7 +32,7 @@ void DmpRequestHandler::ParseInput() |
32 | 32 | ParameterMap DmpRequestHandler::Parameters() const |
33 | 33 | { |
34 | 34 | ParameterMap params; |
35 | - for (auto &item : request_.ServerParameters().Parameters()) { | |
35 | + for (auto &item : request_.serverParameters().parameters()) { | |
36 | 36 | std::map<std::string, std::string>::iterator iter; |
37 | 37 | params[item.first] = item.second; |
38 | 38 | } |
... | ... | @@ -41,7 +41,7 @@ ParameterMap DmpRequestHandler::Parameters() const |
41 | 41 | |
42 | 42 | void DmpRequestHandler::SetParameter(const std::string &name, const std::string &value) |
43 | 43 | { |
44 | - request_.SetParameter(name, value); | |
44 | + request_.setParameter(name, value); | |
45 | 45 | } |
46 | 46 | |
47 | 47 | ParameterMap DmpRequestHandler::RequestHeaders() const | ... | ... |
... | ... | @@ -26,7 +26,7 @@ public: |
26 | 26 | virtual std::string path() const = 0; |
27 | 27 | virtual std::string capability() const = 0; |
28 | 28 | virtual bool accept(const std::string &url); |
29 | - virtual void executeRequest(const DmpServerRequest &request, DmpServerResponse &response) = 0; | |
29 | + virtual void executeRequest(DmpServerRequest &request, DmpServerResponse &response) = 0; | |
30 | 30 | |
31 | 31 | virtual bool publish(const std::string &serviceName, unsigned int capability, const DmpProject &project); |
32 | 32 | virtual bool remove(const std::string &serviceName); | ... | ... |
... | ... | @@ -15,17 +15,17 @@ DmpServerParameters::DmpServerParameters() |
15 | 15 | { |
16 | 16 | } |
17 | 17 | |
18 | -DmpServerParameters::DmpServerParameters(const std::string &query_string) | |
18 | +DmpServerParameters::DmpServerParameters(const std::string &queryString) | |
19 | 19 | { |
20 | - SetQueryString(query_string); | |
20 | + setQueryString(queryString); | |
21 | 21 | } |
22 | 22 | |
23 | -void DmpServerParameters::SetQueryString(const std::string &query_string) | |
23 | +void DmpServerParameters::setQueryString(const std::string &queryString) | |
24 | 24 | { |
25 | - params_ = QueryString::parse(query_string); | |
25 | + params_ = QueryString::parse(queryString); | |
26 | 26 | } |
27 | 27 | |
28 | -std::string DmpServerParameters::Service() const | |
28 | +std::string DmpServerParameters::service() const | |
29 | 29 | { |
30 | 30 | std::map<std::string, std::string>::const_iterator iter = params_.find("Service"); |
31 | 31 | if (iter != params_.end()) { |
... | ... | @@ -35,7 +35,7 @@ std::string DmpServerParameters::Service() const |
35 | 35 | } |
36 | 36 | } |
37 | 37 | |
38 | -std::string DmpServerParameters::Request() const | |
38 | +std::string DmpServerParameters::request() const | |
39 | 39 | { |
40 | 40 | std::map<std::string, std::string>::const_iterator iter = params_.find("request"); |
41 | 41 | if (iter != params_.end()) { |
... | ... | @@ -46,7 +46,7 @@ std::string DmpServerParameters::Request() const |
46 | 46 | } |
47 | 47 | } |
48 | 48 | |
49 | -std::string DmpServerParameters::Version() const | |
49 | +std::string DmpServerParameters::version() const | |
50 | 50 | { |
51 | 51 | std::map<std::string, std::string>::const_iterator iter = params_.find("version"); |
52 | 52 | if (iter != params_.end()) { |
... | ... | @@ -57,17 +57,17 @@ std::string DmpServerParameters::Version() const |
57 | 57 | } |
58 | 58 | } |
59 | 59 | |
60 | -void DmpServerParameters::Clear() | |
60 | +void DmpServerParameters::clear() | |
61 | 61 | { |
62 | 62 | params_.clear(); |
63 | 63 | } |
64 | 64 | |
65 | -void DmpServerParameters::Add(const std::string &key, const std::string &value) | |
65 | +void DmpServerParameters::add(const std::string &key, const std::string &value) | |
66 | 66 | { |
67 | 67 | params_[key] = value; |
68 | 68 | } |
69 | 69 | |
70 | -void DmpServerParameters::Remove(const std::string &key) | |
70 | +void DmpServerParameters::remove(const std::string &key) | |
71 | 71 | { |
72 | 72 | std::map<std::string, std::string>::iterator iter; |
73 | 73 | iter = params_.find(key); |
... | ... | @@ -76,7 +76,7 @@ void DmpServerParameters::Remove(const std::string &key) |
76 | 76 | } |
77 | 77 | } |
78 | 78 | |
79 | -void DmpServerParameters::GetValue(const std::string &key, std::string &value) | |
79 | +void DmpServerParameters::getValue(const std::string &key, std::string &value) | |
80 | 80 | { |
81 | 81 | std::map<std::string, std::string>::iterator iter; |
82 | 82 | iter = params_.find(key); | ... | ... |
... | ... | @@ -29,20 +29,20 @@ class SERVER_EXPORT DmpServerParameters |
29 | 29 | { |
30 | 30 | public: |
31 | 31 | DmpServerParameters(); |
32 | - DmpServerParameters(const std::string &query_string); | |
32 | + DmpServerParameters(const std::string &queryString); | |
33 | 33 | virtual ~DmpServerParameters() {}; |
34 | 34 | |
35 | - void Add(const std::string &key, const std::string &value); | |
36 | - void Remove(const std::string &key); | |
37 | - void GetValue(const std::string &key, std::string &value); | |
38 | - void Clear(); | |
35 | + void add(const std::string &key, const std::string &value); | |
36 | + void remove(const std::string &key); | |
37 | + void getValue(const std::string &key, std::string &value); | |
38 | + void clear(); | |
39 | 39 | |
40 | - CIMap Parameters() const { return params_ ;} | |
41 | - void SetQueryString(const std::string &query_string); | |
40 | + CIMap parameters() const { return params_ ;} | |
41 | + void setQueryString(const std::string &queryString); | |
42 | 42 | |
43 | - std::string Service() const; | |
44 | - std::string Request() const; | |
45 | - std::string Version() const; | |
43 | + std::string service() const; | |
44 | + std::string request() const; | |
45 | + std::string version() const; | |
46 | 46 | |
47 | 47 | protected: |
48 | 48 | CIMap params_; | ... | ... |
... | ... | @@ -18,6 +18,7 @@ |
18 | 18 | |
19 | 19 | DmpServerRequest::DmpServerRequest() |
20 | 20 | { |
21 | + isRestful_ = false; | |
21 | 22 | } |
22 | 23 | |
23 | 24 | DmpServerRequest::DmpServerRequest(const std::string &url, Method method, const Headers &headers) |
... | ... | @@ -25,40 +26,43 @@ DmpServerRequest::DmpServerRequest(const std::string &url, Method method, const |
25 | 26 | ,method_(method) |
26 | 27 | ,headers_(headers) |
27 | 28 | { |
29 | + isRestful_ = false; | |
28 | 30 | } |
29 | 31 | |
30 | -void DmpServerRequest::set_url(const std::string &url) | |
32 | +void DmpServerRequest::setUrl(const std::string &url) | |
31 | 33 | { |
32 | 34 | url_ = url; |
33 | - if (!ParseUrl(url_,protocol_,domain_,port_,path_,query_)) { | |
35 | + if (!parseUrl(url_,protocol_,domain_,port_,path_,query_)) { | |
34 | 36 | LOGGER_ERROR("非法的URL!"); |
35 | 37 | return; |
36 | 38 | } |
37 | - set_query(query_); | |
39 | + setQuery(query_); | |
38 | 40 | } |
39 | 41 | |
40 | -void DmpServerRequest::set_query(const std::string &query_string) | |
42 | +void DmpServerRequest::setQuery(const std::string &queryString) | |
41 | 43 | { |
42 | - query_ = query_string; | |
43 | - params_.SetQueryString(query_); | |
44 | + query_ = queryString; | |
45 | + if(!isRestful()) { | |
46 | + params_.setQueryString(query_); | |
47 | + } | |
44 | 48 | } |
45 | 49 | |
46 | -void DmpServerRequest::set_method(Method method) | |
50 | +void DmpServerRequest::setMethod(Method method) | |
47 | 51 | { |
48 | 52 | method_ = method; |
49 | 53 | } |
50 | 54 | |
51 | -void DmpServerRequest::SetParameter(const std::string &name, const std::string &value) | |
55 | +void DmpServerRequest::setParameter(const std::string &name, const std::string &value) | |
52 | 56 | { |
53 | - params_.Add(name, value); | |
57 | + params_.add(name, value); | |
54 | 58 | } |
55 | 59 | |
56 | -bool DmpServerRequest::ParseUrl(const std::string& url, | |
60 | +bool DmpServerRequest::parseUrl(const std::string& url, | |
57 | 61 | std::string &protocol, |
58 | 62 | std::string &domain, |
59 | 63 | std::string &port, |
60 | 64 | std::string &path, |
61 | - std::string &query_string) | |
65 | + std::string &queryString) | |
62 | 66 | { |
63 | 67 | if (url.empty()) { |
64 | 68 | return false; |
... | ... | @@ -71,13 +75,13 @@ bool DmpServerRequest::ParseUrl(const std::string& url, |
71 | 75 | domain = what[2].str(); |
72 | 76 | port = what[3].str(); |
73 | 77 | path = what[4].str(); |
74 | - query_string = what[5].str(); | |
78 | + queryString = what[5].str(); | |
75 | 79 | return true; |
76 | 80 | } |
77 | 81 | return false; |
78 | 82 | } |
79 | 83 | |
80 | -void DmpServerRequest::set_header(const std::string &name, const std::string &value) | |
84 | +void DmpServerRequest::setHeader(const std::string &name, const std::string &value) | |
81 | 85 | { |
82 | 86 | headers_[name] = value; |
83 | 87 | } | ... | ... |
... | ... | @@ -36,22 +36,23 @@ public: |
36 | 36 | DmpServerRequest(const std::string &url, DmpServerRequest::Method method = DmpServerRequest::GET_METHOD, const DmpServerRequest::Headers &headers = DmpServerRequest::Headers()); |
37 | 37 | |
38 | 38 | std::string url() const { return url_; } |
39 | - void set_url(const std::string &url); | |
39 | + void setUrl(const std::string &url); | |
40 | 40 | Method method() const { return method_; } |
41 | - void set_method(DmpServerRequest::Method method); | |
41 | + void setMethod(DmpServerRequest::Method method); | |
42 | 42 | std::string protocol() const { return protocol_; } |
43 | 43 | std::string domain() const { return domain_; } |
44 | 44 | std::string port() const { return port_; } |
45 | 45 | std::string path() const { return path_; } |
46 | - void set_path(const std::string &path) { path_ = path;} | |
46 | + void setPath(const std::string &path) { path_ = path;} | |
47 | 47 | std::string query() const { return query_; } |
48 | - void set_query(const std::string &query_string); | |
48 | + void setQuery(const std::string &queryString); | |
49 | 49 | std::string header( const std::string &name ) const; |
50 | - void set_header(const std::string &name, const std::string &value); | |
50 | + void setHeader(const std::string &name, const std::string &value); | |
51 | 51 | Headers headers() const { return headers_; } |
52 | + bool isRestful() const { return isRestful_; } | |
52 | 53 | |
53 | - DmpServerParameters ServerParameters() const { return params_; } | |
54 | - void SetParameter(const std::string &name, const std::string &value); | |
54 | + DmpServerParameters serverParameters() const { return params_; } | |
55 | + void setParameter(const std::string &name, const std::string &value); | |
55 | 56 | |
56 | 57 | //post的数据 |
57 | 58 | virtual const void * GetData() const; |
... | ... | @@ -67,9 +68,10 @@ protected: |
67 | 68 | std::string port_; |
68 | 69 | std::string path_; |
69 | 70 | std::string query_; |
71 | + bool isRestful_; | |
70 | 72 | |
71 | 73 | private: |
72 | - bool ParseUrl(const std::string& url, | |
74 | + bool parseUrl(const std::string& url, | |
73 | 75 | std::string &protocol, |
74 | 76 | std::string &domain, |
75 | 77 | std::string &port, | ... | ... |
... | ... | @@ -28,13 +28,13 @@ DmpSpServerRequest::DmpSpServerRequest(SP_HttpRequest* request) |
28 | 28 | { |
29 | 29 | if (strcmp(med,"POST") == 0) |
30 | 30 | { |
31 | - set_method(POST_METHOD); | |
31 | + setMethod(POST_METHOD); | |
32 | 32 | data_ = request->getContent(); |
33 | - data_len_ = request->getContentLength(); | |
33 | + dataLen_ = request->getContentLength(); | |
34 | 34 | } |
35 | 35 | else |
36 | 36 | { |
37 | - set_method(GET_METHOD); | |
37 | + setMethod(GET_METHOD); | |
38 | 38 | } |
39 | 39 | } |
40 | 40 | |
... | ... | @@ -44,13 +44,14 @@ DmpSpServerRequest::DmpSpServerRequest(SP_HttpRequest* request) |
44 | 44 | std::string::size_type pos = url.find("?"); |
45 | 45 | if (pos != std::string::npos) { |
46 | 46 | std::string path = url.substr(0, pos); |
47 | - set_path(path); | |
48 | - std::string query_string; | |
49 | - query_string = url.substr(pos+1,url.length()); | |
50 | - set_query(query_string); | |
47 | + setPath(path); | |
48 | + std::string queryString; | |
49 | + queryString = url.substr(pos+1,url.length()); | |
50 | + setQuery(queryString); | |
51 | 51 | } |
52 | 52 | else { |
53 | - set_path(url); | |
53 | + isRestful_ = true; | |
54 | + setPath(url); | |
54 | 55 | } |
55 | 56 | |
56 | 57 | // for(int i=0; i< request->getParamCount(); i++) { |
... | ... | @@ -59,7 +60,7 @@ DmpSpServerRequest::DmpSpServerRequest(SP_HttpRequest* request) |
59 | 60 | |
60 | 61 | //添加请求头信息 |
61 | 62 | for(int i=0; i< request->getHeaderCount(); i++) { |
62 | - set_header(request->getHeaderName(i),request->getHeaderValue(i)); | |
63 | + setHeader(request->getHeaderName(i),request->getHeaderValue(i)); | |
63 | 64 | } |
64 | 65 | } |
65 | 66 | |
... | ... | @@ -69,5 +70,5 @@ const void * DmpSpServerRequest::GetData() const |
69 | 70 | } |
70 | 71 | int DmpSpServerRequest::GetDataLength() const |
71 | 72 | { |
72 | - return data_len_; | |
73 | + return dataLen_; | |
73 | 74 | } |
\ No newline at end of file | ... | ... |
... | ... | @@ -149,11 +149,11 @@ void DmpManagerApiHandler::startService(const DmpServerApiContext &context) cons |
149 | 149 | { |
150 | 150 | case DmpServerRequest::Method::GET_METHOD: |
151 | 151 | { |
152 | - DmpServerParameters params = context.request()->ServerParameters(); | |
152 | + DmpServerParameters params = context.request()->serverParameters(); | |
153 | 153 | std::string serverName; |
154 | - params.GetValue("servername", serverName); | |
154 | + params.getValue("servername", serverName); | |
155 | 155 | std::string serviceName; |
156 | - params.GetValue("servicename",serviceName); | |
156 | + params.getValue("servicename",serviceName); | |
157 | 157 | context.manager()->startService(serverName, serviceName); |
158 | 158 | break; |
159 | 159 | } |
... | ... | @@ -174,11 +174,11 @@ void DmpManagerApiHandler::stopService(const DmpServerApiContext &context) const |
174 | 174 | { |
175 | 175 | case DmpServerRequest::Method::GET_METHOD: |
176 | 176 | { |
177 | - DmpServerParameters params = context.request()->ServerParameters(); | |
177 | + DmpServerParameters params = context.request()->serverParameters(); | |
178 | 178 | std::string serverName; |
179 | - params.GetValue("servername", serverName); | |
179 | + params.getValue("servername", serverName); | |
180 | 180 | std::string serviceName; |
181 | - params.GetValue("servicename",serviceName); | |
181 | + params.getValue("servicename",serviceName); | |
182 | 182 | context.manager()->stopService(serverName, serviceName); |
183 | 183 | break; |
184 | 184 | } |
... | ... | @@ -248,11 +248,11 @@ void DmpManagerApiHandler::deleteService(const DmpServerApiContext &context) con |
248 | 248 | { |
249 | 249 | case DmpServerRequest::Method::GET_METHOD: |
250 | 250 | { |
251 | - DmpServerParameters params = context.request()->ServerParameters(); | |
251 | + DmpServerParameters params = context.request()->serverParameters(); | |
252 | 252 | std::string serverName; |
253 | - params.GetValue("servername", serverName); | |
253 | + params.getValue("servername", serverName); | |
254 | 254 | std::string serviceName; |
255 | - params.GetValue("servicename",serviceName); | |
255 | + params.getValue("servicename",serviceName); | |
256 | 256 | if(context.manager()->deleteService(serverName, serviceName)) { |
257 | 257 | context.response()->write("{\"status\":\"true\",\"message\":\"删除服务成功\"}"); |
258 | 258 | }else{ |
... | ... | @@ -406,8 +406,8 @@ void DmpManagerApiHandler::UpdateCache(const DmpServerApiContext &context)const |
406 | 406 | case DmpServerRequest::Method::GET_METHOD: |
407 | 407 | { |
408 | 408 | std::string serviceName_; |
409 | - const DmpServerParameters params_ (context.request()->ServerParameters()); | |
410 | - CIMap paramsMap=params_.Parameters(); | |
409 | + const DmpServerParameters params_ (context.request()->serverParameters()); | |
410 | + CIMap paramsMap=params_.parameters(); | |
411 | 411 | std::map<std::string, std::string>::const_iterator iter; |
412 | 412 | iter =paramsMap.find("SERVICENAME"); |
413 | 413 | if (iter != paramsMap.end()) |
... | ... | @@ -453,8 +453,8 @@ void DmpManagerApiHandler::DeleteCache(const DmpServerApiContext &context)const |
453 | 453 | case DmpServerRequest::Method::GET_METHOD: |
454 | 454 | { |
455 | 455 | std::string serviceName_; |
456 | - const DmpServerParameters params_ (context.request()->ServerParameters()); | |
457 | - CIMap paramsMap=params_.Parameters(); | |
456 | + const DmpServerParameters params_ (context.request()->serverParameters()); | |
457 | + CIMap paramsMap=params_.parameters(); | |
458 | 458 | std::map<std::string, std::string>::const_iterator iter; |
459 | 459 | iter =paramsMap.find("SERVICENAME"); |
460 | 460 | if (iter != paramsMap.end()) | ... | ... |
... | ... | @@ -49,7 +49,7 @@ std::string DmpMapServer::capability() const |
49 | 49 | return caps; |
50 | 50 | } |
51 | 51 | |
52 | -void DmpMapServer::executeRequest(const DmpServerRequest &request, DmpServerResponse &response) | |
52 | +void DmpMapServer::executeRequest(DmpServerRequest &request, DmpServerResponse &response) | |
53 | 53 | { |
54 | 54 | std::string service_name; |
55 | 55 | boost::cmatch what; | ... | ... |
... | ... | @@ -36,7 +36,7 @@ public: |
36 | 36 | std::string alias() const override { return std::string("矢量地图服务");} |
37 | 37 | std::string path() const override { return std::string("^/DMap/Services/?([\\w./]*)/MapServer/([\\w]+)"); } |
38 | 38 | std::string capability() const override; |
39 | - void executeRequest(const DmpServerRequest &request, DmpServerResponse &response) override; | |
39 | + void executeRequest(DmpServerRequest &request, DmpServerResponse &response) override; | |
40 | 40 | bool publish(const std::string &serviceName, unsigned int capability, const DmpProject &project) override; |
41 | 41 | bool remove(const std::string &serviceName) override; |
42 | 42 | bool start(const std::string &serviceName) override; | ... | ... |
... | ... | @@ -53,7 +53,7 @@ std::string DmpTileServer::capability() const |
53 | 53 | return caps; |
54 | 54 | } |
55 | 55 | |
56 | -void DmpTileServer::executeRequest(const DmpServerRequest &request, DmpServerResponse &response) | |
56 | +void DmpTileServer::executeRequest(DmpServerRequest &request, DmpServerResponse &response) | |
57 | 57 | { |
58 | 58 | std::string service_name; |
59 | 59 | boost::cmatch what; |
... | ... | @@ -62,9 +62,14 @@ void DmpTileServer::executeRequest(const DmpServerRequest &request, DmpServerRes |
62 | 62 | std::string htmlstr = "<html><head><title>Welcome to DMap Server</title></head><body><p>"; |
63 | 63 | if(boost::regex_match(requestPath.c_str(), what, reg)) |
64 | 64 | { |
65 | - if(what.size() == 3) { | |
65 | + if(what.size() == 4) { | |
66 | 66 | std::string serviceName = what[1].str(); |
67 | 67 | std::string serverType = what[2].str(); |
68 | + if(request.isRestful()) { | |
69 | + std::string queryString = what[3].str(); | |
70 | + request.setQuery(queryString); | |
71 | + } | |
72 | + std::string queryString = what[3].str(); | |
68 | 73 | DmpService *service = services_[serverType]; |
69 | 74 | if(service) { |
70 | 75 | DmpServerProject * serverProj = getServerProject(serviceName); | ... | ... |
... | ... | @@ -34,9 +34,9 @@ public: |
34 | 34 | ~DmpTileServer(); |
35 | 35 | std::string name() const override { return std::string("TileServer");} |
36 | 36 | std::string alias() const override { return std::string("瓦片服务");} |
37 | - std::string path() const override { return std::string("^/DMap/Services/?([\\w./]*)/TileServer/([\\w]+)"); } | |
37 | + std::string path() const override { return std::string("^/DMap/Services/?([\\w./]*)/TileServer/([\\w.]+)([\\w./]*)"); } | |
38 | 38 | std::string capability() const override; |
39 | - void executeRequest(const DmpServerRequest &request, DmpServerResponse &response) override; | |
39 | + void executeRequest(DmpServerRequest &request, DmpServerResponse &response) override; | |
40 | 40 | bool publish(const std::string &serviceName, unsigned int capability, const DmpProject &project) override; |
41 | 41 | bool remove(const std::string &serviceName) override; |
42 | 42 | bool start(const std::string &serviceName) override; | ... | ... |
... | ... | @@ -41,51 +41,62 @@ namespace DmpWmts |
41 | 41 | LOGGER_DEBUG("Destructing WmtsService"); |
42 | 42 | } |
43 | 43 | |
44 | - void DmpWMTSService::executeRequest(const DmpServerContext &context) | |
44 | + void DmpWMTSService::executeRequest(const DmpServerContext &context) | |
45 | 45 | { |
46 | - const DmpWmtsParameters params(context.request()->ServerParameters()); | |
47 | - const std::string layerName = params.Layer(); | |
48 | - const DmpProject* project = context.project(); | |
49 | - DmpTileLayer* tileLayer = static_cast<DmpTileLayer*>(project->getLayer(layerName)); | |
50 | - //context.response()->writeHtml("hello,wmts"); | |
51 | - | |
52 | - //const DmpWmtsParameters params(context.request()->ServerParameters()); | |
53 | - int tile_col = params.TileCol(); | |
54 | - int tile_row = params.TileRow(); | |
55 | - int tile_matrix = params.TileMatrix(); | |
56 | - string req = params.Request(); | |
57 | - DmpWmtsParameters::Format format = params.ImageFormat(); | |
58 | - if (req.empty()) | |
59 | - { | |
60 | - context.response()->writeHtml("wmts,Operation is null"); | |
61 | - } | |
62 | - if (boost::iequals(req, "GetTile")) | |
63 | - { | |
64 | - string f = (format == DmpWmtsParameters::Format::JPG) ? "jpg" : "png"; | |
65 | - std::shared_ptr<DmpTileProvider> provider = TileProviderFactory::GetProvider(tileLayer); | |
66 | - provider->WriteTile(tile_row, tile_col, tile_matrix, f, *context.response()); | |
67 | - } | |
68 | - else if (boost::iequals(req, "GetCapabilities")) | |
69 | - { | |
70 | - | |
71 | - } | |
46 | + DmpWmtsParameters *params = nullptr; | |
47 | + if (context.request()->isRestful()){ | |
48 | + params = new DmpWmtsParameters(context.request()->query()); | |
49 | + } | |
50 | + else { | |
51 | + params = new DmpWmtsParameters(context.request()->serverParameters()); | |
52 | + } | |
53 | + std::string layerName = params->Layer(); | |
54 | + int tileCol = params->TileCol(); | |
55 | + int tileRow = params->TileRow(); | |
56 | + int tileMatrix = params->TileMatrix(); | |
57 | + std::string req = params->request(); | |
58 | + DmpWmtsParameters::Format format = params->ImageFormat(); | |
59 | + if(params){ | |
60 | + delete params; | |
61 | + params = nullptr; | |
62 | + } | |
63 | + | |
64 | + const DmpProject *project = context.project(); | |
65 | + DmpTileLayer *tileLayer = static_cast<DmpTileLayer *>(project->getLayer(layerName)); | |
66 | + //context.response()->writeHtml("hello,wmts"); | |
72 | 67 | |
68 | + //const DmpWmtsParameters params(context.request()->serverParameters()); | |
73 | 69 | |
74 | - | |
75 | - //std::string Msg_,connMsg_; | |
76 | - //std::string strsql_="SELECT \"Id\", \"Name\" FROM public.\"TileMapItem\";"; | |
77 | - //PgsqlUtils *pg_=new PgsqlUtils(connMsg_); | |
78 | - //pg_->ExecuteQuery(strsql_,Msg_); | |
79 | - // | |
80 | - | |
81 | - //获取服务的实例 | |
82 | - // std::string service_name = GetServiceName(context.request()->path()); | |
83 | - // DmpService* service_ = GetService(service_name); | |
84 | - // if(!service_) { | |
85 | - // context.response()->write("找不到服务:" + service_name + "请确保服务已发布!"); | |
86 | - // } | |
87 | - //判断RESTful、Kvp请求方式 | |
88 | - /* | |
70 | + | |
71 | + | |
72 | + if (req.empty()) | |
73 | + { | |
74 | + context.response()->writeHtml("wmts,Operation is null"); | |
75 | + } | |
76 | + if (boost::iequals(req, "GetTile")) | |
77 | + { | |
78 | + string f = (format == DmpWmtsParameters::Format::JPG) ? "jpg" : "png"; | |
79 | + std::shared_ptr<DmpTileProvider> provider = TileProviderFactory::GetProvider(tileLayer); | |
80 | + provider->WriteTile(tileRow, tileCol, tileMatrix, f, *context.response()); | |
81 | + } | |
82 | + else if (boost::iequals(req, "GetCapabilities")) | |
83 | + { | |
84 | + } | |
85 | + | |
86 | + //std::string Msg_,connMsg_; | |
87 | + //std::string strsql_="SELECT \"Id\", \"Name\" FROM public.\"TileMapItem\";"; | |
88 | + //PgsqlUtils *pg_=new PgsqlUtils(connMsg_); | |
89 | + //pg_->ExecuteQuery(strsql_,Msg_); | |
90 | + // | |
91 | + | |
92 | + //获取服务的实例 | |
93 | + // std::string service_name = GetServiceName(context.request()->path()); | |
94 | + // DmpService* service_ = GetService(service_name); | |
95 | + // if(!service_) { | |
96 | + // context.response()->write("找不到服务:" + service_name + "请确保服务已发布!"); | |
97 | + // } | |
98 | + //判断RESTful、Kvp请求方式 | |
99 | + /* | |
89 | 100 | std::string path_= context.request()->path(); |
90 | 101 | if(strstr(path_.c_str(), "?") == NULL) |
91 | 102 | { |
... | ... | @@ -116,49 +127,49 @@ namespace DmpWmts |
116 | 127 | |
117 | 128 | } |
118 | 129 | */ |
119 | - // const DmpWmtsParameters params(context.request()->ServerParameters()); | |
130 | + // const DmpWmtsParameters params(context.request()->serverParameters()); | |
120 | 131 | // int tile_col = params.TileCol(); |
121 | 132 | // int tile_row = params.TileRow(); |
122 | 133 | // int tile_matrix = params.TileMatrix(); |
123 | 134 | // string req = params.Request(); |
124 | 135 | // DmpWmtsParameters::Format format = params.ImageFormat(); |
125 | - // if (req.empty()) | |
126 | - // { | |
127 | - // context.response()->write("wmts,Operation is null"); | |
128 | - // } | |
129 | - // if (boost::iequals(req, "GetTile")) | |
130 | - // { | |
131 | - // string f = (format == DmpWmtsParameters::Format::JPG) ? "jpg" : "png"; | |
132 | - // std::shared_ptr<DmpTileProvider> provider = TileProviderFactory::GetProvider(service_); | |
133 | - // provider->WriteTile(tile_row, tile_col, tile_matrix, f, *context.response()); | |
134 | - // } | |
135 | - // else if (boost::iequals(req, "GetCapabilities")) | |
136 | - // { | |
137 | - //std::shared_ptr<DmpCapabiliTilesProvider> provider = CapabiliTileProviderFactory::GetProvider(); | |
138 | - //provider->WriteCapabilities(*context.response()); | |
139 | - | |
140 | - // std::string host_=context.request()->domain()+":"+context.request()->port(); | |
141 | - | |
142 | - // std::shared_ptr<DmpCapabiliTilesProvider> provider = CapabiliTileProviderFactory::GetProvider(); | |
143 | - // boost::property_tree::ptree pt_; | |
144 | - // if(context.manager()->GetTilePTree(service_name,pt_)) | |
145 | - // { | |
146 | - // //provider->WriteCapabilities(pt_,host_,service_name,*context.response()); | |
147 | - // provider->WriteCapabilities(*context.response()); | |
148 | - // } | |
149 | - // else | |
150 | - // { | |
151 | - // context.response()->write("GetTileInfo false"); | |
152 | - // } | |
153 | - | |
154 | - // } | |
155 | - // else if (boost::iequals(req, "GetFeatureInfo")) | |
156 | - // { | |
157 | - // context.response()->write("wmts, GetFeatureInfo"); | |
158 | - // } | |
159 | - // else | |
160 | - // { | |
161 | - // context.response()->write("wmts,Operation not supported"); | |
162 | - // } | |
136 | + // if (req.empty()) | |
137 | + // { | |
138 | + // context.response()->write("wmts,Operation is null"); | |
139 | + // } | |
140 | + // if (boost::iequals(req, "GetTile")) | |
141 | + // { | |
142 | + // string f = (format == DmpWmtsParameters::Format::JPG) ? "jpg" : "png"; | |
143 | + // std::shared_ptr<DmpTileProvider> provider = TileProviderFactory::GetProvider(service_); | |
144 | + // provider->WriteTile(tile_row, tile_col, tile_matrix, f, *context.response()); | |
145 | + // } | |
146 | + // else if (boost::iequals(req, "GetCapabilities")) | |
147 | + // { | |
148 | + //std::shared_ptr<DmpCapabiliTilesProvider> provider = CapabiliTileProviderFactory::GetProvider(); | |
149 | + //provider->WriteCapabilities(*context.response()); | |
150 | + | |
151 | + // std::string host_=context.request()->domain()+":"+context.request()->port(); | |
152 | + | |
153 | + // std::shared_ptr<DmpCapabiliTilesProvider> provider = CapabiliTileProviderFactory::GetProvider(); | |
154 | + // boost::property_tree::ptree pt_; | |
155 | + // if(context.manager()->GetTilePTree(service_name,pt_)) | |
156 | + // { | |
157 | + // //provider->WriteCapabilities(pt_,host_,service_name,*context.response()); | |
158 | + // provider->WriteCapabilities(*context.response()); | |
159 | + // } | |
160 | + // else | |
161 | + // { | |
162 | + // context.response()->write("GetTileInfo false"); | |
163 | + // } | |
164 | + | |
165 | + // } | |
166 | + // else if (boost::iequals(req, "GetFeatureInfo")) | |
167 | + // { | |
168 | + // context.response()->write("wmts, GetFeatureInfo"); | |
169 | + // } | |
170 | + // else | |
171 | + // { | |
172 | + // context.response()->write("wmts,Operation not supported"); | |
173 | + // } | |
163 | 174 | } |
164 | 175 | } // namespace DmpWmts |
\ No newline at end of file | ... | ... |
... | ... | @@ -22,9 +22,33 @@ namespace DmpWmts |
22 | 22 | |
23 | 23 | DmpWmtsParameters::DmpWmtsParameters(const DmpServerParameters ¶ms) |
24 | 24 | { |
25 | - params_ = params.Parameters(); | |
25 | + params_ = params.parameters(); | |
26 | 26 | } |
27 | 27 | |
28 | + //restful风格的path,例如:/10/12/13.png;/1.0.0/WMTSCapabilities.xml | |
29 | + DmpWmtsParameters::DmpWmtsParameters(const std::string &path) | |
30 | + { | |
31 | + // params_ = params.parameters(); | |
32 | + std::vector<std::string> vec; | |
33 | + boost::split(vec, path, boost::is_any_of("/"), boost::token_compress_on); | |
34 | + std::string last = vec.back(); | |
35 | + if (boost::iequals(last, "WMTSCapabilities.xml")) { | |
36 | + add("REQUEST", "GetCapabilities"); | |
37 | + } | |
38 | + else if(vec.size() == 4) { | |
39 | + add("REQUEST", "GetTile"); | |
40 | + add("TILEMATRIX", vec[1]); | |
41 | + add("TILEROW", vec[2]); | |
42 | + std::vector<std::string> vec2; | |
43 | + boost::split(vec2, last, boost::is_any_of("."), boost::token_compress_on); | |
44 | + if(vec2.size() == 2) { | |
45 | + add("TILECOL", vec2[0]); | |
46 | + add("FORMAT", vec2[1]); | |
47 | + } | |
48 | + } | |
49 | + | |
50 | + } | |
51 | + | |
28 | 52 | int DmpWmtsParameters::TileMatrix() const |
29 | 53 | { |
30 | 54 | std::map<std::string, std::string>::const_iterator iter; | ... | ... |
... | ... | @@ -28,8 +28,9 @@ namespace DmpWmts |
28 | 28 | HTML, |
29 | 29 | GML |
30 | 30 | }; |
31 | - DmpWmtsParameters(const DmpServerParameters ¶meters); | |
32 | 31 | DmpWmtsParameters(); |
32 | + DmpWmtsParameters(const DmpServerParameters ¶meters); | |
33 | + DmpWmtsParameters(const std::string &path);//restful | |
33 | 34 | virtual ~DmpWmtsParameters() = default; |
34 | 35 | std::string Layer() const; |
35 | 36 | Format ImageFormat() const; | ... | ... |
请
注册
或
登录
后发表评论