Class: Tinder::Campfire
- Inherits:
-
Object
- Object
- Tinder::Campfire
- Defined in:
- lib/tinder/campfire.rb
Overview
Instance Attribute Summary collapse
-
#connection ⇒ Object
readonly
Returns the value of attribute connection.
Instance Method Summary collapse
-
#create_room(name, topic = nil) ⇒ Object
Creates and returns a new Room with the given
name
and optionally atopic
. - #find_or_create_room_by_name(name) ⇒ Object
-
#find_room_by_guest_hash(hash, name) ⇒ Object
Find a campfire room by its guest hash.
-
#find_room_by_id(id) ⇒ Object
Find a campfire room by id NOTE: id should be of type Integer.
-
#find_room_by_name(name) ⇒ Object
Find a campfire room by name.
-
#initialize(subdomain, options = {}) ⇒ Campfire
constructor
Create a new connection to the campfire account with the given
subdomain
. -
#me ⇒ Object
get the user info of the current user.
-
#rooms ⇒ Object
Get an array of all the available rooms TODO: detect rooms that are full (no link).
-
#users ⇒ Object
List the users that are currently chatting in any room.
Constructor Details
#initialize(subdomain, options = {}) ⇒ Campfire
Create a new connection to the campfire account with the given subdomain
.
Options:
-
:ssl
: use SSL for the connection, which is required if you have a Campfire SSL account.Defaults to true
-
:ssl_options
: SSL options passed to the underlaying Faraday connection. Allows to specify if the SSL certificate should be verified (:verify => true|false) and to specify the path to the ssl certs directory (:ca_path => “path/certs”)Defaults to {:verify => true}
-
:proxy
: a proxy URI. (e.g. :proxy => ‘user:[email protected]:8000’)c = Tinder::Campfire.new(“mysubdomain”, :ssl => true)
27 28 29 |
# File 'lib/tinder/campfire.rb', line 27 def initialize(subdomain, = {}) @connection = Connection.new(subdomain, ) end |
Instance Attribute Details
#connection ⇒ Object (readonly)
Returns the value of attribute connection.
15 16 17 |
# File 'lib/tinder/campfire.rb', line 15 def connection @connection end |
Instance Method Details
#create_room(name, topic = nil) ⇒ Object
Creates and returns a new Room with the given name
and optionally a topic
57 58 59 60 |
# File 'lib/tinder/campfire.rb', line 57 def create_room(name, topic = nil) connection.post('/rooms.json', { :room => { :name => name, :topic => topic } }) find_room_by_name(name) end |
#find_or_create_room_by_name(name) ⇒ Object
62 63 64 |
# File 'lib/tinder/campfire.rb', line 62 def find_or_create_room_by_name(name) find_room_by_name(name) || create_room(name) end |
#find_room_by_guest_hash(hash, name) ⇒ Object
Find a campfire room by its guest hash
52 53 54 |
# File 'lib/tinder/campfire.rb', line 52 def find_room_by_guest_hash(hash, name) rooms.detect { |room| room.guest_invite_code == hash } end |
#find_room_by_id(id) ⇒ Object
Find a campfire room by id NOTE: id should be of type Integer
41 42 43 44 |
# File 'lib/tinder/campfire.rb', line 41 def find_room_by_id(id) id = id.to_i rooms.detect { |room| room.id == id } end |
#find_room_by_name(name) ⇒ Object
Find a campfire room by name
47 48 49 |
# File 'lib/tinder/campfire.rb', line 47 def find_room_by_name(name) rooms.detect { |room| room.name == name } end |
#me ⇒ Object
get the user info of the current user
72 73 74 |
# File 'lib/tinder/campfire.rb', line 72 def me connection.get("/users/me.json")["user"] end |
#rooms ⇒ Object
Get an array of all the available rooms TODO: detect rooms that are full (no link)
33 34 35 36 37 |
# File 'lib/tinder/campfire.rb', line 33 def rooms connection.get('/rooms.json')['rooms'].map do |room| Room.new(connection, room) end end |
#users ⇒ Object
List the users that are currently chatting in any room
67 68 69 |
# File 'lib/tinder/campfire.rb', line 67 def users rooms.map(&:users).flatten.compact.uniq.sort_by {|u| u[:name]} end |