1# frozen_string_literal: true
2
3class Rantly
4 module Data
5 module Extensions
6 # @note https://stackoverflow.com/questions/6478875/regular-expression-matching-e-164-formatted-phone-numbers
7 # @return [String]
8 def nanpa_phone
9 "+1" +
10 sized(1) { string(/[2-9]/) } +
11 sized(2) { string(/[0-9]/) } +
12 sized(1) { string(/[2-9]/) } +
13 sized(6) { string(/[0-9]/) }
14 end
15
16 # @note https://stackoverflow.com/questions/4894198/how-to-generate-a-random-date-in-ruby
17 # @return [String]
18 def iso8601(from = 0.0, to = Time.now)
19 value { Time.at(from + float * (to.to_f - from.to_f)).iso8601 }
20 end
21
22 # @return [String]
23 def bare_jid
24 local = sized(range(3, 12)) { string(:alnum) }
25 domain = sized(range(3, 8)) { string(:lower) }
26 "#{local}@#{domain}.example.com"
27 end
28
29 # @return [String]
30 def bw_message_id
31 sized(range(6, 19)) { string(:alnum) }
32 end
33
34 # @return [String]
35 def shortcode
36 range(10000, 999999).to_s
37 end
38
39 # @return [String]
40 def media_url
41 user_id = sized(range(3, 10)) { string(:alnum) }
42 name = sized(range(3, 12)) { string(:alnum) }
43 ext = choose(".jpg", ".png", ".gif", ".mp4", ".pdf", ".smil", ".txt", ".xml")
44 "https://messaging.bandwidth.com/api/v2/users/#{user_id}/media/#{name}#{ext}"
45 end
46 end
47 end
48
49 include Data::Extensions
50end