Documentation ¶
Overview ¶
Package firego is a REST client for Firebase (https://firebase.com).
Index ¶
- Constants
- Variables
- type ChildEventFunc
- type DataSnapshot
- type ErrTimeout
- type Event
- type Firebase
- func (fb *Firebase) Auth(token string)
- func (fb *Firebase) Child(child string) *Firebase
- func (fb *Firebase) ChildAdded(fn ChildEventFunc) error
- func (fb *Firebase) ChildChanged(fn ChildEventFunc) error
- func (fb *Firebase) ChildRemoved(fn ChildEventFunc) error
- func (fb *Firebase) EndAt(value string) *Firebase
- func (fb *Firebase) EndAtValue(value interface{}) *Firebase
- func (fb *Firebase) EqualTo(value string) *Firebase
- func (fb *Firebase) EqualToValue(value interface{}) *Firebase
- func (fb *Firebase) IncludePriority(v bool)
- func (fb *Firebase) LimitToFirst(value int64) *Firebase
- func (fb *Firebase) LimitToLast(value int64) *Firebase
- func (fb *Firebase) OrderBy(value string) *Firebase
- func (fb *Firebase) Push(v interface{}) (*Firebase, error)
- func (fb *Firebase) Ref(path string) (*Firebase, error)
- func (fb *Firebase) Remove() error
- func (fb *Firebase) RemoveEventFunc(fn ChildEventFunc)
- func (fb *Firebase) Set(v interface{}) error
- func (fb *Firebase) SetURL(url string)
- func (fb *Firebase) Shallow(v bool)
- func (fb *Firebase) StartAt(value string) *Firebase
- func (fb *Firebase) StartAtValue(value interface{}) *Firebase
- func (fb *Firebase) StopWatching()
- func (fb *Firebase) String() string
- func (fb *Firebase) Transaction(fn TransactionFn) error
- func (fb *Firebase) URL() string
- func (fb *Firebase) Unauth()
- func (fb *Firebase) Update(v interface{}) error
- func (fb *Firebase) Value(v interface{}) error
- func (fb *Firebase) Watch(notifications chan Event) error
- type TransactionFn
Examples ¶
Constants ¶
const ( // EventTypePut is the event type sent when new data is inserted to the // Firebase instance. EventTypePut = "put" // EventTypePatch is the event type sent when data at the Firebase instance is // updated. EventTypePatch = "patch" // EventTypeError is the event type sent when an unknown error is encountered. EventTypeError = "event_error" // EventTypeAuthRevoked is the event type sent when the supplied auth parameter // is no longer valid. EventTypeAuthRevoked = "auth_revoked" )
Variables ¶
var TimeoutDuration = 30 * time.Second
TimeoutDuration is the length of time any request will have to establish a connection and receive headers from Firebase before returning an ErrTimeout error.
Functions ¶
This section is empty.
Types ¶
type ChildEventFunc ¶
type ChildEventFunc func(snapshot DataSnapshot, previousChildKey string)
ChildEventFunc is the type of function that is called for every new child added under a firebase reference. The snapshot argument contains the data that was added. The previousChildKey argument contains the key of the previous child that this function was called for.
type DataSnapshot ¶
type DataSnapshot struct { // Key retrieves the key for the source location of this snapshot Key string // Value retrieves the data contained in this snapshot. Value interface{} }
DataSnapshot instances contains data from a Firebase reference.
func (*DataSnapshot) Child ¶
func (d *DataSnapshot) Child(name string) (DataSnapshot, bool)
Child gets a DataSnapshot for the location at the specified relative path. The relative path can either be a simple child key (e.g. 'fred') or a deeper slash-separated path (e.g. 'fred/name/first').
type ErrTimeout ¶
type ErrTimeout struct {
// contains filtered or unexported fields
}
ErrTimeout is an error type is that is returned if a request exceeds the TimeoutDuration configured.
type Event ¶
type Event struct { // Type of event that was received Type string // Path to the data that changed Path string // Data that changed Data interface{} // contains filtered or unexported fields }
Event represents a notification received when watching a firebase reference.
type Firebase ¶
type Firebase struct {
// contains filtered or unexported fields
}
Firebase represents a location in the cloud.
func (*Firebase) Auth ¶
Auth sets the custom Firebase token used to authenticate to Firebase.
Example ¶
package main import ( "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com", nil) fb.Auth("my-token") }
Output:
func (*Firebase) Child ¶
Child creates a new Firebase reference for the requested child with the same configuration as the parent.
Example ¶
package main import ( "log" "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com", nil) childFB := fb.Child("some/child/path") log.Printf("My new ref %s\n", childFB) }
Output:
func (*Firebase) ChildAdded ¶
func (fb *Firebase) ChildAdded(fn ChildEventFunc) error
ChildAdded listens on the firebase instance and executes the callback for every child that is added.
You cannot set the same function twice on a Firebase reference, if you do the first function will be overridden and you will not be able to close the connection.
func (*Firebase) ChildChanged ¶
func (fb *Firebase) ChildChanged(fn ChildEventFunc) error
ChildChanged listens on the firebase instance and executes the callback for every child that is changed.
You cannot set the same function twice on a Firebase reference, if you do the first function will be overridden and you will not be able to close the connection.
func (*Firebase) ChildRemoved ¶
func (fb *Firebase) ChildRemoved(fn ChildEventFunc) error
ChildRemoved listens on the firebase instance and executes the callback for every child that is deleted.
You cannot set the same function twice on a Firebase reference, if you do the first function will be overridden and you will not be able to close the connection.
func (*Firebase) EndAt ¶
EndAt creates a new Firebase reference with the requested EndAt configuration. The value that is passed in is automatically escaped if it is a string value. Numeric strings are automatically converted to numbers.
EndAt(7) // -> endAt=7 EndAt("7") // -> endAt=7 EndAt("foo") // -> endAt="foo" EndAt(`"foo"`) // -> endAt="foo"
Reference https://firebase.google.com/docs/database/rest/retrieve-data#section-rest-filtering
Example ¶
package main import ( "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com", nil) // Set value fb = fb.EndAt("a") // Remove query parameter fb = fb.EndAt("") }
Output:
func (*Firebase) EndAtValue ¶
EndAtValue creates a new Firebase reference with the requested EndAt configuration. The value that is passed in is automatically escaped if it is a string value. Numeric strings are preserved as strings.
EndAtValue(7) // -> endAt=7 EndAtValue("7") // -> endAt="7" EndAtValue("foo") // -> endAt="foo" EndAtValue(`"foo"`) // -> endAt="foo"
Reference https://firebase.google.com/docs/database/rest/retrieve-data#section-rest-filtering
func (*Firebase) EqualTo ¶
EqualTo sends the query string equalTo so that one can find nodes with exactly matching values. The value that is passed in is automatically escaped if it is a string value. Numeric strings are automatically converted to numbers.
EqualTo(7) // -> equalTo=7 EqualTo("7") // -> equalTo=7 EqualTo("foo") // -> equalTo="foo" EqualTo(`"foo"`) // -> equalTo="foo"
Reference https://firebase.google.com/docs/database/rest/retrieve-data#section-rest-filtering
func (*Firebase) EqualToValue ¶
EqualToValue sends the query string equalTo so that one can find nodes with exactly matching values. The value that is passed in is automatically escaped if it is a string value. Numeric strings are preserved as strings.
EqualToValue(7) // -> equalTo=7 EqualToValue("7") // -> equalTo="7" EqualToValue("foo") // -> equalTo="foo" EqualToValue(`"foo"`) // -> equalTo="foo"
Reference https://firebase.google.com/docs/database/rest/retrieve-data#section-rest-filtering
func (*Firebase) IncludePriority ¶
IncludePriority determines whether or not to ask Firebase for the values priority. By default, the priority is not returned.
Reference https://www.firebase.com/docs/rest/api/#section-param-format
Example ¶
package main import ( "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com", nil) // Set value fb.IncludePriority(true) // Remove query parameter fb.IncludePriority(false) }
Output:
func (*Firebase) LimitToFirst ¶
LimitToFirst creates a new Firebase reference with the requested limitToFirst configuration.
Reference https://firebase.google.com/docs/database/rest/retrieve-data#limit-queries
Example ¶
package main import ( "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com", nil) // Set value fb = fb.LimitToFirst(5) // Remove query parameter fb = fb.LimitToFirst(-1) }
Output:
func (*Firebase) LimitToLast ¶
LimitToLast creates a new Firebase reference with the requested limitToLast configuration.
Reference https://firebase.google.com/docs/database/rest/retrieve-data#limit-queries
Example ¶
package main import ( "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com", nil) // Set value fb = fb.LimitToLast(8) // Remove query parameter fb = fb.LimitToLast(-1) }
Output:
func (*Firebase) OrderBy ¶
OrderBy creates a new Firebase reference with the requested OrderBy configuration. The value that is passed in is automatically escaped if it is a string value.
OrderBy("foo") // -> orderBy="foo" OrderBy(`"foo"`) // -> orderBy="foo" OrderBy("$key") // -> orderBy="$key"
Reference https://firebase.google.com/docs/database/rest/retrieve-data#orderby
Example ¶
package main import ( "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com", nil) // Set value fb = fb.OrderBy("a") // Remove query parameter fb = fb.OrderBy("") }
Output:
func (*Firebase) Push ¶
Push creates a reference to an auto-generated child location.
Example ¶
package main import ( "log" "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com", nil) newRef, err := fb.Push("my-value") if err != nil { log.Fatal(err) } log.Printf("My new ref %s\n", newRef) }
Output:
func (*Firebase) Remove ¶
Remove the Firebase reference from the cloud.
Example ¶
package main import ( "log" "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com/some/value", nil) if err := fb.Remove(); err != nil { log.Fatal(err) } }
Output:
func (*Firebase) RemoveEventFunc ¶
func (fb *Firebase) RemoveEventFunc(fn ChildEventFunc)
RemoveEventFunc removes the given function from the firebase reference.
func (*Firebase) Set ¶
Set the value of the Firebase reference.
Example ¶
package main import ( "log" "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com", nil) v := map[string]interface{}{ "foo": "bar", "bar": 1, "bez": []string{"hello", "world"}, } if err := fb.Set(v); err != nil { log.Fatal(err) } }
Output:
func (*Firebase) Shallow ¶
Shallow limits the depth of the data returned when calling Value. If the data at the location is a JSON primitive (string, number or boolean), its value will be returned. If the data is a JSON object, the values for each key will be truncated to true.
Reference https://firebase.google.com/docs/database/rest/retrieve-data#shallow
Example ¶
package main import ( "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com", nil) // Set value fb.Shallow(true) // Remove query parameter fb.Shallow(false) }
Output:
func (*Firebase) StartAt ¶
StartAt creates a new Firebase reference with the requested StartAt configuration. The value that is passed in is automatically escaped if it is a string value. Numeric strings are automatically converted to numbers.
StartAt(7) // -> startAt=7 StartAt("7") // -> startAt=7 StartAt("foo") // -> startAt="foo" StartAt(`"foo"`) // -> startAt="foo"
Reference https://firebase.google.com/docs/database/rest/retrieve-data#section-rest-filtering
Example ¶
package main import ( "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com", nil) // Set value fb = fb.StartAt("a") // Remove query parameter fb = fb.StartAt("") }
Output:
func (*Firebase) StartAtValue ¶
StartAtValue creates a new Firebase reference with the requested StartAt configuration. The value that is passed in is automatically escaped if it is a string value. Numeric strings are preserved as strings.
StartAtValue(7) // -> startAt=7 StartAtValue("7") // -> startAt="7" StartAtValue("foo") // -> startAt="foo" StartAtValue(`"foo"`) // -> startAt="foo"
Reference https://firebase.google.com/docs/database/rest/retrieve-data#section-rest-filtering
func (*Firebase) StopWatching ¶
func (fb *Firebase) StopWatching()
StopWatching stops tears down all connections that are watching.
Example ¶
package main import ( "log" "time" "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com/some/value", nil) notifications := make(chan firego.Event) if err := fb.Watch(notifications); err != nil { log.Fatal(err) } go func() { for range notifications { } log.Println("Channel closed") }() time.Sleep(10 * time.Millisecond) // let go routine start fb.StopWatching() }
Output:
func (*Firebase) Transaction ¶
func (fb *Firebase) Transaction(fn TransactionFn) error
Transaction runs a transaction on the data at this location. The TransactionFn parameter will be called, possibly multiple times, with the current data at this location. It is responsible for inspecting that data and specifying either the desired new data at the location or that the transaction should be aborted.
Since the provided function may be called repeatedly for the same transaction, be extremely careful of any side effects that may be triggered by this method.
Best practices for this method are to rely only on the data that is passed in.
func (*Firebase) Unauth ¶
func (fb *Firebase) Unauth()
Unauth removes the current token being used to authenticate to Firebase.
func (*Firebase) Update ¶
Update the specific child with the given value.
Example ¶
package main import ( "log" "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com/some/value", nil) if err := fb.Update("new-value"); err != nil { log.Fatal(err) } }
Output:
func (*Firebase) Value ¶
Value gets the value of the Firebase reference.
Example ¶
package main import ( "log" "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com/some/value", nil) var v interface{} if err := fb.Value(v); err != nil { log.Fatal(err) } log.Printf("My value %v\n", v) }
Output:
func (*Firebase) Watch ¶
Watch listens for changes on a firebase instance and passes over to the given chan.
Only one connection can be established at a time. The second call to this function without a call to fb.StopWatching will close the channel given and return nil immediately.
Example ¶
package main import ( "log" "github.com/zabawaba99/firego" ) func main() { fb := firego.New("https://someapp.firebaseio.com/some/value", nil) notifications := make(chan firego.Event) if err := fb.Watch(notifications); err != nil { log.Fatal(err) } for event := range notifications { log.Println("Event Received") log.Printf("Type: %s\n", event.Type) log.Printf("Path: %s\n", event.Path) log.Printf("Data: %v\n", event.Data) if event.Type == firego.EventTypeError { log.Print("Error occurred, loop ending") } } }
Output:
type TransactionFn ¶
type TransactionFn func(currentSnapshot interface{}) (result interface{}, err error)
TransactionFn is used to run a transaction on a Firebase reference. See Firebase.Transaction for more information.