@@ -695,49 +695,136 @@ void ESP8266WebServerTemplate<ServerType>::_finalizeResponse() {
695
695
}
696
696
697
697
template <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);
743
830
}
0 commit comments