bool JPWiFly::getConnection(String& method, String& url, KeyValue& data) { String line; int8_t index = buffer.readToFirst_P(kProtocolMethodStrings, 3); if (index == -1) return false; method = prog_mem_string(kProtocolMethodStrings[index], 0, -1); if (!buffer.readTo_P(PSTR(" "), &url)) return false; if (!buffer.readTo_P(kNewLineString)) return false; while (true) { String key, value; int8_t index; if ((index = buffer.readToFirst_P(kColonNewLineStrings, 2, &key)) == -1) return false; if (index == 1) break; if (!buffer.readTo_P(kNewLineString, &value)) return false; data.setValueForKey(key, value); } const String* content_length_str = data.valueForKey_P(PSTR("Content-Length")); if (!content_length_str) return true; int content_length = atoi(content_length_str->c_str()); buffer.readNCharacters(content_length, &line); data.setValueForKey("", line); return true; }