class Stash::Server

Attributes

logger[RW]
password[RW]
root_uri[RW]
user[RW]

Public Class Methods

new(root_uri, user, password, logger = nil) click to toggle source
# File lib/stash/server.rb, line 8
def initialize(root_uri, user, password, logger = nil)
  self.root_uri = root_uri
  self.user = user
  self.password = password
  self.logger = logger
end

Public Instance Methods

get(path) click to toggle source
# File lib/stash/server.rb, line 21
def get(path)
  logged('Response') do
    HTTParty.get(endpoint + path, auth.merge(logging))
  end
end
post(path, data) click to toggle source
# File lib/stash/server.rb, line 27
def post(path, data)
  logged('Response') do
    HTTParty.post(endpoint + path, auth.merge(content_type).merge(body: data.to_json).merge(logging))
  end
end
repository(project_key, repository_slug) click to toggle source
# File lib/stash/server.rb, line 15
def repository(project_key, repository_slug)
  key = "#{project_key}/#{repository_slug}"
  @repositories      ||= {}
  @repositories[key] ||= Repository.new(self, project_key, repository_slug)
end

Private Instance Methods

auth() click to toggle source
# File lib/stash/server.rb, line 39
def auth
  {
    basic_auth: {
      username: user,
      password: password
    }
  }
end
content_type() click to toggle source
# File lib/stash/server.rb, line 48
def content_type
  {
    headers: {
      'Content-Type' => 'application/json'
    }
  }
end
endpoint() click to toggle source
# File lib/stash/server.rb, line 35
def endpoint
  "#{root_uri}/rest/api/1.0"
end
logged(label) { || ... } click to toggle source
# File lib/stash/server.rb, line 56
def logged(label)
  if logger
    result = yield
    logger.debug("#{label}:\n#{result}")
    result
  else
    yield
  end
end
logging() click to toggle source
# File lib/stash/server.rb, line 66
def logging
  if logger
    {
      logger: logger,
      log_level: :debug
    }
  else
    {}
  end
end