Skip to content

timfjord/carddav

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stand With Ukraine

Carddav

Build Status

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.cards

or

service = Carddav.service(:apple, 'email@icloud.com', 'password')
service.cards

Under 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.cards

Discovery 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_principal url
  • getting addressbook_home_set url
  • getting addressbook url
  • 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.