Module: Wireway::BusinessLogic::Restful

Extended by:
Restful
Included in:
Restful
Defined in:
app/models/wireway/business_logic/restful.rb

Instance Method Summary collapse

Instance Method Details

#dashboard(**args) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/models/wireway/business_logic/restful.rb', line 24

def dashboard(**args)
  params = {
    response_type: 'json',
  }.merge!(args)
  route = '/dashboard/restful/request_api'

  post(addresses: node_addresses[:dashboard], route: route, params: params) do |result|
    return result if (params[:response_type] != 'json')
    body = JSON.parse(result[1][:body]).deep_symbolize_keys 
    return [false, body[:result]] unless body[:success]
    [true, body[:html_content]]
  end 
end

#get(addresses:, route:, params: {}) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'app/models/wireway/business_logic/restful.rb', line 62

def get(addresses:, route:, params: {})
  result = round_robin(addresses: addresses) do |address|
    full_url = [address+route, URI.encode_www_form(params)]
    full_url.delete_if{|item| !item.present? }
    RestClient.get(full_url.join("?"))
  end
  return result unless (result[0] && block_given?)
  
  begin
    yield result
  rescue
    return [false, '运行时结果处理异常', {errors: {message: $!.to_s, path: $@}}]
  end
end

#node_addressesObject

后期应由专门组件对于已登记地址信息进行活跃验证,并将可用节点信息回传给Satcom 后期当某一节点调用不通过时将常量赋值为404进行更新 url路径不需要动态获取,只有ip和端口是动态的,如果请求路径都不一致,不能认为是合规的节点.



11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/models/wireway/business_logic/restful.rb', line 11

def node_addresses
  return $wireway_node_addresses unless $wireway_node_addresses == 404

  nodes = ['123.57.155.17:3113']
  route = '/satcom/other/c919/node_addresses.json'
  res = get(addresses: nodes, route: route) do |result|
    hash = JSON.parse(result[1][:body]).deep_symbolize_keys 
    [true, hash]
  end
  raise res[1] unless res[0]
  $wireway_node_addresses = res[1].map{|key, value| [key, value[:nodes]]}.to_h
end

#post(addresses:, route:, params: {}) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
# File 'app/models/wireway/business_logic/restful.rb', line 77

def post(addresses:, route:, params: {})
  result = round_robin(addresses: addresses) do |address|
    RestClient.post "#{address}/#{route}", params
  end
  return result unless (result[0] && block_given?)

  begin
    yield result
  rescue
    return [false, '运行时结果处理异常', {errors: {message: $!.to_s, path: $@}}]
  end
end

#satcom(**args) ⇒ Object



38
39
40
41
42
43
44
45
46
47
# File 'app/models/wireway/business_logic/restful.rb', line 38

def satcom(**args)
  params = {}.merge!(args)
  route = '/satcom/restful/request_api'

  post(addresses: node_addresses[:satcom], route: route, params: params) do |result|
    body = JSON.parse(result[1][:body]).deep_symbolize_keys 
    return [false, body[:result], body[:errors]].compact unless body[:success]
    [true, body[:result]]
  end
end

#wireway(**args) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
# File 'app/models/wireway/business_logic/restful.rb', line 49

def wireway(**args)
  params = {
    local: false
  }.merge!(args)
  route = '/wireway/restful/request_api'

  post(addresses: node_addresses[:wireway], route: route, params: params) do |result|
    body = JSON.parse(result[1][:body]).deep_symbolize_keys 
    return [false, body[:result], body[:errors]].compact unless body[:success]
    [true, body[:result]]
  end
end