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