Skip to content
This repository was archived by the owner on Mar 17, 2025. It is now read-only.

Commit e1a497c

Browse files
committed
add typed push and set.
See #60.
1 parent 6f1ec7d commit e1a497c

File tree

3 files changed

+62
-27
lines changed

3 files changed

+62
-27
lines changed

examples/FirebasePush_ESP8266/FirebasePush_ESP8266.ino

+5-22
Original file line numberDiff line numberDiff line change
@@ -35,29 +35,12 @@ void setup() {
3535
Serial.println();
3636
Serial.print("connected: ");
3737
Serial.println(WiFi.localIP());
38-
39-
// add a new entry.
40-
FirebasePush push = fbase.push("/logs", "{\".sv\": \"timestamp\"}");
41-
if (push.error()) {
42-
Serial.println("Firebase push failed");
43-
Serial.println(push.error().message());
44-
return;
45-
}
46-
47-
// print key.
48-
Serial.println("Name: " + push.name());
49-
50-
// get all entries.
51-
FirebaseGet get = fbase.get("/logs");
52-
if (get.error()) {
53-
Serial.println("Firebase get failed");
54-
Serial.println(push.error().message());
55-
return;
56-
}
57-
// Print written timestamp.
58-
String data = get.json()[push.name()];
59-
Serial.println("Timestamp:" + data);
6038
}
6139

40+
int n = 0;
6241
void loop() {
42+
// add a new entry.
43+
FirebasePush push = fbase.push("/logs", n++);
44+
Serial.println("pushed: " + push.name());
45+
delay(1000);
6346
}

src/Firebase.cpp

+42
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ String makeFirebaseURL(const String& path, const String& auth) {
3838
return url;
3939
}
4040

41+
template <typename T>
42+
String jsonEncode(const T& value) {
43+
JsonVariant json(value);
44+
String buf;
45+
json.printTo(buf);
46+
return buf;
47+
}
48+
4149
} // namespace
4250

4351
Firebase::Firebase(const String& host) : host_(host) {
@@ -53,11 +61,45 @@ FirebaseGet Firebase::get(const String& path) {
5361
return FirebaseGet(host_, auth_, path, &http_);
5462
}
5563

64+
FirebaseSet Firebase::set(const String& path, int value) {
65+
return FirebaseSet(host_, auth_, path, jsonEncode(value), &http_);
66+
}
67+
FirebaseSet Firebase::set(const String& path, float value) {
68+
return FirebaseSet(host_, auth_, path, jsonEncode(value), &http_);
69+
}
70+
FirebaseSet Firebase::set(const String& path, double value) {
71+
return FirebaseSet(host_, auth_, path, jsonEncode(value), &http_);
72+
}
5673
FirebaseSet Firebase::set(const String& path, const String& value) {
74+
return FirebaseSet(host_, auth_, path, jsonEncode(value), &http_);
75+
}
76+
FirebaseSet Firebase::set(const String& path, const JsonObject& value) {
77+
String buf;
78+
value.printTo(buf);
79+
return FirebaseSet(host_, auth_, path, buf, &http_);
80+
}
81+
FirebaseSet Firebase::setRaw(const String& path, const String& value) {
5782
return FirebaseSet(host_, auth_, path, value, &http_);
5883
}
5984

85+
FirebasePush Firebase::push(const String& path, int value) {
86+
return FirebasePush(host_, auth_, path, jsonEncode(value), &http_);
87+
}
88+
FirebasePush Firebase::push(const String& path, float value) {
89+
return FirebasePush(host_, auth_, path, jsonEncode(value), &http_);
90+
}
91+
FirebasePush Firebase::push(const String& path, double value) {
92+
return FirebasePush(host_, auth_, path, jsonEncode(value), &http_);
93+
}
6094
FirebasePush Firebase::push(const String& path, const String& value) {
95+
return FirebasePush(host_, auth_, path, jsonEncode(value), &http_);
96+
}
97+
FirebasePush Firebase::push(const String& path, const JsonObject& value) {
98+
String buf;
99+
value.printTo(buf);
100+
return FirebasePush(host_, auth_, path, buf, &http_);
101+
}
102+
FirebasePush Firebase::pushRaw(const String& path, const String& value) {
61103
return FirebasePush(host_, auth_, path, value, &http_);
62104
}
63105

src/Firebase.h

+15-5
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,21 @@ class Firebase {
4141
// Fetch json encoded `value` at `path`.
4242
FirebaseGet get(const String& path);
4343

44+
FirebaseSet set(const String& path, int value);
45+
FirebaseSet set(const String& path, float value);
46+
FirebaseSet set(const String& path, double value);
47+
FirebaseSet set(const String& path, const String& value);
48+
FirebaseSet set(const String& path, const JsonObject& value);
4449
// Set json encoded `value` at `path`.
45-
FirebaseSet set(const String& path, const String& json);
50+
FirebaseSet setRaw(const String& path, const String& value);
4651

52+
FirebasePush push(const String& path, int value);
53+
FirebasePush push(const String& path, float value);
54+
FirebasePush push(const String& path, double value);
55+
FirebasePush push(const String& path, const String& value);
56+
FirebasePush push(const String& path, const JsonObject& value);
4757
// Add new json encoded `value` to list at `path`.
48-
FirebasePush push(const String& path, const String& json);
58+
FirebasePush pushRaw(const String& path, const String& value);
4959

5060
// Delete value at `path`.
5161
FirebaseRemove remove(const String& path);
@@ -63,11 +73,11 @@ class FirebaseError {
6373
public:
6474
FirebaseError() {}
6575
FirebaseError(int code, const String& message) : code_(code), message_(message) {
66-
}
76+
}
6777
operator bool() const { return code_ != 0; }
6878
int code() const { return code_; }
6979
const String& message() const { return message_; }
70-
private:
80+
private:
7181
int code_ = 0;
7282
String message_ = "";
7383
};
@@ -77,7 +87,7 @@ class FirebaseCall {
7787
FirebaseCall() {}
7888
FirebaseCall(const String& host, const String& auth,
7989
const char* method, const String& path,
80-
const String& data = "",
90+
const String& data = "",
8191
HTTPClient* http = NULL);
8292
const FirebaseError& error() const {
8393
return error_;

0 commit comments

Comments
 (0)