Carddav
Ruby implementation for CardDAV protocol.
It supports only getting cards right now.
Installation
Add this line to your application's Gemfile:
gem 'carddav'
And then execute:
$ bundle
Or install it yourself as:
$ gem install carddav
Usage
Gem was tested with two providers: iCloud and gmx. To get contacts from them you need to do following:
service = Carddav.service :gmx, '[email protected]', 'password'
service.cards
or
service = Carddav.service :apple, '[email protected]', 'password'
service.cards
Under the hood it uses Carddav::Client
. It uses standart approach of getting data
from CardDAV servers.
client = Carddav.client.new 'http://my-carddav-server.org', '[email protected]', 'password'
client.cards
Discovery process
Carddav::Client
discovers urls steps by step and than finally tried to get data from addressbook_url
and than parse vcards from response.
Here are all steps:
- getting current_user_principal url
- getting addressbook_home_set url
- getting addressbook url
- getting cards
Sometimes some of the url are static so it can be passed to the client. This was we bypass some steps in the discovery process
client = Carddav.client.new 'http://my-carddav-server.org', '[email protected]', 'password'
client.addressbook_url = '/addressbook-url'
client.cards # will use http://my-carddav-server.org/addressbook-url and get cards from there.
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/timsly/carddav.
License
The gem is available as open source under the terms of the MIT License.