Senses an earthquake with MPU6050 and gets time, coordenates and other details of the event with an Adafruit GPS. All the info is sent to an HTTP server

Dependencies:   MPU6050 mbed-http MBed_Adafruit-GPS-Library

Committer:
Jan Jongboom
Date:
Thu Feb 16 11:13:40 2017 +0100
Revision:
1:3bff14db67c7
Add mbed-http

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jan Jongboom 1:3bff14db67c7 1 #ifndef _MBED_HTTP_PARSED_URL_H_
Jan Jongboom 1:3bff14db67c7 2 #define _MBED_HTTP_PARSED_URL_H_
Jan Jongboom 1:3bff14db67c7 3
Jan Jongboom 1:3bff14db67c7 4 #include "http_parser.h"
Jan Jongboom 1:3bff14db67c7 5
Jan Jongboom 1:3bff14db67c7 6 class ParsedUrl {
Jan Jongboom 1:3bff14db67c7 7 public:
Jan Jongboom 1:3bff14db67c7 8 ParsedUrl(const char* url) {
Jan Jongboom 1:3bff14db67c7 9 struct http_parser_url parsed_url;
Jan Jongboom 1:3bff14db67c7 10 http_parser_parse_url(url, strlen(url), false, &parsed_url);
Jan Jongboom 1:3bff14db67c7 11
Jan Jongboom 1:3bff14db67c7 12 for (size_t ix = 0; ix < UF_MAX; ix++) {
Jan Jongboom 1:3bff14db67c7 13 const char* value;
Jan Jongboom 1:3bff14db67c7 14 if (parsed_url.field_set & (1 << ix)) {
Jan Jongboom 1:3bff14db67c7 15 value = (const char*)calloc(parsed_url.field_data[ix].len + 1, 1);
Jan Jongboom 1:3bff14db67c7 16 memcpy((void*)value, url + parsed_url.field_data[ix].off,
Jan Jongboom 1:3bff14db67c7 17 parsed_url.field_data[ix].len);
Jan Jongboom 1:3bff14db67c7 18 }
Jan Jongboom 1:3bff14db67c7 19 else {
Jan Jongboom 1:3bff14db67c7 20 value = (const char*)calloc(1, 1);
Jan Jongboom 1:3bff14db67c7 21 }
Jan Jongboom 1:3bff14db67c7 22
Jan Jongboom 1:3bff14db67c7 23 switch ((http_parser_url_fields)ix) {
Jan Jongboom 1:3bff14db67c7 24 case UF_SCHEMA: _schema = value; break;
Jan Jongboom 1:3bff14db67c7 25 case UF_HOST: _host = value; break;
Jan Jongboom 1:3bff14db67c7 26 case UF_PATH: _path = value; break;
Jan Jongboom 1:3bff14db67c7 27 case UF_QUERY: _query = value; break;
Jan Jongboom 1:3bff14db67c7 28 case UF_USERINFO: _userinfo = value; break;
Jan Jongboom 1:3bff14db67c7 29 default:
Jan Jongboom 1:3bff14db67c7 30 // PORT is already parsed, FRAGMENT is not relevant for HTTP requests
Jan Jongboom 1:3bff14db67c7 31 free((void*)value);
Jan Jongboom 1:3bff14db67c7 32 break;
Jan Jongboom 1:3bff14db67c7 33 }
Jan Jongboom 1:3bff14db67c7 34 }
Jan Jongboom 1:3bff14db67c7 35
Jan Jongboom 1:3bff14db67c7 36 _port = parsed_url.port;
Jan Jongboom 1:3bff14db67c7 37 if (!_port) {
Jan Jongboom 1:3bff14db67c7 38 if (strcmp(_schema, "https") == 0) {
Jan Jongboom 1:3bff14db67c7 39 _port = 443;
Jan Jongboom 1:3bff14db67c7 40 }
Jan Jongboom 1:3bff14db67c7 41 else {
Jan Jongboom 1:3bff14db67c7 42 _port = 80;
Jan Jongboom 1:3bff14db67c7 43 }
Jan Jongboom 1:3bff14db67c7 44 }
Jan Jongboom 1:3bff14db67c7 45 }
Jan Jongboom 1:3bff14db67c7 46
Jan Jongboom 1:3bff14db67c7 47 ~ParsedUrl() {
Jan Jongboom 1:3bff14db67c7 48 if (_schema) free((void*)_schema);
Jan Jongboom 1:3bff14db67c7 49 if (_host) free((void*)_host);
Jan Jongboom 1:3bff14db67c7 50 if (_path) free((void*)_path);
Jan Jongboom 1:3bff14db67c7 51 if (_query) free((void*)_query);
Jan Jongboom 1:3bff14db67c7 52 if (_userinfo) free((void*)_userinfo);
Jan Jongboom 1:3bff14db67c7 53 }
Jan Jongboom 1:3bff14db67c7 54
Jan Jongboom 1:3bff14db67c7 55 uint16_t port() const { return _port; }
Jan Jongboom 1:3bff14db67c7 56 const char* schema() const { return _schema; }
Jan Jongboom 1:3bff14db67c7 57 const char* host() const { return _host; }
Jan Jongboom 1:3bff14db67c7 58 const char* path() const { return _path; }
Jan Jongboom 1:3bff14db67c7 59 const char* query() const { return _query; }
Jan Jongboom 1:3bff14db67c7 60 const char* userinfo() const { return _userinfo; }
Jan Jongboom 1:3bff14db67c7 61
Jan Jongboom 1:3bff14db67c7 62 private:
Jan Jongboom 1:3bff14db67c7 63 uint16_t _port;
Jan Jongboom 1:3bff14db67c7 64 const char* _schema;
Jan Jongboom 1:3bff14db67c7 65 const char* _host;
Jan Jongboom 1:3bff14db67c7 66 const char* _path;
Jan Jongboom 1:3bff14db67c7 67 const char* _query;
Jan Jongboom 1:3bff14db67c7 68 const char* _userinfo;
Jan Jongboom 1:3bff14db67c7 69 };
Jan Jongboom 1:3bff14db67c7 70
Jan Jongboom 1:3bff14db67c7 71 #endif // _MBED_HTTP_PARSED_URL_H_