Module: Wireway::Core::Request

Extended by:
Request
Included in:
Request
Defined in:
lib/wireway/core/request.rb

Instance Method Summary collapse

Instance Method Details

#black_box(**args) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
# File 'lib/wireway/core/request.rb', line 98

def black_box(**args)
  params = {}.merge!(args)
  route = '/black_box/restful/request_api'
  res = node_addresses
  return res unless res[0]
  res = post(addresses: res[1][:black_box], 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]
  end
end

#dashboard(**args) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/wireway/core/request.rb', line 56

def dashboard(**args)
  params = {
    response_type: 'json',
  }.merge!(args)
  route = '/dashboard/restful/request_api'
  res = node_addresses
  return res unless res[0]
  post(addresses: res[1][:dashboard], route: route, params: params) do |result|
    return [true, result[1][:body]] if (params[:response_type] != 'json')
    body = JSON.parse(result[1][:body]).deep_symbolize_keys 
    return [false, body[:result]] unless body[:success]
    [true, body[:result]]
  end
end

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



110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/wireway/core/request.rb', line 110

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, '[Wireway]运行时结果处理异常', {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
23
24
# File 'lib/wireway/core/request.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

  return res unless res[0]
  nodes = res[1].map{|key, value| [key, value[:nodes]]}.to_h
  $wireway_node_addresses = [true, nodes]
end

#platforms_exposed_apiObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/wireway/core/request.rb', line 26

def platforms_exposed_api
  res = node_addresses
  return res unless res[0]
  exposed_api = {}
  
  platforms = {:satcom => ["123.57.155.17:3113"], :dashboard => ['123.57.155.17:3111'], :black_box => ['123.57.155.17:3116']}
  platforms.each do |platform_code, addresses|
    route = "/#{platform_code}/restful/exposed_api"
    res = get(addresses: addresses, route: route) do |result|
      hash = JSON.parse(result[1][:body]).deep_symbolize_keys 
      exposed_api.merge!(hash) if hash.is_a?(Hash)
    end
  end

  [true, exposed_api]
end

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



125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/wireway/core/request.rb', line 125

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, '[Wireway]运行时结果处理异常', {errors: {message: $!.to_s, path: $@}}]
  end
end

#request_api_params(platform_code:, api_code:) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/wireway/core/request.rb', line 43

def request_api_params(platform_code:, api_code:)
  res = node_addresses
  return res unless res[0]
  addresses = res[1][platform_code.to_sym]
  route = "/#{platform_code}/restful/request_api_params"

  get(addresses: addresses, route: route, params: {api_code: api_code}) do |result|
    hash = JSON.parse(result[1][:body]).deep_symbolize_keys 
    [true, hash]
  end

end

#satcom(**args) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/wireway/core/request.rb', line 71

def satcom(**args)
  params = {}.merge!(args)
  route = '/satcom/restful/request_api'
  res = node_addresses
  return res unless res[0]
  post(addresses: res[1][: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]]
    [true, body]
  end
end

#wireway(**args) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/wireway/core/request.rb', line 84

def wireway(**args)
  params = {
    local: false
  }.merge!(args)
  route = '/wireway/restful/request_api_result'
  res = node_addresses
  return res unless res[0]
  post(addresses: res[1][: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