Class: Fluent::Plugin::GithubActivities::UsersManager

Inherits:
Object
  • Object
show all
Defined in:
lib/fluent/plugin/github-activities/users_manager.rb

Constant Summary collapse

DEFAULT_LAST_EVENT_TIMESTAMP =
-1

Instance Method Summary collapse

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_requestsObject



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, options={})
  request = {
    type: TYPE_EVENTS,
    user: user,
  }
  response = options[:previous_response]
  if response
    now = options[:now] || Time.now
    interval = response["X-Poll-Interval"].to_i
    time_to_process = now.to_i + interval
    request[:previous_entity_tag] = response["ETag"] ||
                                    options[:previous_entity_tag]
    request[:process_after] = time_to_process
  else
    request[:previous_entity_tag] = options[:previous_entity_tag] if options.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
    old_timestamp = position["last_event_timestamp"]
    if old_timestamp.nil? or old_timestamp < params[:last_event_timestamp]
      position["last_event_timestamp"] = params[:last_event_timestamp]
    end
  end

  @pos_storage.put(user, position)
  @pos_storage.save
end