data_extensions.rb

 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