Class: Consul::Async::JSONEndpoint

Inherits:
Object
  • Object
show all
Defined in:
lib/consul/async/json_endpoint.rb

Overview

Endpoint (aka URL) of a remote API that might be called

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(conf, url, default_value, enforce_json_200: true, query_params: {}, default_value_on_error: false) ⇒ JSONEndpoint

Returns a new instance of JSONEndpoint.



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/consul/async/json_endpoint.rb', line 103

def initialize(conf, url, default_value, enforce_json_200: true, query_params: {}, default_value_on_error: false)
  @conf = conf.create(url)
  @default_value = default_value
  @default_value_on_error = default_value_on_error
  @url = url
  @queue = EM::Queue.new
  @s_callbacks = []
  @e_callbacks = []
  @enforce_json_200 = enforce_json_200
  @start_time = Time.now.utc
  @consecutive_errors = 0
  @query_params = query_params
  @stopping = false
  @stats = EndPointStats.new
  @last_result = JSONResult.new(default_value.to_json, false, HttpResponse.new(nil), stats, 1, fake: true)
  on_response { |result| @stats.on_response result }
  on_error { |http| @stats.on_error http }
  _enable_network_debug if conf.debug && conf.debug[:network]
  fetch
  queue << Object.new
end

Instance Attribute Details

#confObject (readonly)

Returns the value of attribute conf.



101
102
103
# File 'lib/consul/async/json_endpoint.rb', line 101

def conf
  @conf
end

#default_valueObject (readonly)

Returns the value of attribute default_value.



101
102
103
# File 'lib/consul/async/json_endpoint.rb', line 101

def default_value
  @default_value
end

#enforce_json_200Object (readonly)

Returns the value of attribute enforce_json_200.



101
102
103
# File 'lib/consul/async/json_endpoint.rb', line 101

def enforce_json_200
  @enforce_json_200
end

#last_resultObject (readonly)

Returns the value of attribute last_result.



101
102
103
# File 'lib/consul/async/json_endpoint.rb', line 101

def last_result
  @last_result
end

#query_paramsObject (readonly)

Returns the value of attribute query_params.



101
102
103
# File 'lib/consul/async/json_endpoint.rb', line 101

def query_params
  @query_params
end

#queueObject (readonly)

Returns the value of attribute queue.



101
102
103
# File 'lib/consul/async/json_endpoint.rb', line 101

def queue
  @queue
end

#start_timeObject (readonly)

Returns the value of attribute start_time.



101
102
103
# File 'lib/consul/async/json_endpoint.rb', line 101

def start_time
  @start_time
end

#statsObject (readonly)

Returns the value of attribute stats.



101
102
103
# File 'lib/consul/async/json_endpoint.rb', line 101

def stats
  @stats
end

#urlObject (readonly)

Returns the value of attribute url.



101
102
103
# File 'lib/consul/async/json_endpoint.rb', line 101

def url
  @url
end

Instance Method Details

#_enable_network_debugObject



125
126
127
128
129
130
131
132
133
134
# File 'lib/consul/async/json_endpoint.rb', line 125

def _enable_network_debug
  on_response do |result|
    stats = result.stats
    warn "[DBUG][ OK ]#{result.modified? ? '[MODFIED]' : '[NO DIFF]'}" \
    "[s:#{stats.successes},err:#{stats.errors}]" \
    "[#{stats.body_bytes_human.ljust(8)}][#{stats.bytes_per_sec_human.ljust(9)}]"\
    " #{url.ljust(48)}, next in #{result.retry_in} s"
  end
  on_error { |http| warn "[ERROR]: #{url}: #{http.error.inspect}" }
end

#on_error(&block) ⇒ Object



140
141
142
# File 'lib/consul/async/json_endpoint.rb', line 140

def on_error(&block)
  @e_callbacks << block
end

#on_response(&block) ⇒ Object



136
137
138
# File 'lib/consul/async/json_endpoint.rb', line 136

def on_response(&block)
  @s_callbacks << block
end

#ready?Boolean

Returns:

  • (Boolean)


144
145
146
# File 'lib/consul/async/json_endpoint.rb', line 144

def ready?
  @ready
end

#terminateObject



148
149
150
# File 'lib/consul/async/json_endpoint.rb', line 148

def terminate
  @stopping = true
end