Module: EventMachine::Campfire::Users
- Included in:
- EventMachine::Campfire
- Defined in:
- lib/em-campfire/users.rb
Instance Method Summary collapse
- #fetch_user_data_for_self ⇒ Object
- #fetch_user_data_for_user_id(user_id, &block) ⇒ Object
- #is_me?(user_id) ⇒ Boolean
Instance Method Details
#fetch_user_data_for_self ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/em-campfire/users.rb', line 32 def fetch_user_data_for_self url = "https://#{subdomain}.campfirenow.com/users/me.json" etag_header = {} if cached_user_data = cache.get(user_cache_key('me')) etag_header = {"ETag" => cached_user_data["etag"]} end http = EventMachine::HttpRequest.new(url).get(:head => {'authorization' => [api_key, 'X'], "Content-Type" => "application/json"}) #.merge(etag_header) http.callback do if http.response_header.status == 200 logger.debug "Got the user data for self" user_data = Yajl::Parser.parse(http.response)['user'] cache.set(user_cache_key('me'), user_data.merge({'etag' => http.response_header.etag})) yield user_data if block_given? elsif http.response_header.status == 304 logger.debug "HTTP response was 304, serving user data for self from cache" yield cached_user_data if block_given? else logger.error "Couldn't fetch user data for self with url #{url}, http response from API was #{http.response_header.status}" end end http.errback do logger.error "Couldn't connect to #{url} to fetch user data for self" end end |
#fetch_user_data_for_user_id(user_id, &block) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/em-campfire/users.rb', line 4 def fetch_user_data_for_user_id(user_id, &block) url = "https://#{subdomain}.campfirenow.com/users/#{user_id}.json" etag_header = {} if cached_user_data = cache.get(user_cache_key(user_id)) etag_header = {"ETag" => cached_user_data["etag"]} end http = EventMachine::HttpRequest.new(url).get(:head => {'authorization' => [api_key, 'X'], "Content-Type" => "application/json"}.merge(etag_header)) http.callback do if http.response_header.status == 200 logger.debug "Got the user data for #{user_id}" user_data = Yajl::Parser.parse(http.response)['user'] cache.set(user_cache_key(user_id), user_data.merge({'etag' => http.response_header.etag})) yield user_data if block_given? elsif http.response_header.status == 304 logger.debug "HTTP response was 304, serving user data for user 456 \(#{cached_user_data['name']}\) from cache" yield cached_user_data if block_given? else logger.error "Couldn't fetch user data for user #{user_id} with url #{url}, http response from API was #{http.response_header.status}" end end http.errback do logger.error "Couldn't connect to #{url} to fetch user data for user #{user_id}" end end |
#is_me?(user_id) ⇒ Boolean
60 61 62 63 64 65 66 67 68 |
# File 'lib/em-campfire/users.rb', line 60 def is_me?(user_id) if cache_data = cache.get(user_cache_key('me')) return cache_data['id'] == user_id else logger.debug "No user data cache exists for me, fetching it now" fetch_user_data_for_self return false end end |