Ejemplo n.º 1
0
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;
}