Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Wio_3G_HTTP-GET-example by
Revision 79:7cade4176d12, committed 2018-08-26
- Comitter:
- MACRUM
- Date:
- Sun Aug 26 01:51:34 2018 +0000
- Parent:
- 78:7f66af24c678
- Commit message:
- Enabled Firebase config
Changed in this revision
--- a/main.cpp Thu Aug 23 10:12:47 2018 +0000
+++ b/main.cpp Sun Aug 26 01:51:34 2018 +0000
@@ -1,123 +1,73 @@
#include "mbed.h"
-#include <sstream>
#include "easy-connect.h"
#include "https_request.h"
-#include "ssl_ca_pem.h"
-// For your API Token, refer to "API token" in your application setting page
-const char API_TOKEN[] = "api-token";
-// Your domain name can be seen in the usage explanation with curl.
-const char URL[] = "https://{domain}.cybozu.com/k/v1/record.json";
-
-// app_id, application id, can be checked with your application's URL
-// e.g. https://{domain}.cybozu.com/k/2/ -> app_id is 2
-int app_id = 1;
-
-#if defined(__CC_ARM)
-// To avoid "invalid multibyte character sequence" warning
-#pragma diag_suppress 870
-#endif
+Serial pc(USBTX, USBRX);
-#if !defined(TARGET_WIO_3G)
-#error Selected target is not supported.
-#endif
-
-// on-board resources
-Serial pc(USBTX, USBRX, 115200);
-DigitalOut GrovePower(PB_10, 1);
-
-#define D20 (PB_4)
+/* List of trusted root CA certificates
+ * This is the root CA for Google from GeoTrustGlobalCA
+ *
+ * To add more root certificates, just concatenate them.
+ */
+const char SSL_CA_PEM[] = "-----BEGIN CERTIFICATE-----\n"
+"MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G\n"
+"A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp\n"
+"Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1\n"
+"MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG\n"
+"A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI\n"
+"hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL\n"
+"v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8\n"
+"eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq\n"
+"tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd\n"
+"C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa\n"
+"zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB\n"
+"mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH\n"
+"V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n\n"
+"bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG\n"
+"3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs\n"
+"J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO\n"
+"291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS\n"
+"ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd\n"
+"AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7\n"
+"TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==\n"
+"-----END CERTIFICATE-----";
-// Grove sensors
-
-// buzzer
-DigitalOut buzzer(D38);
+void dump_response(HttpResponse* res) {
+ mbedtls_printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
-// button or touch sensor
-InterruptIn btn(D20);
-int id = 0;
-
-void push()
-{
- id++;
+ mbedtls_printf("Headers:\n");
+ for (size_t ix = 0; ix < res->get_headers_length(); ix++) {
+ mbedtls_printf("\t%s: %s\n", res->get_headers_fields()[ix]->c_str(), res->get_headers_values()[ix]->c_str());
+ }
+ mbedtls_printf("\nBody (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
}
-// JSON simplicity parser
-char* j_paser( const char *buf , char *word , char *out )
-{
- int i = 0;
- char *p;
- char _word[64] = "\"\0";
-
- strcat(_word , word );
- strcat(_word , "\"" );
-
- p = strstr( (char*)buf , _word ) + 2 + strlen(_word);
+int main() {
+ pc.baud(115200);
- while( (p[i] != ',')&&(p[i] != '\n')&&(p[i] != '"') ) {
- out[i] = p[i];
- i++;
- }
- out[i] = '\0';
-
- return p;
-}
-
-// main method. retrieve data from kintone by HTTP GET
-int main()
-{
- btn.mode(PullUp);
- btn.fall(push); // set interrupt handler
-
- NetworkInterface* network = NULL;
- network = easy_connect(true); // If true, prints out connection details.
+ NetworkInterface* network = easy_connect(true);
if (!network) {
- pc.printf("\n----- Network Error -----\n");
- return -1;
+ return 1;
}
- pc.printf("\n----- Network Connected -----\n");
- wait(2.0);
-
- while(1) {
- // Set url
- std::stringstream ss_url;
- std::string s_url(URL);
+ // GET request to firebase.google.com
+ {
+ printf("\n----- HTTPS GET request -----\n");
- ss_url << s_url << "?app=" << app_id << "&id=" << id;
- string url = ss_url.str();
- pc.printf("%s\n", url.c_str());
-
- pc.printf("\n----- HTTPS GET request -----\n");
- HttpsRequest* get_req = new HttpsRequest(network, SSL_CA_PEM, HTTP_GET, url.c_str());
- get_req->set_header("X-Cybozu-API-Token", API_TOKEN);
- HttpResponse* get_res = get_req->send();
-
- pc.printf("\n----- HTTPS GET response [%d]-----\n", get_res->get_status_code());
+ HttpsRequest* get_req = new HttpsRequest(network, SSL_CA_PEM, HTTP_GET, "https://firebase.google.com/styles/docs.css");
+ get_req->set_debug(true);
- if(get_res->get_status_code() == 200) {
- pc.printf("\n----- HTTPS GET response 200 -----\n");
- const char* body = get_res->get_body_as_string().c_str();
-
- pc.printf("%s\n", body);
-
- // Response JSON parse
- char value[256];
-
- char* p = j_paser(body, "日付", value);
- j_paser(p,"value", value);
- pc.printf("date:%s\n", value);
-
- p = j_paser(body, "文字列__1行_", value);
- j_paser(p,"value", value);
- pc.printf("%s\n", value);
-
- buzzer = 1;
- wait(0.1);
- buzzer = 0;
+ HttpResponse* get_res = get_req->send();
+ if (!get_res) {
+ printf("HttpRequest failed (error code %d)\n", get_req->get_error());
+ return 1;
}
+ printf("\n----- HTTPS GET response -----\n");
+ dump_response(get_res);
delete get_req;
- wait(10.0);
}
+
+ Thread::wait(osWaitForever);
}
+
--- a/mbed_app.json Thu Aug 23 10:12:47 2018 +0000
+++ b/mbed_app.json Sun Aug 26 01:51:34 2018 +0000
@@ -1,5 +1,6 @@
{
"macros": [
+ "MBEDTLS_USER_CONFIG_FILE=\"mbedtls_entropy_config.h\""
],
"config": {
"sock-type": "TCP",
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbedtls_entropy_config.h Sun Aug 26 01:51:34 2018 +0000 @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2006-2018, Arm Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#if !defined(MBEDTLS_ENTROPY_HARDWARE_ALT) && \ + !defined(MBEDTLS_ENTROPY_NV_SEED) && !defined(MBEDTLS_TEST_NULL_ENTROPY) +#error "This hardware does not have an entropy source." +#endif /* !MBEDTLS_ENTROPY_HARDWARE_ALT && !MBEDTLS_ENTROPY_NV_SEED && + * !MBEDTLS_TEST_NULL_ENTROPY */ + +#if !defined(MBEDTLS_SHA1_C) +#define MBEDTLS_SHA1_C +#endif /* !MBEDTLS_SHA1_C */ + +/* + * This value is sufficient for handling 2048 bit RSA keys. + * + * Set this value higher to enable handling larger keys, but be aware that this + * will increase the stack usage. + */ +#define MBEDTLS_MPI_MAX_SIZE 256 + +#define MBEDTLS_MPI_WINDOW_SIZE 1
--- a/ssl_ca_pem.h Thu Aug 23 10:12:47 2018 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -const char SSL_CA_PEM[] = "-----BEGIN CERTIFICATE-----\n" -"MIIFADCCA+igAwIBAgIBBzANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx\n" -"EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT\n" -"HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs\n" -"ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTExMDUwMzA3MDAw\n" -"MFoXDTMxMDUwMzA3MDAwMFowgcYxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6\n" -"b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj\n" -"aG5vbG9naWVzLCBJbmMuMTMwMQYDVQQLEypodHRwOi8vY2VydHMuc3RhcmZpZWxk\n" -"dGVjaC5jb20vcmVwb3NpdG9yeS8xNDAyBgNVBAMTK1N0YXJmaWVsZCBTZWN1cmUg\n" -"Q2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IB\n" -"DwAwggEKAoIBAQDlkGZL7PlGcakgg77pbL9KyUhpgXVObST2yxcT+LBxWYR6ayuF\n" -"pDS1FuXLzOlBcCykLtb6Mn3hqN6UEKwxwcDYav9ZJ6t21vwLdGu4p64/xFT0tDFE\n" -"3ZNWjKRMXpuJyySDm+JXfbfYEh/JhW300YDxUJuHrtQLEAX7J7oobRfpDtZNuTlV\n" -"Bv8KJAV+L8YdcmzUiymMV33a2etmGtNPp99/UsQwxaXJDgLFU793OGgGJMNmyDd+\n" -"MB5FcSM1/5DYKp2N57CSTTx/KgqT3M0WRmX3YISLdkuRJ3MUkuDq7o8W6o0OPnYX\n" -"v32JgIBEQ+ct4EMJddo26K3biTr1XRKOIwSDAgMBAAGjggEsMIIBKDAPBgNVHRMB\n" -"Af8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUJUWBaFAmOD07LSy+\n" -"zWrZtj2zZmMwHwYDVR0jBBgwFoAUfAwyH6fZMH/EfWijYqihzqsHWycwOgYIKwYB\n" -"BQUHAQEELjAsMCoGCCsGAQUFBzABhh5odHRwOi8vb2NzcC5zdGFyZmllbGR0ZWNo\n" -"LmNvbS8wOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2NybC5zdGFyZmllbGR0ZWNo\n" -"LmNvbS9zZnJvb3QtZzIuY3JsMEwGA1UdIARFMEMwQQYEVR0gADA5MDcGCCsGAQUF\n" -"BwIBFitodHRwczovL2NlcnRzLnN0YXJmaWVsZHRlY2guY29tL3JlcG9zaXRvcnkv\n" -"MA0GCSqGSIb3DQEBCwUAA4IBAQBWZcr+8z8KqJOLGMfeQ2kTNCC+Tl94qGuc22pN\n" -"QdvBE+zcMQAiXvcAngzgNGU0+bE6TkjIEoGIXFs+CFN69xpk37hQYcxTUUApS8L0\n" -"rjpf5MqtJsxOYUPl/VemN3DOQyuwlMOS6eFfqhBJt2nk4NAfZKQrzR9voPiEJBjO\n" -"eT2pkb9UGBOJmVQRDVXFJgt5T1ocbvlj2xSApAer+rKluYjdkf5lO6Sjeb6JTeHQ\n" -"sPTIFwwKlhR8Cbds4cLYVdQYoKpBaXAko7nv6VrcPuuUSvC33l8Odvr7+2kDRUBQ\n" -"7nIMpBKGgc0T0U7EPMpODdIm8QC3tKai4W56gf0wrHofx1l7\n" -"-----END CERTIFICATE-----\n"; \ No newline at end of file
