guerrilla_mail_client 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/guerrilla_mail_client.rb +98 -0
  3. metadata +46 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1d546db9089acbe1825ad514aba335fbbbf1c0f36fff475bc06863085834602a
4
+ data.tar.gz: 4627cf08f0db0484e186f12f1a7188e19142424138d3d1648c74663155628967
5
+ SHA512:
6
+ metadata.gz: bd44d8c238c5b1b83f1febe199a1fc7db368230d3186557ba9f11b2aa05e49c96ca4e8bf7f0a5be4c3b471671415582151c5f2f80e67650ae5fb7e224614ecda
7
+ data.tar.gz: 7663f1708af9ccf15cdefdcef0bbbf62fda60a3dc8bb09e0846564a550d0e8d4b441b2599cf450b243f4a46120f50a237dece34370a1a67a06c3b3760811a1f3
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'cgi'
4
+ require 'json'
5
+ require 'openssl'
6
+ require 'net/https'
7
+
8
+ class GuerrillaMailClient
9
+ def initialize(site: ENV['GUERRILLA_MAIL_SITE'], api_key: ENV['GUERRILLA_MAIL_API_KEY'])
10
+ @site = site
11
+ @api_key = api_key
12
+ @http = Net::HTTP.new('api.guerrillamail.com', 443)
13
+ @http.use_ssl = true
14
+ @http.verify_mode = OpenSSL::SSL::VERIFY_PEER
15
+ end
16
+
17
+ def build_url(f, sid_token: nil)
18
+ url = String.new "/ajax.php?f=#{CGI::escape(f)}"
19
+
20
+ unless sid_token.to_s.empty?
21
+ url << build_url_param('sid_token', sid_token)
22
+ end
23
+
24
+ unless @site.to_s.empty?
25
+ url << build_url_param('site', @site)
26
+ end
27
+
28
+ url
29
+ end
30
+
31
+ def build_url_param(key, value)
32
+ "&#{CGI::escape(key)}=#{CGI::escape(value.to_s)}"
33
+ end
34
+
35
+ def get_email_address(lang: 'en', sid_token: nil)
36
+ url = build_url('get_email_address', sid_token: sid_token)
37
+
38
+ unless lang.to_s.empty?
39
+ url << build_url_param('lang', lang)
40
+ end
41
+
42
+ req = Net::HTTP::Get.new(url)
43
+ res = @http.request(req)
44
+ JSON.parse(res.body)
45
+ end
46
+
47
+ def api_token(sid_token:)
48
+ if @api_key.to_s.empty?
49
+ return nil
50
+ end
51
+
52
+ OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @api_key, sid_token)
53
+ end
54
+
55
+ def authorize(req, sid_token:)
56
+ api_token = self.api_token(sid_token: sid_token)
57
+ unless api_token.to_s.empty?
58
+ req['Authorization'] = "ApiToken: #{api_token}"
59
+ end
60
+ end
61
+
62
+ def set_email_user(email_user, lang: 'en', sid_token:)
63
+ url = build_url('set_email_user', sid_token: sid_token)
64
+
65
+ url << build_url_param('email_user', email_user)
66
+
67
+ unless lang.to_s.empty?
68
+ url << build_url_param('lang', lang)
69
+ end
70
+
71
+ req = Net::HTTP::Get.new(url)
72
+ res = @http.request(req)
73
+ authorize(req, sid_token: sid_token)
74
+ JSON.parse(res.body)
75
+ end
76
+
77
+ def check_email(seq: 0, sid_token:)
78
+ url = build_url('check_email', sid_token: sid_token)
79
+
80
+ url << build_url_param('seq', seq)
81
+
82
+ req = Net::HTTP::Get.new(url)
83
+ res = @http.request(req)
84
+ authorize(req, sid_token: sid_token)
85
+ JSON.parse(res.body)
86
+ end
87
+
88
+ def fetch_email(email_id, sid_token:)
89
+ url = build_url('fetch_email', sid_token: sid_token)
90
+
91
+ url << build_url_param('email_id', email_id)
92
+
93
+ req = Net::HTTP::Get.new(url)
94
+ res = @http.request(req)
95
+ authorize(req, sid_token: sid_token)
96
+ JSON.parse(res.body)
97
+ end
98
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: guerrilla_mail_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Donald Ness
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-09-29 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Avoid spam and stay safe with Guerrilla Mail disposable temporary email
14
+ addresses. This gem has no dependencies.
15
+ email: donald.ness@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/guerrilla_mail_client.rb
21
+ homepage: https://github.com/programmarchy/guerrilla_mail_client
22
+ licenses:
23
+ - MIT
24
+ metadata:
25
+ source_code_uri: https://github.com/programmarchy/guerrilla_mail_client
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.7.6
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: A client for the Guerrilla Mail API
46
+ test_files: []