Sha256: 281860c1c05044ae516ceb0bd82d7d6c406716141fb924e4e9770ea6dc1b738a

Contents?: true

Size: 852 Bytes

Versions: 1

Compression:

Stored size: 852 Bytes

Contents

require 'rubygems/code_finder/version'
require 'faraday'
require 'multi_json'
require 'uri'

module Rubygems
  module CodeFinder
    extend self
    class RubygemsNotFound < StandardError; end
    class RepositoryNotFound < StandardError; end

    def url(name, github_strict: true)
      conn = Faraday.new 'https://rubygems.org'
      response = conn.get('/api/v1/gems/' + name + '.json')
      fail RubygemsNotFound unless response.status == 200
      parse_response_body(response.body)
    end

    def parse_response_body(body)
      data = MultiJson.load(body)
      return data['source_code_uri'] if data['source_code_uri'] && URI.parse(data['source_code_uri']).host == 'github.com'
      return data['homepage_uri'] if data['homepage_uri'] && URI.parse(data['homepage_uri']).host == 'github.com'
      fail RepositoryNotFound
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rubygems-code_finder-0.0.2 lib/rubygems-code_finder.rb