Class: Grape::Path

Inherits:
Object
  • Object
show all
Defined in:
lib/grape/path.rb

Overview

Represents a path to an endpoint.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raw_path, namespace, settings) ⇒ Path

Returns a new instance of Path



10
11
12
13
14
# File 'lib/grape/path.rb', line 10

def initialize(raw_path, namespace, settings)
  @raw_path = raw_path
  @namespace = namespace
  @settings = settings
end

Instance Attribute Details

#namespaceObject (readonly)

Returns the value of attribute namespace



8
9
10
# File 'lib/grape/path.rb', line 8

def namespace
  @namespace
end

#raw_pathObject (readonly)

Returns the value of attribute raw_path



8
9
10
# File 'lib/grape/path.rb', line 8

def raw_path
  @raw_path
end

#settingsObject (readonly)

Returns the value of attribute settings



8
9
10
# File 'lib/grape/path.rb', line 8

def settings
  @settings
end

Class Method Details

.prepare(raw_path, namespace, settings) ⇒ Object



4
5
6
# File 'lib/grape/path.rb', line 4

def self.prepare(raw_path, namespace, settings)
  Path.new(raw_path, namespace, settings)
end

Instance Method Details

#mount_pathObject



16
17
18
# File 'lib/grape/path.rb', line 16

def mount_path
  settings[:mount_path]
end

#namespace?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/grape/path.rb', line 40

def namespace?
  namespace && namespace.to_s =~ /^\S/ && namespace != '/'
end

#pathObject



58
59
60
# File 'lib/grape/path.rb', line 58

def path
  Grape::Router.normalize_path(parts.join('/'))
end

#path?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/grape/path.rb', line 44

def path?
  raw_path && raw_path.to_s =~ /^\S/ && raw_path != '/'
end

#path_with_suffixObject



62
63
64
# File 'lib/grape/path.rb', line 62

def path_with_suffix
  "#{path}#{suffix}"
end

#root_prefixObject



20
21
22
# File 'lib/grape/path.rb', line 20

def root_prefix
  split_setting(:root_prefix)
end

#suffixObject



48
49
50
51
52
53
54
55
56
# File 'lib/grape/path.rb', line 48

def suffix
  if uses_specific_format?
    "(.#{settings[:format]})"
  elsif !uses_path_versioning? || (namespace? || path?)
    '(.:format)'
  else
    '(/.:format)'
  end
end

#to_sObject



66
67
68
# File 'lib/grape/path.rb', line 66

def to_s
  path_with_suffix
end

#uses_path_versioning?Boolean

Returns:

  • (Boolean)


32
33
34
35
36
37
38
# File 'lib/grape/path.rb', line 32

def uses_path_versioning?
  if settings.key?(:version) && settings[:version_options] && settings[:version_options].key?(:using)
    (settings[:version] && settings[:version_options][:using] == :path)
  else
    false
  end
end

#uses_specific_format?Boolean

Returns:

  • (Boolean)


24
25
26
27
28
29
30
# File 'lib/grape/path.rb', line 24

def uses_specific_format?
  if settings.key?(:format) && settings.key?(:content_types)
    (settings[:format] && Array(settings[:content_types]).size == 1)
  else
    false
  end
end