@@ -695,49 +695,136 @@ void ESP8266WebServerTemplate<ServerType>::_finalizeResponse() {
695695}
696696
697697template <typename ServerType>
698- const String ESP8266WebServerTemplate<ServerType>::responseCodeToString(const int code) {
699- switch (code) {
700- case 100 : return F (" Continue" );
701- case 101 : return F (" Switching Protocols" );
702- case 200 : return F (" OK" );
703- case 201 : return F (" Created" );
704- case 202 : return F (" Accepted" );
705- case 203 : return F (" Non-Authoritative Information" );
706- case 204 : return F (" No Content" );
707- case 205 : return F (" Reset Content" );
708- case 206 : return F (" Partial Content" );
709- case 300 : return F (" Multiple Choices" );
710- case 301 : return F (" Moved Permanently" );
711- case 302 : return F (" Found" );
712- case 303 : return F (" See Other" );
713- case 304 : return F (" Not Modified" );
714- case 305 : return F (" Use Proxy" );
715- case 307 : return F (" Temporary Redirect" );
716- case 400 : return F (" Bad Request" );
717- case 401 : return F (" Unauthorized" );
718- case 402 : return F (" Payment Required" );
719- case 403 : return F (" Forbidden" );
720- case 404 : return F (" Not Found" );
721- case 405 : return F (" Method Not Allowed" );
722- case 406 : return F (" Not Acceptable" );
723- case 407 : return F (" Proxy Authentication Required" );
724- case 408 : return F (" Request Time-out" );
725- case 409 : return F (" Conflict" );
726- case 410 : return F (" Gone" );
727- case 411 : return F (" Length Required" );
728- case 412 : return F (" Precondition Failed" );
729- case 413 : return F (" Request Entity Too Large" );
730- case 414 : return F (" Request-URI Too Large" );
731- case 415 : return F (" Unsupported Media Type" );
732- case 416 : return F (" Requested range not satisfiable" );
733- case 417 : return F (" Expectation Failed" );
734- case 418 : return F (" I'm a teapot" );
735- case 500 : return F (" Internal Server Error" );
736- case 501 : return F (" Not Implemented" );
737- case 502 : return F (" Bad Gateway" );
738- case 503 : return F (" Service Unavailable" );
739- case 504 : return F (" Gateway Time-out" );
740- case 505 : return F (" HTTP Version not supported" );
741- default : return F (" " );
742- }
698+ String ESP8266WebServerTemplate<ServerType>::responseCodeToString(const int code) {
699+ // By first determining the pointer to the flash stored string in the switch
700+ // statement and then doing String(FlashStringHelper) return reduces the total code
701+ // size of this function by over 50%.
702+ const __FlashStringHelper *r;
703+ switch (code)
704+ {
705+ case 100 :
706+ r = F (" Continue" );
707+ break ;
708+ case 101 :
709+ r = F (" Switching Protocols" );
710+ break ;
711+ case 200 :
712+ r = F (" OK" );
713+ break ;
714+ case 201 :
715+ r = F (" Created" );
716+ break ;
717+ case 202 :
718+ r = F (" Accepted" );
719+ break ;
720+ case 203 :
721+ r = F (" Non-Authoritative Information" );
722+ break ;
723+ case 204 :
724+ r = F (" No Content" );
725+ break ;
726+ case 205 :
727+ r = F (" Reset Content" );
728+ break ;
729+ case 206 :
730+ r = F (" Partial Content" );
731+ break ;
732+ case 300 :
733+ r = F (" Multiple Choices" );
734+ break ;
735+ case 301 :
736+ r = F (" Moved Permanently" );
737+ break ;
738+ case 302 :
739+ r = F (" Found" );
740+ break ;
741+ case 303 :
742+ r = F (" See Other" );
743+ break ;
744+ case 304 :
745+ r = F (" Not Modified" );
746+ break ;
747+ case 305 :
748+ r = F (" Use Proxy" );
749+ break ;
750+ case 307 :
751+ r = F (" Temporary Redirect" );
752+ break ;
753+ case 400 :
754+ r = F (" Bad Request" );
755+ break ;
756+ case 401 :
757+ r = F (" Unauthorized" );
758+ break ;
759+ case 402 :
760+ r = F (" Payment Required" );
761+ break ;
762+ case 403 :
763+ r = F (" Forbidden" );
764+ break ;
765+ case 404 :
766+ r = F (" Not Found" );
767+ break ;
768+ case 405 :
769+ r = F (" Method Not Allowed" );
770+ break ;
771+ case 406 :
772+ r = F (" Not Acceptable" );
773+ break ;
774+ case 407 :
775+ r = F (" Proxy Authentication Required" );
776+ break ;
777+ case 408 :
778+ r = F (" Request Timeout" );
779+ break ;
780+ case 409 :
781+ r = F (" Conflict" );
782+ break ;
783+ case 410 :
784+ r = F (" Gone" );
785+ break ;
786+ case 411 :
787+ r = F (" Length Required" );
788+ break ;
789+ case 412 :
790+ r = F (" Precondition Failed" );
791+ break ;
792+ case 413 :
793+ r = F (" Request Entity Too Large" );
794+ break ;
795+ case 414 :
796+ r = F (" URI Too Long" );
797+ break ;
798+ case 415 :
799+ r = F (" Unsupported Media Type" );
800+ break ;
801+ case 416 :
802+ r = F (" Range not satisfiable" );
803+ break ;
804+ case 417 :
805+ r = F (" Expectation Failed" );
806+ break ;
807+ case 500 :
808+ r = F (" Internal Server Error" );
809+ break ;
810+ case 501 :
811+ r = F (" Not Implemented" );
812+ break ;
813+ case 502 :
814+ r = F (" Bad Gateway" );
815+ break ;
816+ case 503 :
817+ r = F (" Service Unavailable" );
818+ break ;
819+ case 504 :
820+ r = F (" Gateway Timeout" );
821+ break ;
822+ case 505 :
823+ r = F (" HTTP Version not supported" );
824+ break ;
825+ default :
826+ r = F (" " );
827+ break ;
828+ }
829+ return String (r);
743830}
0 commit comments