Skip to content

Instantly share code, notes, and snippets.

@weibel
Last active December 15, 2015 11:28
Show Gist options
  • Save weibel/5252703 to your computer and use it in GitHub Desktop.
Save weibel/5252703 to your computer and use it in GitHub Desktop.
Ruby client for the Tenhands.net REST API
require 'httpi'
require 'json'
# Client for the tenhands REST API https://tenhands.net/developer/docs.htm?userId=e54a5608-961a-11e2-8866-12313d08920c#rest
class TenhandsRestClient
def initialize(adaptor = :httpclient)
@adaptor = adaptor
@api_key = 'your key'
@base_url = 'https://tenhands.net/api/v1'
end
# users
def create_or_update_user(email, name, photo_url = nil, group_names = '')
send_request('/user/create', {:name => name, :email => email, 'photoUrl' => photo_url, 'groupNames' => group_names})
end
def user_details(email)
send_request('/user/get', {:email => email})
end
def list_users
send_request('/user/list')
end
def delete_user(email)
send_request('/user/delete', {:email => email})
end
# sign in
def sign_in(email)
send_request('/user/signIn', {:email => email})
end
def sign_out(email)
send_request('/user/signOut', {:email => email})
end
# conference
def create_conference(owner, auth_token, title, duration = 240)
send_request('/conference/create', {:owner => owner, 'authToken' => auth_token, :title => title, :duration => duration})
end
# users and groups
def add_groups_to_user(email, group_names = '')
send_request('/user/groups/add', {:email => email, 'groupNames' => group_names})
end
def list_groups_for_user(email)
send_request('/user/groups/list', {:email => email})
end
def remove_groups_from_user(email, group_names = '')
send_request('/user/groups/remove', {:email => email, 'groupNames' => group_names})
end
# groups
def create_group(name)
send_request('/group/create', {:name => name})
end
def delete_group(name)
send_request('/group/delete', {:name => name})
end
def list_groups
send_request('/group/list')
end
def users_in_group(name)
send_request('/group/users', {:name => name})
end
private
def send_request(path, params = {})
params['apiKey'] = @api_key
request = HTTPI::Request.new(:url => "#{@base_url}#{path}", :body => params)
response = HTTPI.post(request, @adaptor)
JSON.parse(response.body, :symbolize_names => true)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment