class BoardEffect::Client
Constants
- API_PATH
- API_VERSION
Public Class Methods
new(options = {})
click to toggle source
# File lib/boardeffect/client.rb, line 14 def initialize(options = {}) setup_client(options) if !options.key?(:test) auth = auth("#{API_PATH}/auth/api_key.json", { api_key: options[:access_token]}) if auth[:success] == true @auth_header, @auth_value = 'Authorization', "Bearer #{auth[:data][:token]}" else raise Error, auth[:error][:message] end else @auth_header, @auth_value = 'Authorization', "Bearer #{options[:access_token]}" end end
Public Instance Methods
add_invitee(rsvp_id, attributes, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 69 def add_invitee(rsvp_id, attributes, params = nil) raise Error, "Event ID is required" unless params[:event_id].is_a? Numeric raise Error, "RSVP ID is required" unless rsvp_id.is_a? Numeric post("/#{workroom_check(params)}events/#{params[:event_id]}/rsvps/#{rsvp_id}/add_invitee.json", attributes) end
auth(path, attributes)
click to toggle source
# File lib/boardeffect/client.rb, line 28 def auth(path, attributes) http_request = Net::HTTP::Post.new(path) http_request['Content-Type'] = 'application/json' http_request.body = JSON.generate(attributes) parse(@http.request(http_request)) end
create_announcement(attributes, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 12 def create_announcement(attributes, params = nil) post("/#{workroom_check(params)}announcements.json", attributes) end
create_event(attributes, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 33 def create_event(attributes, params = nil) post("/#{workroom_check(params)}events.json", attributes) end
create_event_category(attributes, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 123 def create_event_category(attributes, params = nil) post("/eventcolors.json", attributes) end
create_rsvp(attributes, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 58 def create_rsvp(attributes, params = nil) raise Error, "Event ID is required" unless params[:event_id].is_a? Numeric post("/#{workroom_check(params)}events/#{params[:event_id]}/rsvps.json", attributes) end
create_userclass(attributes, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 152 def create_userclass(attributes, params = nil) post("/userclasses.json", attributes) end
create_workroom(attributes, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 196 def create_workroom(attributes, params = nil) post("/workrooms.json", attributes) end
delete_announcement(announcement_id, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 24 def delete_announcement(announcement_id, params = nil) delete("/#{workroom_check(params)}announcements/#{announcement_id}.json") end
delete_event(id, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 47 def delete_event(id, params = nil) raise Error, "Event ID is required" unless id.is_a? Numeric delete("/#{workroom_check(params)}events/#{id}.json") end
delete_event_category(id, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 137 def delete_event_category(id, params = nil) raise Error, "Eventcolor ID is required" unless id.is_a? Numeric delete("/eventcolors/#{id}.json") end
delete_userclass(userclass_id, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 166 def delete_userclass(userclass_id, params = nil) raise Error, "Userclass ID is required" unless userclass_id.is_a? Numeric delete("/userclasses/#{userclass_id}.json") end
delete_workroom(id, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 210 def delete_workroom(id, params = nil) raise Error, "Workroom ID is required" unless id.is_a? Numeric delete("/workrooms/#{id}.json") end
get(path, params = nil)
click to toggle source
# File lib/boardeffect/client.rb, line 35 def get(path, params = nil) request(Net::HTTP::Get.new(request_uri(path, params))) end
get_announcement(announcement_id, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 20 def get_announcement(announcement_id, params = nil) get("/#{workroom_check(params)}announcements/#{announcement_id}.json") end
get_announcements(params = nil)
click to toggle source
Announcements
# File lib/boardeffect.rb, line 8 def get_announcements(params = nil) get("/#{workroom_check(params)}announcements.json", params) end
get_book(book_id, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 86 def get_book(book_id, params = nil) raise Error, "Book ID is required" unless book_id.is_a? Numeric get("/#{workroom_check(params)}books/#{book_id}.json") end
get_books(params = nil)
click to toggle source
Books
# File lib/boardeffect.rb, line 82 def get_books(params = nil) get("/#{workroom_check(params)}books.json", params) end
get_client(client_id)
click to toggle source
Clients
# File lib/boardeffect.rb, line 92 def get_client(client_id) raise Error, "Client ID is required" unless client_id.is_a? Numeric get("/clients/#{client_id}.json") end
get_custom_fields(params = nil)
click to toggle source
Custom Fields
# File lib/boardeffect.rb, line 98 def get_custom_fields(params = nil) get("/custom_fields.json") end
get_discussion(discussion_id, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 107 def get_discussion(discussion_id, params = nil) get("/#{workroom_check(params)}discussions/#{discussion_id}.json") end
get_discussion_post(discussion_id, post_id, params = nil)
click to toggle source
Discussion Posts
# File lib/boardeffect.rb, line 112 def get_discussion_post(discussion_id, post_id, params = nil) raise Error, "Discussion ID is required" unless discussion_id.is_a? Numeric raise Error, "Discussion Post ID is required" unless post_id.is_a? Numeric get("/#{workroom_check(params)}discussions/#{discussion_id}/discussion_posts/#{post_id}.json") end
get_discussions(params = nil)
click to toggle source
Discussions
# File lib/boardeffect.rb, line 103 def get_discussions(params = nil) get("/#{workroom_check(params)}discussions.json") end
get_event(id, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 42 def get_event(id, params = nil) raise Error, "Event ID is required" unless id.is_a? Numeric get("/#{workroom_check(params)}events/#{id}.json") end
get_event_categories(params = nil)
click to toggle source
Event Categories
# File lib/boardeffect.rb, line 119 def get_event_categories(params = nil) get("/eventcolors.json", params) end
get_event_category(id, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 132 def get_event_category(id, params = nil) raise Error, "Eventcolor ID is required" unless id.is_a? Numeric get("/eventcolors/#{id}.json") end
get_events(params = nil)
click to toggle source
Events
# File lib/boardeffect.rb, line 29 def get_events(params = nil) get("/#{workroom_check(params)}events.json", params) end
get_rsvp(rsvp_id, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 63 def get_rsvp(rsvp_id, params = nil) raise Error, "Event ID is required" unless params[:event_id].is_a? Numeric raise Error, "RSVP ID is required" unless rsvp_id.is_a? Numeric get("/#{workroom_check(params)}events/#{params[:event_id]}/rsvps/#{rsvp_id}.json") end
get_rsvps(params = nil)
click to toggle source
RSVPS
# File lib/boardeffect.rb, line 53 def get_rsvps(params = nil) raise Error, "Event ID is required" unless params[:event_id].is_a? Numeric get("/#{workroom_check(params)}events/#{params[:event_id]}/rsvps.json") end
get_surveys(params = nil)
click to toggle source
Surveys
# File lib/boardeffect.rb, line 143 def get_surveys(params = nil) get("/#{workroom_check(params)}surveys.json") end
get_user(id)
click to toggle source
# File lib/boardeffect.rb, line 176 def get_user(id) raise Error, "User ID is required" unless id.is_a? Numeric get("/users/#{id}.json") end
get_userclass(userclass_id, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 161 def get_userclass(userclass_id, params = nil) raise Error, "Userclass ID is required" unless userclass_id.is_a? Numeric get("/userclasses/#{userclass_id}.json") end
get_userclasses(params = nil)
click to toggle source
Userclasses
# File lib/boardeffect.rb, line 148 def get_userclasses(params = nil) get("/userclasses.json", params) end
get_users()
click to toggle source
Users
# File lib/boardeffect.rb, line 172 def get_users get("/users.json") end
get_workgroup(id)
click to toggle source
# File lib/boardeffect.rb, line 186 def get_workgroup(id) raise Error, "Workgroup ID is required" unless id.is_a? Numeric get("/committeegroups/#{id}.json") end
get_workgroups()
click to toggle source
Workgroups
# File lib/boardeffect.rb, line 182 def get_workgroups get("/committeegroups.json") end
get_workroom(id, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 205 def get_workroom(id, params = nil) raise Error, "Workroom ID is required" unless id.is_a? Numeric get("/workrooms/#{id}.json") end
get_workrooms(params = nil)
click to toggle source
Workrooms
# File lib/boardeffect.rb, line 192 def get_workrooms(params = nil) get("/workrooms.json") end
remove_invitee(rsvp_id, attributes, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 75 def remove_invitee(rsvp_id, attributes, params = nil) raise Error, "Event ID is required" unless params[:event_id].is_a? Numeric raise Error, "RSVP ID is required" unless rsvp_id.is_a? Numeric post("/#{workroom_check(params)}events/#{params[:event_id]}/rsvps/#{rsvp_id}/remove_invitee.json", attributes) end
update_announcement(announcement_id, attributes, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 16 def update_announcement(announcement_id, attributes, params = nil) put("/#{workroom_check(params)}announcements/#{announcement_id}.json", attributes) end
update_event(id, attributes, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 37 def update_event(id, attributes, params = nil) raise Error, "Event ID is required" unless id.is_a? Numeric put("/#{workroom_check(params)}events/#{id}.json", attributes) end
update_event_category(id, attributes, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 127 def update_event_category(id, attributes, params = nil) raise Error, "Eventcolor ID is required" unless id.is_a? Numeric put("/eventcolors/#{id}.json", attributes) end
update_userclass(userclass_id, attributes, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 156 def update_userclass(userclass_id, attributes, params = nil) raise Error, "Userclass ID is required" unless userclass_id.is_a? Numeric put("/userclasses/#{userclass_id}.json", attributes) end
update_workroom(id, attributes, params = nil)
click to toggle source
# File lib/boardeffect.rb, line 200 def update_workroom(id, attributes, params = nil) raise Error, "Workroom ID is required" unless id.is_a? Numeric put("/workrooms/#{id}.json", attributes) end
Private Instance Methods
array_escape(object)
click to toggle source
# File lib/boardeffect/client.rb, line 107 def array_escape(object) Array(object).map { |value| escape(value) }.join(',') end
delete(path)
click to toggle source
# File lib/boardeffect/client.rb, line 58 def delete(path) request(Net::HTTP::Delete.new(request_uri(path))) end
escape(component)
click to toggle source
# File lib/boardeffect/client.rb, line 111 def escape(component) CGI.escape(component.to_s) end
parse(http_response)
click to toggle source
# File lib/boardeffect/client.rb, line 74 def parse(http_response) case http_response when Net::HTTPNoContent :no_content when Net::HTTPSuccess if http_response['Content-Type'] && http_response['Content-Type'].split(';').first == 'application/json' JSON.parse(http_response.body, symbolize_names: true, object_class: Record).tap do |object| if http_response['Link'] && next_page = http_response['Link'][/<([^>]+)>; rel="next"/, 1] object.singleton_class.module_eval { attr_accessor :next_page } object.next_page = URI.parse(next_page).request_uri end end else http_response.body end when Net::HTTPBadRequest object = JSON.parse(http_response.body, symbolize_names: true) raise Error, "boardeffect api error: #{object[:error][:message]}" when Net::HTTPUnauthorized raise AuthenticationError, "boardeffect api error: unexpected #{http_response.code} response from #{@host}" else raise Error, "boardeffect api error: unexpected #{http_response.code} response from #{@host}" end end
post(path, attributes)
click to toggle source
# File lib/boardeffect/client.rb, line 50 def post(path, attributes) request(Net::HTTP::Post.new(request_uri(path)), attributes) end
put(path, attributes = nil)
click to toggle source
# File lib/boardeffect/client.rb, line 54 def put(path, attributes = nil) request(Net::HTTP::Put.new(request_uri(path)), attributes) end
request(http_request, body_object = nil)
click to toggle source
# File lib/boardeffect/client.rb, line 62 def request(http_request, body_object = nil) http_request['User-Agent'] = @user_agent http_request[@auth_header] = @auth_value if body_object http_request['Content-Type'] = 'application/json' http_request.body = JSON.generate(body_object) end parse(@http.request(http_request)) end
request_uri(path, params = nil)
click to toggle source
# File lib/boardeffect/client.rb, line 100 def request_uri(path, params = nil) path = API_PATH + path unless path.include? API_PATH return path if params.nil? || params.empty? path + '?' + params.map { |k, v| "#{escape(k)}=#{array_escape(v)}" }.join('&') end
setup_client(options = {})
click to toggle source
# File lib/boardeffect/client.rb, line 41 def setup_client(options = {}) @user_agent = options.fetch(:user_agent, 'Ruby BoardEffect::Client') @host = (options.key?(:host)) ? options[:host] : 'boardeffect.local' @http = Net::HTTP.new(URI.parse(@host).host, Net::HTTP.https_default_port()) @http.use_ssl = true end
workroom_check(params = nil)
click to toggle source
# File lib/boardeffect.rb, line 217 def workroom_check(params = nil) if !params.nil? && (params.key?('workroom_id') or params.key?(:workroom_id)) raise Error, "Workroom ID is required" unless params[:workroom_id].is_a? Numeric raise Error, "Workroom ID Can not be 0" if params[:workroom_id].to_i == 0 "workrooms/#{params[:workroom_id].to_i}/" end end