class MkRepo::Client

Constants

ATTRIBUTES
BASE_URLS

Attributes

provider[R]
uri[R]

Public Class Methods

new(provider, &blk) click to toggle source
# File lib/mk_repo/client.rb, line 22
def initialize(provider, &blk)
  @provider = provider
  @uri = URI.parse(url % [user, repo_name])
  instance_eval(&blk)
end

Public Instance Methods

create!() click to toggle source
# File lib/mk_repo/client.rb, line 28
def create!
  Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
    Net::HTTP::Post.new(uri.request_uri, headers).tap do |req|
      req.body = body
      req.basic_auth(user, token) if github?

      response = http.request(req)

      response_json = JSON.parse(response.body, symbolize_names: true)

      if response.kind_of?(Net::HTTPSuccess)
        $stdout.puts response_json[:clone_url]
      else
        error_message = response_json[:errors].first[:message]
        raise StandardError,
          "#{response.code} Unable to create repository: #{error_message}"
      end
    end
  end
end

Private Instance Methods

body() click to toggle source
# File lib/mk_repo/client.rb, line 68
def body
  { "name" => repo_name }.to_json if github?
end
headers() click to toggle source
# File lib/mk_repo/client.rb, line 72
def headers
  { "Content-Type" => "text/json" }
end
url() click to toggle source
# File lib/mk_repo/client.rb, line 64
def url
  BASE_URLS[provider]
end