class DependenciesCollector::Collector

Public Instance Methods

execute() click to toggle source
# File lib/dependencies_collector.rb, line 12
def execute
        data = { packages: parsingGemfile , opreating_system: RbConfig::CONFIG["arch"]}
        puts parsingDependencies(JSON.parse((requestDependencies(data).body)))
end
parsingDependencies(packages) click to toggle source

Parsing packges dependencies to final dependencies list

# File lib/dependencies_collector.rb, line 40
def parsingDependencies(packages)
        final_result = Array.new
        packages.each do |package|
                package.first['dependencies'].each do |library|
                        final_result.push(library['library_name']) if not final_result.include?(library)
                end
        end
        puts final_result
end
parsingGemfile() click to toggle source

Parsing Gemfile.lock to get gems list

# File lib/dependencies_collector.rb, line 18
def parsingGemfile
        gems_list = Bundler::LockfileParser.new(Bundler.read_file("Gemfile.lock")).specs
        gems_list = gems_list.map {|s| {"name":s.name,"version":s.version}}
end
requestDependencies(packages) click to toggle source

Calling Api Service to get dependencies

# File lib/dependencies_collector.rb, line 24
def requestDependencies(packages)
        # Create the HTTP objects
        uri = URI.parse("http://localhost:3000/api/packages/dependencies")
        http = Net::HTTP.new(uri.host, uri.port)

        request = Net::HTTP::Post.new(
            uri.request_uri,
            'Content-Type' => 'application/json'
            )
        request.body = packages.to_json

        # Send the request
        response = http.request(request)
end