Carddav
Ruby implementation for the CardDAV protocol.
For now you can only get cards.
Installation
Add this line to your application's Gemfile:
gem 'carddav'And then execute:
$ bundle
Or install it yourself as:
$ gem install carddav
Usage
The gem was tested with two providers: iCloud and gmx.
To get contacts from these two providers do the following:
service = Carddav.service(:gmx, 'email@gmx.net', 'password')
service.cardsor
service = Carddav.service(:apple, 'email@icloud.com', 'password')
service.cardsUnder the hood it uses Carddav::Client, which uses the standard approach of getting data
from CardDAV servers.
client = Carddav::Client.new('http://my-carddav-server.org', 'email@mail.net', 'password')
client.cardsDiscovery process
Carddav::Client discovers urls step by step and then, as the last step, gets data from addressbook_url
and then parses vcards from the response.
Here are all steps:
- getting
current_user_principalurl - getting
addressbook_home_seturl - getting
addressbookurl - getting cards
When one of the urls is static it can be passed to the client directly. This way some steps in the discovery process will be bypassed
client = Carddav::Client.new('http://my-carddav-server.org', 'email@mail.net', 'password')
client.addressbook_url = '/my-addressbook-url'
client.cards # http://my-carddav-server.org/my-addressbook-url will be used and cards will be fetched from it.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.