This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088

Fork of libMiMic by Ryo Iizuka

Committer:
furutani
Date:
Fri Feb 24 04:43:41 2017 +0000
Revision:
115:fa79286d8ea4
Parent:
43:a182f2b5ff41
Delete missing include line.; Add parameter "timeout" to TCPSocket::connect(), precv().; Fix to send ARP request to default gateway when connecting to IP address of different segment.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nyatla 42:f83aa17dcae5 1 #include <ModFileIo.h>
nyatla 42:f83aa17dcae5 2 #include <stdio.h>
nyatla 42:f83aa17dcae5 3 #include "mbed.h"
nyatla 42:f83aa17dcae5 4 using namespace MiMic;
nyatla 42:f83aa17dcae5 5 /*
nyatla 42:f83aa17dcae5 6 * FileIO class
nyatla 42:f83aa17dcae5 7 */
nyatla 42:f83aa17dcae5 8 typedef struct TcModFileIoDumy
nyatla 42:f83aa17dcae5 9 {
nyatla 42:f83aa17dcae5 10 NyLPC_TcModFileIoBaseClass_t super;
nyatla 42:f83aa17dcae5 11 }TcFileIoDumy_t;
nyatla 42:f83aa17dcae5 12
nyatla 42:f83aa17dcae5 13 const static char* STR_TEXT_HTML="text/html";
nyatla 42:f83aa17dcae5 14 #define SIZE_OF_FBUF 256
nyatla 42:f83aa17dcae5 15
nyatla 42:f83aa17dcae5 16
nyatla 42:f83aa17dcae5 17
nyatla 42:f83aa17dcae5 18 static NyLPC_TBool upload_handler(NyLPC_TcHttpdConnection_t* i_connection,const NyLPC_TChar* i_fname,NyLPC_TcHttpBodyParser_t* i_body_parser)
nyatla 42:f83aa17dcae5 19 {
nyatla 42:f83aa17dcae5 20 char* buf=Httpd::_shared_buf;// This handler called with lock!
nyatla 42:f83aa17dcae5 21
nyatla 42:f83aa17dcae5 22 //save to new file
nyatla 42:f83aa17dcae5 23 FILE *fp;
nyatla 42:f83aa17dcae5 24 fp = fopen(i_fname, "w");
nyatla 42:f83aa17dcae5 25 if(fp==NULL){
nyatla 43:a182f2b5ff41 26 NyLPC_cHttpdUtils_sendErrorResponse(i_connection,500);
nyatla 42:f83aa17dcae5 27 return NyLPC_TBool_FALSE;
nyatla 42:f83aa17dcae5 28 }
nyatla 42:f83aa17dcae5 29 NyLPC_TInt16 l;
nyatla 42:f83aa17dcae5 30 if(NyLPC_cHttpBodyParser_parseStream(i_body_parser,NyLPC_cHttpdConnection_refStream(i_connection),buf,SIZE_OF_FBUF,&l)){
nyatla 42:f83aa17dcae5 31 while(l>0){
nyatla 42:f83aa17dcae5 32 fwrite(buf,1,l,fp);
nyatla 42:f83aa17dcae5 33 if(!NyLPC_cHttpBodyParser_parseStream(i_body_parser,NyLPC_cHttpdConnection_refStream(i_connection),buf,SIZE_OF_FBUF,&l)){
nyatla 42:f83aa17dcae5 34 NyLPC_OnErrorGoto(Error_FILE);
nyatla 42:f83aa17dcae5 35 }
nyatla 42:f83aa17dcae5 36 }
nyatla 42:f83aa17dcae5 37 }
nyatla 42:f83aa17dcae5 38 fclose(fp);
nyatla 42:f83aa17dcae5 39 //write response
nyatla 42:f83aa17dcae5 40 NyLPC_cHttpdConnection_sendResponseHeader2(i_connection,200,STR_TEXT_HTML,0,NULL);
nyatla 42:f83aa17dcae5 41 return NyLPC_TBool_TRUE;
nyatla 42:f83aa17dcae5 42 Error_FILE:
nyatla 42:f83aa17dcae5 43 fclose(fp);
nyatla 43:a182f2b5ff41 44 NyLPC_cHttpdUtils_sendErrorResponse(i_connection,500);
nyatla 42:f83aa17dcae5 45 return NyLPC_TBool_FALSE;
nyatla 42:f83aa17dcae5 46 }
nyatla 42:f83aa17dcae5 47
nyatla 42:f83aa17dcae5 48 static NyLPC_TBool create_handler(NyLPC_TcHttpdConnection_t* i_connection,const NyLPC_TChar* i_fname)
nyatla 42:f83aa17dcae5 49 {
nyatla 42:f83aa17dcae5 50 FILE *fp;
nyatla 42:f83aa17dcae5 51 fp = fopen(i_fname, "w");
nyatla 42:f83aa17dcae5 52 if(fp!=NULL){
nyatla 42:f83aa17dcae5 53 fclose(fp);
nyatla 42:f83aa17dcae5 54 NyLPC_cHttpdConnection_sendResponseHeader2(i_connection,200,STR_TEXT_HTML,0,NULL);
nyatla 42:f83aa17dcae5 55 return NyLPC_TBool_TRUE;
nyatla 42:f83aa17dcae5 56 }
nyatla 43:a182f2b5ff41 57 NyLPC_cHttpdUtils_sendErrorResponse(i_connection,500);
nyatla 42:f83aa17dcae5 58 return NyLPC_TBool_FALSE;
nyatla 42:f83aa17dcae5 59 }
nyatla 42:f83aa17dcae5 60
nyatla 42:f83aa17dcae5 61 static NyLPC_TBool remove_handler(NyLPC_TcHttpdConnection_t* i_connection,const NyLPC_TChar* i_fname)
nyatla 42:f83aa17dcae5 62 {
nyatla 42:f83aa17dcae5 63 if(remove(i_fname)==0){
nyatla 42:f83aa17dcae5 64 NyLPC_cHttpdConnection_sendResponseHeader2(i_connection,200,STR_TEXT_HTML,0,NULL);
nyatla 42:f83aa17dcae5 65 return NyLPC_TBool_TRUE;
nyatla 42:f83aa17dcae5 66 }
nyatla 42:f83aa17dcae5 67 //500ERROR
nyatla 43:a182f2b5ff41 68 NyLPC_cHttpdUtils_sendErrorResponse(i_connection,500);
nyatla 42:f83aa17dcae5 69 return NyLPC_TBool_FALSE;
nyatla 42:f83aa17dcae5 70 }
nyatla 42:f83aa17dcae5 71
nyatla 42:f83aa17dcae5 72
nyatla 42:f83aa17dcae5 73
nyatla 42:f83aa17dcae5 74 static void cModFileIoDumy_initialize(TcFileIoDumy_t* i_inst,const char* i_root_path)
nyatla 42:f83aa17dcae5 75 {
nyatla 42:f83aa17dcae5 76 NyLPC_cModFileIoBaseClass_initialize(&(i_inst->super),i_root_path);
nyatla 42:f83aa17dcae5 77 i_inst->super._abstruct_function.upload=upload_handler;
nyatla 42:f83aa17dcae5 78 i_inst->super._abstruct_function.create=create_handler;
nyatla 42:f83aa17dcae5 79 i_inst->super._abstruct_function.remove=remove_handler;
nyatla 42:f83aa17dcae5 80 }
nyatla 42:f83aa17dcae5 81 #define cModFileIoDumy_finalize(i_inst) NyLPC_cModFileIoBaseClass_finalize(&(i_inst)->super)
nyatla 42:f83aa17dcae5 82 #define cModFileIoDumy_canHandle(i_inst,i_connection) NyLPC_cModFileIoBaseClass_canHandle(&(i_inst)->super,i_connection)
nyatla 42:f83aa17dcae5 83 #define cModFileIoDumy_execute(i_inst,i_connection) NyLPC_cModFileIoBaseClass_execute(&(i_inst)->super,i_connection)
nyatla 42:f83aa17dcae5 84
nyatla 42:f83aa17dcae5 85
nyatla 42:f83aa17dcae5 86
nyatla 42:f83aa17dcae5 87
nyatla 42:f83aa17dcae5 88
nyatla 42:f83aa17dcae5 89
nyatla 42:f83aa17dcae5 90
nyatla 42:f83aa17dcae5 91 namespace MiMic
nyatla 42:f83aa17dcae5 92 {
nyatla 42:f83aa17dcae5 93
nyatla 42:f83aa17dcae5 94
nyatla 42:f83aa17dcae5 95 ModFileIo::ModFileIo(const char* i_path):ModBaseClass(i_path)
nyatla 42:f83aa17dcae5 96 {
nyatla 42:f83aa17dcae5 97 }
nyatla 42:f83aa17dcae5 98 ModFileIo::ModFileIo()
nyatla 42:f83aa17dcae5 99 {
nyatla 42:f83aa17dcae5 100 }
nyatla 42:f83aa17dcae5 101 ModFileIo::~ModFileIo()
nyatla 42:f83aa17dcae5 102 {
nyatla 42:f83aa17dcae5 103 }
nyatla 42:f83aa17dcae5 104 void ModFileIo::setParam(const char* i_path)
nyatla 42:f83aa17dcae5 105 {
nyatla 42:f83aa17dcae5 106 ModBaseClass::setParam(i_path);
nyatla 42:f83aa17dcae5 107 }
nyatla 42:f83aa17dcae5 108 bool ModFileIo::execute(HttpdConnection& i_connection)
nyatla 42:f83aa17dcae5 109 {
nyatla 42:f83aa17dcae5 110 //check parametor
nyatla 42:f83aa17dcae5 111 if(this->_path==NULL){
nyatla 42:f83aa17dcae5 112 return false;
nyatla 42:f83aa17dcae5 113 }
nyatla 42:f83aa17dcae5 114 TcModFileIoDumy mod;
nyatla 42:f83aa17dcae5 115 cModFileIoDumy_initialize(&mod,this->_path);
nyatla 42:f83aa17dcae5 116 if(cModFileIoDumy_canHandle(&mod,i_connection._ref_inst)){
nyatla 42:f83aa17dcae5 117 cModFileIoDumy_execute(&mod,i_connection._ref_inst);
nyatla 42:f83aa17dcae5 118 cModFileIoDumy_finalize(&mod);
nyatla 42:f83aa17dcae5 119 return true;
nyatla 42:f83aa17dcae5 120 }
nyatla 42:f83aa17dcae5 121 cModFileIoDumy_finalize(&mod);
nyatla 42:f83aa17dcae5 122 return false;
nyatla 42:f83aa17dcae5 123 }
nyatla 42:f83aa17dcae5 124
nyatla 42:f83aa17dcae5 125
nyatla 42:f83aa17dcae5 126
nyatla 42:f83aa17dcae5 127
nyatla 42:f83aa17dcae5 128 }