firego

package module
v0.0.0-...-c05096c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 21, 2015 License: MIT Imports: 13 Imported by: 10

README

Repository has moved

This repository is now being maintained under https://github.com/zabawaba99/firego

Documentation

Overview

Package firego is a REST client for Firebase (https://firebase.com).

Index

Examples

Constants

View Source
const EventTypeError = "event_error"

EventTypeError is the type that is set on an Event struct if an error occurs while watching a Firebase reference

Variables

View Source
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 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{}
}

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 New

func New(url string) *Firebase

New creates a new Firebase reference

func (*Firebase) Auth

func (fb *Firebase) Auth(token string)

Auth sets the custom Firebase token used to authenticate to Firebase

Example
package main

import (
	"github.com/CloudCom/firego"
)

func main() {
	fb := firego.New("https://someapp.firebaseio.com")
	fb.Auth("my-token")
}
Output:

func (*Firebase) Child

func (fb *Firebase) Child(child string) *Firebase

Child creates a new Firebase reference for the requested child with the same configuration as the parent

Example
package main

import (
	"log"

	"github.com/CloudCom/firego"
)

func main() {
	fb := firego.New("https://someapp.firebaseio.com")
	childFB := fb.Child("some/child/path")

	log.Printf("My new ref %s\n", childFB)
}
Output:

func (*Firebase) EndAt

func (fb *Firebase) EndAt(value string) *Firebase

EndAt creates a new Firebase reference with the requested EndAt configuration

func (*Firebase) IncludePriority

func (fb *Firebase) IncludePriority(v bool)

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/CloudCom/firego"
)

func main() {
	fb := firego.New("https://someapp.firebaseio.com")
	// turn on
	fb.IncludePriority(true)
	// turn off
	fb.IncludePriority(false)
}
Output:

func (*Firebase) OrderBy

func (fb *Firebase) OrderBy(value string) *Firebase

OrderBy creates a new Firebase reference with the requested OrderBy configuration

func (*Firebase) Push

func (fb *Firebase) Push(v interface{}) (*Firebase, error)

Push creates a reference to an auto-generated child location

Example
package main

import (
	"log"

	"github.com/CloudCom/firego"
)

func main() {
	fb := firego.New("https://someapp.firebaseio.com")
	newRef, err := fb.Push("my-value")
	if err != nil {
		log.Fatal(err)
	}

	log.Printf("My new ref %s\n", newRef)
}
Output:

func (*Firebase) Remove

func (fb *Firebase) Remove() error

Remove the Firebase reference from the cloud

Example
package main

import (
	"log"

	"github.com/CloudCom/firego"
)

func main() {
	fb := firego.New("https://someapp.firebaseio.com/some/value")
	if err := fb.Remove(); err != nil {
		log.Fatal(err)
	}
}
Output:

func (*Firebase) Set

func (fb *Firebase) Set(v interface{}) error

Set the value of the Firebase reference

Example
package main

import (
	"log"

	"github.com/CloudCom/firego"
)

func main() {
	fb := firego.New("https://someapp.firebaseio.com")

	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

func (fb *Firebase) Shallow(v bool)

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://www.firebase.com/docs/rest/api/#section-param-shallow

Example
package main

import (
	"github.com/CloudCom/firego"
)

func main() {
	fb := firego.New("https://someapp.firebaseio.com")
	// turn on
	fb.Shallow(true)
	// turn off
	fb.Shallow(false)
}
Output:

func (*Firebase) StartAt

func (fb *Firebase) StartAt(value string) *Firebase

StartAt creates a new Firebase reference with the requested StartAt configuration

func (*Firebase) StopWatching

func (fb *Firebase) StopWatching()

StopWatching stops tears down all connections that are watching

Example
package main

import (
	"log"
	"time"

	"github.com/CloudCom/firego"
)

func main() {
	fb := firego.New("https://someapp.firebaseio.com/some/value")
	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) String

func (fb *Firebase) String() string

String returns the string representation of the Firebase reference

func (*Firebase) Unauth

func (fb *Firebase) Unauth()

Unauth removes the current token being used to authenticate to Firebase

func (*Firebase) Update

func (fb *Firebase) Update(v interface{}) error

Update the specific child with the given value

Example
package main

import (
	"log"

	"github.com/CloudCom/firego"
)

func main() {
	fb := firego.New("https://someapp.firebaseio.com/some/value")
	if err := fb.Update("new-value"); err != nil {
		log.Fatal(err)
	}
}
Output:

func (*Firebase) Value

func (fb *Firebase) Value(v interface{}) error

Value gets the value of the Firebase reference

Example
package main

import (
	"log"

	"github.com/CloudCom/firego"
)

func main() {
	fb := firego.New("https://someapp.firebaseio.com/some/value")
	var v interface{}
	if err := fb.Value(v); err != nil {
		log.Fatal(err)
	}

	log.Printf("My value %v\n", v)
}
Output:

func (*Firebase) Watch

func (fb *Firebase) Watch(notifications chan Event) error

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/CloudCom/firego"
)

func main() {
	fb := firego.New("https://someapp.firebaseio.com/some/value")
	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:

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL