Mailroute Build Status

Mailroute is a Ruby client for mailroute.net.

Requirements

Ruby 1.8.7, 1.9.3 or 2.0.0.

Installation

Add this line to your application's Gemfile:

gem 'mailroute'

And then execute:

$ bundle

Or install it by yourself as:

$ gem install mailroute

Usage

Configuration

Mailroute.configure(
  :username => '<username here>',
  :apikey => '0d1a...a33'
)

Reseller

# A list of resellers
Mailroute::Reseller.list #=> [...]

# You can specify limit and offset
Mailroute::Reseller.list.offset(20).limit(30) #=> [...]

reseller = Mailroute::Reseller.get(12) #=> Reseller<...>
reseller.name #=> "John Doe"
reseller.name = 'Jane Doe'
reseller.save

Mailroute::Reseller.get(12).name #=> 'Jane Doe'

reseller.delete

Mailroute::Reseller.get(12) #=> ActiveResource::ResourceNotFound

reseller = Mailroute::Reseller.get(name: 'John Smith') #=> Reseller<...>

resellers = Mailroute::Reseller.search('Smith') #=> [Reseller<...>, ...]
resellers.include?(reseller) #=> true

Mailroute::Reseller.filter(name: 'Smith') #=> [...]
Mailroute::Reseller.filter(name__exact: 'John Smith') #=> [...]
Mailroute::Reseller.filter(name__starts_with: 'Jo') #=> [...]

Mailroute::Reseller.list.order_by('-name')
Mailroute::Reseller.list.order_by('name')
Mailroute::Reseller.list.order_by('created_at')

new_reseller = Mailroute::Reseller.create(name: 'New Guy') #=> Reseller<...>
new_reseller.id #=> 11111

new_resellers = Mailroute::Reseller.bulk_create(
    { name: 'R2D2' },
    { name: '3PO' },
    { name: 'Luke Skywalker' }
)
new_resellers.count #=> 3

# mass deletion
#   by ids:
Mailroute::Reseller.delete([10, 12, 13])
#   by instances:
Mailroute::Reseller.delete(new_resellers)

# Associations:
reseller.customers #=> [Customer<...>, ...]
reseller.admins #=> [Admin<...>, ...]
reseller.contacts #=> [ResellerContact<...>, ...]
reseller.branding_info #=> BrandingInfo<...>

send_welcome = true
reseller.create_admin('[email protected]', send_welcome) #=> Admin<...>
reseller.delete_admin('[email protected]')
reseller.create_contact(params) #=> ResellerContact<...>
reseller.create_customer(params) #=> Customer<...>

# All list operations allow chaining
Mailroute::Reseller.
  limit(10).
  offset(30).
  filter(name: 'Fox').
  order('created_at') #=> [Reseller<...>, ...]

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

TODO

  1. clean up vcr cassettes 2. refactor extensions/activeresource.rb - it's a mess 3. implement Reseller.count 4. travisci label
  2. check number of API calls in tests
  3. better error handling when reseller already exists 7. to_many: ["email_account", "localpart_aliases", "default"=>"No default provided.", "help_text"=>"Many related resources. Can be either a list of URIs or list of individually nested resource data.", "nullable"=>true, "readonly"=>true, "related_type"=>"to_many", "type"=>"related", "unique"=>false]
  4. better validation exceptions
  5. refactor base.rb
  6. domain.bulk_create_email_accounts 501 11. mailroute.Policy.get_default_policy()
  7. domain.get_quarantine()
  8. double-check get by name