Module: Clerk::Utils

Defined in:
lib/clerk/utils.rb

Class Method Summary collapse

Class Method Details

.camel_case(str) ⇒ Object



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

def camel_case(str)
  str = str.to_s
  return str if str !~ /_/ && str =~ /[A-Z]+.*/
  str.split("_").map { |s| s.capitalize }.join
end

.decode_publishable_key(publishable_key) ⇒ Object



14
15
16
# File 'lib/clerk/utils.rb', line 14

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

.filter_routes(routes) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/clerk/utils.rb', line 18

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



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

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)


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

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)


48
49
50
# File 'lib/clerk/utils.rb', line 48

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

.valid_publishable_key_prefix?(publishable_key) ⇒ Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/clerk/utils.rb', line 52

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