NAME
Firefox::Sync::Client - A Client for the Firefox Sync Server
SYNOPSIS
Simple example:
my
$c
= new Firefox::Sync::Client(
User
=>
'your@mail.address'
,
Password
=>
'SyncPassword'
,
SyncKey
=>
'x-thisx-isxxx-thexx-secre-txkey'
,
);
my
$tabs
=
$c
->get_tabs;
foreach
my
$client
(
@$tabs
) {
$client
->{
'payload'
}->{
'clientName'
} .
"\n"
;
foreach
my
$tab
(@{
$client
->{
'payload'
}->{
'tabs'
}}) {
' '
.
$tab
->{
'title'
} .
"\n"
;
' --> '
.
$tab
->{
'urlHistory'
}[0] .
"\n"
;
}
"\n"
;
}
Advanced example, printing HTML code with all bookmarks and links. Results will be cached:
use
utf8;
binmode
STDOUT,
':encoding(UTF-8)'
;
my
$c
= new Firefox::Sync::Client(
User
=>
'your@mail.address'
,
Password
=>
'SyncPassword'
,
SyncKey
=>
'x-thisx-isxxx-thexx-secre-txkey'
,
CacheFile
=>
'/tmp/ffsync-cache'
,
);
my
$bm
=
$c
->get_bookmarks;
'<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body>'
.
"\n"
;
print_children(1,
$bm
);
'</body></html>'
.
"\n"
;
sub
print_children {
my
(
$h
,
$bm
) =
@_
;
foreach
my
$item
(
@$bm
) {
if
(
$item
->{
'payload'
}->{
'type'
} eq
'folder'
) {
'<h'
.
$h
.
'>'
.
$item
->{
'payload'
}->{
'title'
} .
'</h'
.
$h
.
'>'
.
"\n"
;
'<ul>'
.
"\n"
;
print_children(
$h
+ 1,
$item
->{
'payload'
}->{
'children'
});
'</ul>'
.
"\n"
;
}
if
(
defined
$item
->{
'payload'
}->{
'bmkUri'
}) {
'<li>'
;
'<a href="'
.
$item
->{
'payload'
}->{
'bmkUri'
} .
'" target="_blank">'
.
$item
->{
'payload'
}->{
'title'
} .
'</a>'
;
'</li>'
.
"\n"
;
}
else
{
'<hr>'
.
"\n"
;
}
}
}
DESCRIPTION
This module implements a client to the popular Firefox Sync service.
More information on the server can be found at Mozilla: https://developer.mozilla.org/en-US/docs/Firefox_Sync
For now, this module is only a read-only client. That means, it is possible to get some collections of things from the server by using either the specialized get_* methods or get_raw_collection(). The methods usually return an array reference.
In a future release, caching and some other improvements will be realized.
METHODS
What each method actually returns, can be different. But it will always be a reference to an array containing hashes. Every hash has the following keys:
id - The ID of the element.
modified - A timestamp of the
last
modification
payload - Contains a hash of elements. The
keys
are different
for
each
collection
- new(%config)
-
Constructor. You can set the following parameters during construction:
ProtocolVersion - defaults to 1.1
URL - The server address
User - The username or e-mail address
Password - The password
SyncKey - The sync/recovery key
CacheFile - A file to be used
for
caching
CacheLifetime - Lifetime of cached requests in seconds
- get_raw_collection($collection)
-
Returns an array reference containing all elements of the given collection.
The following collections are tested (but other collections may also work):
bookmarks
prefs
clients
forms
history
passwords
tabs
addons
You can not fetch the metadata with this method, please use get_meta() instead. Also, if you plan to do something with the 'bookmarks' collection, better use get_bookmarks(), as it returns a somewhat nicer formatted array reference.
- get_addons()
-
Returns an array of the synced add-on data.
- get_bookmarks()
-
Returns all bookmark collections, folders and bookmarks in a well formatted array. That means, the references are recursively resolved in the tree.
- get_clients()
-
Returns all known data of the connected Sync clients.
- get_forms()
-
Returns an array of synchronized form input data.
- get_history()
-
Returns the synced browser history.
- get_meta()
-
Returns an array containing the sync metadata for the user.
- get_passwords()
-
Returns all synchronized passwords. The passwords are returned unencrypted.
- get_prefs()
-
Returns the synchronized browser preferences.
- get_tabs()
-
Returns an array of tabs opened on each Sync client / Browser.
AUTHOR
Robin Schroeder, <schrorg@cpan.org>
COPYRIGHT AND LICENSE
Copyright (C) 2012 by Robin Schroeder
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10 or, at your option, any later version of Perl 5 you may have available.