This repository was archived by the owner on Mar 17, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 492
/
Copy pathFirebase.h
105 lines (81 loc) · 2.88 KB
/
Firebase.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
//
// Copyright 2015 Google Inc.
//
// 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.
//
// firebase-arduino is an Arduino client for Firebase.
// It is currently limited to the ESP8266 board family.
#ifndef firebase_h
#define firebase_h
#include "WString.h"
#include <Arduino.h>
#include <memory>
#include <ArduinoJson.h>
#include "FirebaseHttpClient.h"
#include "FirebaseError.h"
#include "FirebaseObject.h"
// Firebase REST API client.
class Firebase {
public:
Firebase(WiFiClient* client, const std::string& host, const std::string& auth = "");
const std::string& auth() const;
// Fetch json encoded `value` at `path`.
void get(const std::string& path);
// Set json encoded `value` at `path`.
void set(const std::string& path, const std::string& json);
// Add new json encoded `value` to list at `path`.
void push(const std::string& path, const std::string& json);
// Delete value at `path`.
void remove(const std::string& path);
// Start a stream of events that affect value at `path`.
void stream(const std::string& path);
protected:
// Used for testing.
Firebase() {}
private:
std::shared_ptr<FirebaseHttpClient> http_;
std::string host_;
std::string auth_;
};
class FirebaseCall {
public:
FirebaseCall(const std::shared_ptr<FirebaseHttpClient> http = NULL) : http_(http) {}
virtual ~FirebaseCall();
const FirebaseError& error() const {
return error_;
}
void analyzeError(char* method, int status, const std::string & path_with_auth);
const std::string& response() const {
return response_;
}
const JsonObject& json();
protected:
const std::shared_ptr<FirebaseHttpClient> http_;
FirebaseError error_;
std::string response_;
std::shared_ptr<StaticJsonBuffer<FIREBASE_JSONBUFFER_SIZE>> buffer_;
};
class FirebaseRequest : public FirebaseCall {
public:
FirebaseRequest(const std::shared_ptr<FirebaseHttpClient> http = NULL) : FirebaseCall(http) { }
virtual ~FirebaseRequest() {}
int sendRequest(const std::string& host, const std::string& auth,
char* method, const std::string& path, const std::string& data = "");
};
class FirebaseStream : public FirebaseCall {
public:
FirebaseStream(const std::shared_ptr<FirebaseHttpClient> http = NULL) : FirebaseCall(http) { }
virtual ~FirebaseStream() {}
void startStreaming(const std::string& host, const std::string& auth, const std::string& path);
};
#endif // firebase_h