class Docker2plantuml::DockerJsonParser

Public Class Methods

new(json) click to toggle source
# File lib/docker2plantuml/parser.rb, line 5
def initialize(json)
  @json_data = json
end

Public Instance Methods

create_port_info(ports) click to toggle source
# File lib/docker2plantuml/parser.rb, line 55
def create_port_info(ports)
  ret = ports
        .reject { |_container_port, host_port| host_port.nil? }
        .map do |c_port, h_port|
          h_port.map { |val| Docker2plantuml::PortInfo.new(c_port, val['HostPort']) }
        end
  ret = ret.inject([]) { |list, p| list + p }
  ret.concat(
    ports.select { |_container_port, host_port| host_port.nil? }
         .map { |container_port, _host_port| Docker2plantuml::PortInfo.new(container_port) }
  )
end
parse() click to toggle source
# File lib/docker2plantuml/parser.rb, line 9
def parse
  @json_data.map do |json|
    container = parse_container(json)
    parse_network_and_port(json, container)
    container
  end
end
parse_container(json) click to toggle source
# File lib/docker2plantuml/parser.rb, line 17
def parse_container(json)
  Docker2plantuml::DockerContainer.new(
    parse_container_name(json),
    parse_container_status(json)
  )
end
parse_container_name(json) click to toggle source
# File lib/docker2plantuml/parser.rb, line 24
def parse_container_name(json)
  name = json['Name']
  name.slice(1..-1) if name.start_with?('/')
end
parse_container_status(json) click to toggle source
# File lib/docker2plantuml/parser.rb, line 29
def parse_container_status(json)
  json['State']['Status']
end
parse_network_and_port(json, container) click to toggle source
# File lib/docker2plantuml/parser.rb, line 33
def parse_network_and_port(json, container)
  networks = parse_networks(json)
  return unless networks.is_a? String

  container.network_setting = Docker2plantuml::NetworkSetting.new(networks)
  container.port_info_list.concat(parse_ports(json))
end
parse_network_settings(json) click to toggle source
# File lib/docker2plantuml/parser.rb, line 46
def parse_network_settings(json)
  json['NetworkSettings']
end
parse_networks(json) click to toggle source
# File lib/docker2plantuml/parser.rb, line 41
def parse_networks(json)
  network_settings = parse_network_settings(json)
  network_settings['Networks'].map { |k, _v| k }.first
end
parse_ports(json) click to toggle source
# File lib/docker2plantuml/parser.rb, line 50
def parse_ports(json)
  network_settings = parse_network_settings(json)
  create_port_info(network_settings['Ports'])
end