Class: Postnhost::PublicRequestContext

Inherits:
Object
  • Object
show all
Defined in:
app/services/postnhost/public_request_context.rb

Defined Under Namespace

Classes: Resolution

Constant Summary collapse

ENV_KEY =
"postnhost.public_request_context"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request) ⇒ PublicRequestContext

Returns a new instance of PublicRequestContext.



12
13
14
# File 'app/services/postnhost/public_request_context.rb', line 12

def initialize(request)
  @request = request
end

Instance Attribute Details

#default_languageObject



34
35
36
37
38
# File 'app/services/postnhost/public_request_context.rb', line 34

def default_language
  return @default_language if defined?(@default_language)

  @default_language = Postnhost::Language.blog_default
end

Class Method Details

.for(request) ⇒ Object



8
9
10
# File 'app/services/postnhost/public_request_context.rb', line 8

def self.for(request)
  request.env[ENV_KEY] ||= new(request)
end

Instance Method Details

#localized_language?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'app/services/postnhost/public_request_context.rb', line 42

def localized_language?
  requested_language.present? && !requested_language.default?
end

#public_site_revisionObject



24
25
26
# File 'app/services/postnhost/public_request_context.rb', line 24

def public_site_revision
  @public_site_revision ||= Postnhost::PublicSiteRevision.current
end

#requested_languageObject



28
29
30
31
32
# File 'app/services/postnhost/public_request_context.rb', line 28

def requested_language
  return @requested_language if defined?(@requested_language)

  @requested_language = Postnhost::Language.find_by(html_lang: requested_locale) if requested_locale.present?
end

#resolve(slug) ⇒ Object



46
47
48
49
50
51
52
53
# File 'app/services/postnhost/public_request_context.rb', line 46

def resolve(slug)
  %i[category article page].each do |kind|
    resolution = resolve_kind(kind, slug)
    return resolution if resolution
  end

  nil
end

#resolve_kind(kind, slug) ⇒ Object



55
56
57
58
59
60
61
62
# File 'app/services/postnhost/public_request_context.rb', line 55

def resolve_kind(kind, slug)
  @resolutions ||= {}
  key = [kind, slug, requested_language&.id]
  return @resolutions[key] if @resolutions.key?(key)

  record = route_scope(kind).find_by(slug:)
  @resolutions[key] = record ? Resolution.new(kind:, record:) : nil
end

#settingObject



16
17
18
# File 'app/services/postnhost/public_request_context.rb', line 16

def setting
  @setting ||= Postnhost::Setting.current
end

#template_nameObject



20
21
22
# File 'app/services/postnhost/public_request_context.rb', line 20

def template_name
  @template_name ||= Postnhost::Template.active_name
end