Class: Jumbotron::Adapters::Base

Inherits:
Object
  • Object
show all
Extended by:
LineAcquisition
Defined in:
app/adapters/jumbotron/adapters/base.rb

Direct Known Subclasses

Espn::Nfl

Class Method Summary collapse

Methods included from LineAcquisition

acquire_line_odds, line_acquisition_scope_for, translate_line_odds

Class Method Details

.acquisition_scope_for(_game) ⇒ Object

Raises:



118
119
120
# File 'app/adapters/jumbotron/adapters/base.rb', line 118

def acquisition_scope_for(_game)
  raise ConfigurationError, "#{name} must implement acquisition_scope_for"
end

.adapter_id(value = nil) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'app/adapters/jumbotron/adapters/base.rb', line 17

def adapter_id(value = nil)
  if value.nil?
    return @adapter_id if defined?(@adapter_id) && @adapter_id

    raise ConfigurationError, "#{name} must declare adapter_id"
  end

  @adapter_id = value.to_s
end

.discoveriesObject



94
95
96
# File 'app/adapters/jumbotron/adapters/base.rb', line 94

def discoveries
  @discoveries ||= {}
end

.discovery(id, endpoint: nil) ⇒ Object



83
84
85
86
87
88
89
90
91
92
# File 'app/adapters/jumbotron/adapters/base.rb', line 83

def discovery(id, endpoint: nil)
  key = id.to_sym
  if endpoint.nil?
    return discoveries.fetch(key) do
      raise UnknownDiscoveryError, "#{name} has no discovery :#{key}"
    end
  end

  discoveries[key] = DiscoveryDefinition.new(id: key, endpoint: endpoint.to_sym)
end

.discovery_idsObject



98
99
100
# File 'app/adapters/jumbotron/adapters/base.rb', line 98

def discovery_ids
  discoveries.keys
end

.endpoint(name, resource:, transformer:) ⇒ Object



45
46
47
# File 'app/adapters/jumbotron/adapters/base.rb', line 45

def endpoint(name, resource:, transformer:)
  endpoints[name.to_sym] = { resource: resource, transformer: transformer }
end

.endpointsObject



49
50
51
# File 'app/adapters/jumbotron/adapters/base.rb', line 49

def endpoints
  @endpoints ||= {}
end

.league(value = nil) ⇒ Object



39
40
41
42
43
# File 'app/adapters/jumbotron/adapters/base.rb', line 39

def league(value = nil)
  return @league || raise(ConfigurationError, "#{name} must declare league") if value.nil?

  @league = value.to_s
end

.operation(name) ⇒ Object

Raises:



102
103
104
105
106
107
108
109
110
111
112
# File 'app/adapters/jumbotron/adapters/base.rb', line 102

def operation(name)
  Registry.assert_unique_keys!
  definition = endpoints[name.to_sym]
  raise ConfigurationError, "#{self.name} has no endpoint :#{name}" unless definition

  Operation.new(
    adapter: self,
    resource: definition[:resource],
    transformer: definition[:transformer]
  )
end

.policiesObject



75
76
77
# File 'app/adapters/jumbotron/adapters/base.rb', line 75

def policies
  @policies ||= {}
end

.policy(id, type: nil, cadence: nil, eligible: nil) ⇒ Object

Declare: policy :id, type:, cadence: nil, eligible: nil Lookup: policy(:id)

Raises:



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'app/adapters/jumbotron/adapters/base.rb', line 55

def policy(id, type: nil, cadence: nil, eligible: nil)
  key = id.to_sym
  declaring = !type.nil? || !cadence.nil? || !eligible.nil?

  unless declaring
    return policies.fetch(key) do
      raise UnknownPolicyError, "#{name} has no policy :#{key}"
    end
  end

  raise ConfigurationError, "#{name} policy :#{key} must declare type" if type.nil?

  policies[key] = PolicyDefinition.new(
    id: key,
    type: type.to_sym,
    cadence: cadence,
    eligible: eligible
  )
end

.policy_idsObject



79
80
81
# File 'app/adapters/jumbotron/adapters/base.rb', line 79

def policy_ids
  policies.keys
end

.provider(value = nil) ⇒ Object



27
28
29
30
31
# File 'app/adapters/jumbotron/adapters/base.rb', line 27

def provider(value = nil)
  return @provider || raise(ConfigurationError, "#{name} must declare provider") if value.nil?

  @provider = value.to_s.downcase
end

.provider_cooling_down?Boolean

Returns:

  • (Boolean)


126
127
128
# File 'app/adapters/jumbotron/adapters/base.rb', line 126

def provider_cooling_down?
  false
end

.provider_retry_afterObject



130
131
132
# File 'app/adapters/jumbotron/adapters/base.rb', line 130

def provider_retry_after
  0
end

.register!Object



9
10
11
# File 'app/adapters/jumbotron/adapters/base.rb', line 9

def register!
  Registry.register(self)
end

.registered?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'app/adapters/jumbotron/adapters/base.rb', line 13

def registered?
  Registry.registered?(self)
end

.registry_keyObject



114
115
116
# File 'app/adapters/jumbotron/adapters/base.rb', line 114

def registry_key
  [provider, sport, league]
end

.scopes_for_discovery(_definition) ⇒ Object

Raises:



122
123
124
# File 'app/adapters/jumbotron/adapters/base.rb', line 122

def scopes_for_discovery(_definition)
  raise ConfigurationError, "#{name} must implement scopes_for_discovery"
end

.sport(value = nil) ⇒ Object



33
34
35
36
37
# File 'app/adapters/jumbotron/adapters/base.rb', line 33

def sport(value = nil)
  return @sport || raise(ConfigurationError, "#{name} must declare sport") if value.nil?

  @sport = value.to_s
end