Class: Fluent::Plugin::GithubActivities::UsersManager
- Inherits:
-
Object
- Object
- Fluent::Plugin::GithubActivities::UsersManager
- Defined in:
- lib/fluent/plugin/github-activities/users_manager.rb
Constant Summary collapse
- DEFAULT_LAST_EVENT_TIMESTAMP =
-1
Instance Method Summary collapse
- #generate_initial_requests ⇒ Object
-
#initialize(params = {}) ⇒ UsersManager
constructor
A new instance of UsersManager.
- #new_events_request(user, options = {}) ⇒ Object
- #position_for(user) ⇒ Object
- #save_position_for(user, params) ⇒ Object
Constructor Details
#initialize(params = {}) ⇒ UsersManager
Returns a new instance of UsersManager.
28 29 30 31 |
# File 'lib/fluent/plugin/github-activities/users_manager.rb', line 28 def initialize(params={}) @users = params[:users] @pos_storage = params[:pos_storage] end |
Instance Method Details
#generate_initial_requests ⇒ Object
33 34 35 36 37 |
# File 'lib/fluent/plugin/github-activities/users_manager.rb', line 33 def generate_initial_requests @users.collect do |user| new_events_request(user) end end |
#new_events_request(user, options = {}) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/fluent/plugin/github-activities/users_manager.rb', line 39 def new_events_request(user, ={}) request = { type: TYPE_EVENTS, user: user, } response = [:previous_response] if response now = [:now] || Time.now interval = response["X-Poll-Interval"].to_i time_to_process = now.to_i + interval request[:previous_entity_tag] = response["ETag"] || [:previous_entity_tag] request[:process_after] = time_to_process else request[:previous_entity_tag] = [:previous_entity_tag] if .key?(:previous_entity_tag) end request end |
#position_for(user) ⇒ Object
58 59 60 |
# File 'lib/fluent/plugin/github-activities/users_manager.rb', line 58 def position_for(user) @pos_storage.get(user) end |
#save_position_for(user, params) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/fluent/plugin/github-activities/users_manager.rb', line 62 def save_position_for(user, params) position = @pos_storage.get(user) || {} if params[:entity_tag] position["entity_tag"] = params[:entity_tag] end if params[:last_event_timestamp] and params[:last_event_timestamp] != DEFAULT_LAST_EVENT_TIMESTAMP = position["last_event_timestamp"] if .nil? or < params[:last_event_timestamp] position["last_event_timestamp"] = params[:last_event_timestamp] end end @pos_storage.put(user, position) @pos_storage.save end |