Module: Clerk::Utils

Defined in:
lib/clerk/utils.rb

Class Method Summary collapse

Class Method Details

.decode_publishable_key(publishable_key) ⇒ Object



8
9
10
# File 'lib/clerk/utils.rb', line 8

def decode_publishable_key(publishable_key)
  Base64.decode64(publishable_key.split("_")[2].to_s)
end

.filter_routes(routes) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/clerk/utils.rb', line 12

def filter_routes(routes)
  filtered_routes = {}
  filtered_wildcard_routes = []

  routes.each do |route|
    route = route.strip

    if route.end_with?("/*")
      filtered_wildcard_routes << route[0..-2]
    else
      filtered_routes[route] = true
    end
  end

  filtered_wildcard_routes.uniq!

  [filtered_routes, filtered_wildcard_routes]
end

.retrieve_from_query_string(url, key) ⇒ Object



31
32
33
# File 'lib/clerk/utils.rb', line 31

def retrieve_from_query_string(url, key)
  ::Rack::Utils.parse_query(url.query)[key]
end

.valid_publishable_key?(publishable_key) ⇒ Boolean

Returns:

  • (Boolean)

Raises:

  • (ArgumentError)


35
36
37
38
39
40
# File 'lib/clerk/utils.rb', line 35

def valid_publishable_key?(publishable_key)
  raise ArgumentError, "publishable_key must be a string" unless publishable_key.is_a?(String)

  key = publishable_key.to_s
  valid_publishable_key_prefix?(key) && valid_publishable_key_postfix?(key)
end

.valid_publishable_key_postfix?(publishable_key) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/clerk/utils.rb', line 42

def valid_publishable_key_postfix?(publishable_key)
  decode_publishable_key(publishable_key).end_with?("$")
end

.valid_publishable_key_prefix?(publishable_key) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/clerk/utils.rb', line 46

def valid_publishable_key_prefix?(publishable_key)
  publishable_key.start_with?("pk_live_", "pk_test_")
end