Class: Rack::Ketai::Carrier::Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/ketai/carrier/abstract.rb

Direct Known Subclasses

General, Mobile

Constant Summary collapse

USER_AGENT_REGEXP =
nil

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env) ⇒ Abstract

Returns a new instance of Abstract.



77
78
79
# File 'lib/rack/ketai/carrier/abstract.rb', line 77

def initialize(env)
  @env = env
end

Class Method Details

.filtersObject



60
61
62
# File 'lib/rack/ketai/carrier/abstract.rb', line 60

def filters
  []
end

.valid_addr?(remote_addr) ⇒ Boolean

Returns:

  • (Boolean)


64
65
66
67
68
69
70
71
72
73
# File 'lib/rack/ketai/carrier/abstract.rb', line 64

def valid_addr?(remote_addr)
  cidrs = nil
  begin
    cidrs = self::CIDRS
  rescue NameError
    return nil
  end
  remote = IPAddr.new(remote_addr)
  cidrs.any?{ |cidr| cidr.include?(remote) }
end

.valid_ip?Boolean

Returns:

  • (Boolean)


74
75
76
77
78
79
80
81
82
83
# File 'lib/rack/ketai/carrier/abstract.rb', line 74

def valid_addr?(remote_addr)
  cidrs = nil
  begin
    cidrs = self::CIDRS
  rescue NameError
    return nil
  end
  remote = IPAddr.new(remote_addr)
  cidrs.any?{ |cidr| cidr.include?(remote) }
end

Instance Method Details

#cache_sizeObject

キャッシュサイズ



149
150
151
# File 'lib/rack/ketai/carrier/abstract.rb', line 149

def cache_size
  nil
end

#deviceidObject

デバイスID 端末毎にユニーク



118
119
120
# File 'lib/rack/ketai/carrier/abstract.rb', line 118

def deviceid
  nil
end

#displayObject

ディスプレイ情報



138
139
140
# File 'lib/rack/ketai/carrier/abstract.rb', line 138

def display
  Rack::Ketai::Display.new
end

#filtering(env, options = { }, &block) ⇒ Object



87
88
89
90
91
92
# File 'lib/rack/ketai/carrier/abstract.rb', line 87

def filtering(env, options = { }, &block)
  env = options[:disable_filter] ? env : filters(options).inject(env) { |env, filter| filter.inbound(env) }
  ret = block.call(env)
  ret = options[:disable_filter] ? ret : filters(options).reverse.inject(ret) { |r, filter| filter.outbound(*r) }
  ret
end

#filters(options = { }) ⇒ Object



94
95
96
97
98
# File 'lib/rack/ketai/carrier/abstract.rb', line 94

def filters(options = { })
  self.class.filters.collect do |klass|
    klass.new(options)
  end
end

#identObject

識別情報



123
124
125
# File 'lib/rack/ketai/carrier/abstract.rb', line 123

def ident
  subscriberid || deviceid
end

#mobile?Boolean

携帯端末か

Returns:

  • (Boolean)


101
102
103
# File 'lib/rack/ketai/carrier/abstract.rb', line 101

def mobile?
  false
end

#nameObject

機種名(略名)



128
129
130
# File 'lib/rack/ketai/carrier/abstract.rb', line 128

def name
  nil
end

#positionObject

位置情報



133
134
135
# File 'lib/rack/ketai/carrier/abstract.rb', line 133

def position
  nil
end

#requestObject



81
82
83
# File 'lib/rack/ketai/carrier/abstract.rb', line 81

def request
  @request ||= Rack::Request.new(@env)
end

#smartphone?Boolean

スマートフォンか

Returns:

  • (Boolean)


106
107
108
# File 'lib/rack/ketai/carrier/abstract.rb', line 106

def smartphone?
  false
end

#subscriberidObject

サブスクライバID 契約者毎にユニーク



112
113
114
# File 'lib/rack/ketai/carrier/abstract.rb', line 112

def subscriberid
  nil
end

#supports_cookie?Boolean

Cookieのサポート

Returns:

  • (Boolean)


154
155
156
# File 'lib/rack/ketai/carrier/abstract.rb', line 154

def supports_cookie?
  false
end

#valid_addr?Boolean Also known as: valid_ip?

キャリアのIPアドレス帯を利用しているか

Returns:

  • (Boolean)


143
144
145
# File 'lib/rack/ketai/carrier/abstract.rb', line 143

def valid_addr?
  self.class.valid_ip? @env['HTTP_X_FORWARDED_FOR'] || @env['REMOTE_ADDR']
end