Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sergeypedan/burner_email_db

DB of burner email domains, packaged as a Ruby gem
https://github.com/sergeypedan/burner_email_db

burner-email db gem ruby

Last synced: about 2 months ago
JSON representation

DB of burner email domains, packaged as a Ruby gem

Awesome Lists containing this project

README

        

# Burner email DB

[![Gem Version](https://badge.fury.io/rb/burner_email_db.svg)](https://badge.fury.io/rb/burner_email_db)
[![Build Status](https://travis-ci.org/sergeypedan/burner_email_db.svg?branch=master)](https://travis-ci.org/sergeypedan/burner_email_db)

A very long list (119 261) of burner email domains, packaged for Ruby gems.

## Sourse

Copied with much respect from

- Wes Bos’s [repo](https://github.com/wesbos/burner-email-providers)
- https://disposable.github.io/disposable-email-domains/domains.txt
- https://github.com/disposable/disposable/blob/master/blacklist.txt

## Installation

Add this line to your application's `Gemfile`:

```ruby
gem "burner_email_db"
```

## Usage

### Just list everything

```ruby
BurnerEmailDB.domains #=> ["0-00.usa.cc", "0-180.com", ...]
```

### ActiveModel validation

```ruby
class User
validates :email, exclusion: { in: BurnerEmailDB.domains }
end
```

### ActiveModel validator

You could write a validator:

```ruby
class BurnerEmailValidator < ActiveModel::EachValidator

def validate_each(record, attribute_name, address)
return if address.blank? # validate presence separately
record.errors.add attribute_name, :disposable_email if disposable?(address)
end

private def disposable?(address_with_unknown_case)
address = address_with_unknown_case.downcase
BurnerEmailDB.domains.any? { |burner_domain| address.include? burner_domain }
end

end
```

Add translations:

```yaml
---
ru:
errors:
messages:
disposable_email: в сервисе одноразовых email-адресов
```

and then use it like so:

```ruby
class User
validates :email, presence: true, burner_email: true
end
```

### Dry validation

WIP, I promise, Piotr!

## Alternatives

- https://github.com/disposable/disposable
- https://open.kickbox.io

## How to add new

1. Copy the new domains into a file `./new-domains.txt`
1. Run `ruby add.rb`