winlin

refine http.

@@ -483,20 +483,43 @@ public: @@ -483,20 +483,43 @@ public:
483 public: 483 public:
484 virtual u_int8_t method(); 484 virtual u_int8_t method();
485 virtual u_int16_t status_code(); 485 virtual u_int16_t status_code();
  486 + /**
  487 + * method helpers.
  488 + */
486 virtual std::string method_str(); 489 virtual std::string method_str();
487 virtual bool is_http_get(); 490 virtual bool is_http_get();
488 virtual bool is_http_put(); 491 virtual bool is_http_put();
489 virtual bool is_http_post(); 492 virtual bool is_http_post();
490 virtual bool is_http_delete(); 493 virtual bool is_http_delete();
491 virtual bool is_http_options(); 494 virtual bool is_http_options();
  495 + /**
  496 + * whether body is chunked encoding, for reader only.
  497 + */
492 virtual bool is_chunked(); 498 virtual bool is_chunked();
  499 + /**
  500 + * the uri contains the host and path.
  501 + */
493 virtual std::string uri(); 502 virtual std::string uri();
  503 + /**
  504 + * the url maybe the path.
  505 + */
494 virtual std::string url(); 506 virtual std::string url();
495 virtual std::string host(); 507 virtual std::string host();
496 virtual std::string path(); 508 virtual std::string path();
497 public: 509 public:
  510 + /**
  511 + * read body to string.
  512 + * @remark for small http body.
  513 + */
498 virtual int body_read_all(std::string& body); 514 virtual int body_read_all(std::string& body);
  515 + /**
  516 + * get the body reader, to read one by one.
  517 + * @remark when body is very large, or chunked, use this.
  518 + */
499 virtual ISrsHttpResponseReader* body_reader(); 519 virtual ISrsHttpResponseReader* body_reader();
  520 + /**
  521 + * the content length, -1 for chunked or not set.
  522 + */
500 virtual int64_t content_length(); 523 virtual int64_t content_length();
501 /** 524 /**
502 * get the param in query string, 525 * get the param in query string,
@@ -504,6 +527,9 @@ public: @@ -504,6 +527,9 @@ public:
504 * then query_get("start") is "100", and query_get("end") is "200" 527 * then query_get("start") is "100", and query_get("end") is "200"
505 */ 528 */
506 virtual std::string query_get(std::string key); 529 virtual std::string query_get(std::string key);
  530 + /**
  531 + * get the headers.
  532 + */
507 virtual int request_header_count(); 533 virtual int request_header_count();
508 virtual std::string request_header_key_at(int index); 534 virtual std::string request_header_key_at(int index);
509 virtual std::string request_header_value_at(int index); 535 virtual std::string request_header_value_at(int index);