Project

carddav

0.01
No release in over 3 years
Low commit activity in last 3 years
CardDAV ruby implementation
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.11
~> 10.0
~> 3.4

Runtime

 Project Readme

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.