module Murmurs

Public Instance Methods

extract_project_info(url) click to toggle source
# File lib/murmurs.rb, line 32
def extract_project_info(url)
  if url =~ /\/projects\/([^\/]+)\//
    "#{$1}@#{URI(url).host}"
  else
    url
  end
end
http_post(url, body, options={}) click to toggle source
# File lib/murmurs.rb, line 56
  def http_post(url, body, options={})
    uri = URI.parse(url)
    http = Net::HTTP.new(uri.host, uri.port)
    if uri.scheme == 'https'
      http.use_ssl = true
      if options[:skip_ssl_verify]
        http.verify_mode = OpenSSL::SSL::VERIFY_NONE
      end
    end

    request = Net::HTTP::Post.new(uri.request_uri)
    request.body = body

    request['Content-Type'] = 'application/json'
    request['Content-Length'] = body.bytesize

    if options[:basic_auth]
      request.basic_auth(options[:basic_auth][:user], options[:basic_auth][:password])
    end
    if options[:access_key_id]
      ApiAuth.sign!(request, options[:access_key_id], options[:access_secret_key])
    end

    response = http.request(request)

    if response.code.to_i > 300
      raise UnexpectedResponseError, <<-ERROR
\nRequest URL: #{url}
Response: #{response.code} #{response.message}
Response Headers: #{response.to_hash.inspect}\nResponse Body: #{response.body}"
ERROR
    end
  end
log(level, m) click to toggle source
# File lib/murmurs.rb, line 50
def log(level, m)
  if level == :info
    puts m
  end
end
murmur(url, msg, options={}) click to toggle source
# File lib/murmurs.rb, line 15
def murmur(url, msg, options={})
  if msg.nil? || msg.empty?
    log(options[:log_level], "Nothing to murmur.")
    return
  end

  log(options[:log_level], "murmur => #{extract_project_info(url)}")
  if options[:git]
    Array(git_commits(msg, options[:git_branch])).each do |msg|
      murmur(url, msg, options.merge(:git => false, :log_level => :error))
    end
  else
    validate_murmurs_url!(url)
    http_post(url, "{\"murmur\":{\"body\":#{msg.inspect}}}", options)
  end
end
truncate(m, t=15) click to toggle source
# File lib/murmurs.rb, line 46
def truncate(m, t=15)
  m.size > t ? "#{m[0..t]}..." : m
end
validate_murmurs_url!(url) click to toggle source
# File lib/murmurs.rb, line 40
def validate_murmurs_url!(url)
  if url.to_s !~ /\Ahttps?\:\/\/.+\/murmurs/
    raise InvalidMurmursURLError, "Invalid murmurs URL: #{url.inspect}"
  end
end