| 228 | } |
| 229 | |
| 230 | UrlParser::UrlPart UrlParser::GetUrlPart(const StringValue& part) { |
| 231 | // Quick filter on requested URL part, based on first character. |
| 232 | // Hive requires the requested URL part to be all upper case. |
| 233 | switch(part.Ptr()[0]) { |
| 234 | case 'A': { |
| 235 | if (!part.Eq(url_authority)) return INVALID; |
| 236 | return AUTHORITY; |
| 237 | } |
| 238 | case 'F': { |
| 239 | if (!part.Eq(url_file)) return INVALID; |
| 240 | return FILE; |
| 241 | } |
| 242 | case 'H': { |
| 243 | if (!part.Eq(url_host)) return INVALID; |
| 244 | return HOST; |
| 245 | } |
| 246 | case 'P': { |
| 247 | if (part.Eq(url_path)) { |
| 248 | return PATH; |
| 249 | } else if (part.Eq(url_protocol)) { |
| 250 | return PROTOCOL; |
| 251 | } else { |
| 252 | return INVALID; |
| 253 | } |
| 254 | } |
| 255 | case 'Q': { |
| 256 | if (!part.Eq(url_query)) return INVALID; |
| 257 | return QUERY; |
| 258 | } |
| 259 | case 'R': { |
| 260 | if (!part.Eq(url_ref)) return INVALID; |
| 261 | return REF; |
| 262 | } |
| 263 | case 'U': { |
| 264 | if (!part.Eq(url_userinfo)) return INVALID; |
| 265 | return USERINFO; |
| 266 | } |
| 267 | default: return INVALID; |
| 268 | } |
| 269 | } |
| 270 | |
| 271 | } |