class Redmine::Client

Constants

VERSION

Attributes

base_url[RW]
raise_on_error[W]
access_key[R]
base_url[R]

Public Class Methods

crud(plural, singular) click to toggle source
# File lib/redmine/client.rb, line 53
    def self.crud(plural, singular)
      class_eval <<-EOF, __FILE__, __LINE__
        def create_#{singular}(params, full_response=false)
          resp = faraday.post("/#{plural}.json", {"#{singular}" => params})
          check_errors(resp)
          full_response ? resp : resp.body
        end

        def find_#{singular}(id, full_response=false)
          resp = faraday.get("/#{plural}/\#{id}.json")
          check_errors(resp)
          full_response ? resp : resp.body
        end

        def update_#{singular}(id, params, full_response=false)
          resp = faraday.put("/#{plural}/\#{id}.json", {"#{singular}" => params})
          check_errors(resp)
          full_response ? resp : resp.body
        end

        def delete_#{singular}(id, full_response=false, raise_on_error=true)
          resp = faraday.delete("/#{plural}/\#{id}.json")
          check_errors(resp)
          full_response ? resp : resp.body
        end
      EOF

    end
new(access_key, base_url=nil) click to toggle source
# File lib/redmine/client.rb, line 35
def initialize(access_key, base_url=nil)
  @access_key = access_key
  @base_url = base_url || self.class.base_url

  unless @base_url
    raise ArgumentError, "You must provide an api base url, either Redmine::Client.new(token, base_url) or Redmine::Client.base_url = base_url"
  end
end
raise_on_error?() click to toggle source
# File lib/redmine/client.rb, line 26
def raise_on_error?
  return @raise_on_error if defined?(@raise_on_error)

  @raise_on_error = true
end

Public Instance Methods

add_member_to_project(user_id, project_id, role_ids=[3]) click to toggle source
# File lib/redmine/client.rb, line 86
def add_member_to_project(user_id, project_id, role_ids=[3])
  faraday.post("/projects/#{project_id}/memberships.json", {
    "membership" => {
      "user_id"  => user_id,
      "role_ids" => Array(role_ids),
    }})
end
check_errors(response) click to toggle source
# File lib/redmine/client.rb, line 94
def check_errors(response)
  return if response.success?
  $stderr.puts "REDMINE ERROR (#{response.status}): #{response.body}"

  if self.class.raise_on_error?
    raise ResponseError.new(response)
  end
end
faraday() click to toggle source
# File lib/redmine/client.rb, line 44
def faraday
  @faraday ||= Faraday.new(:url => base_url) do |f|
    f.request :json
    f.request :authorization_token, access_key
    f.adapter Faraday::default_adapter
    f.response :json, :content_type => /\bjson$/
  end
end