Class: GHAProvider

Inherits:
Object
  • Object
show all
Includes:
GHAUtils
Defined in:
lib/gh-archive.rb

Direct Known Subclasses

FolderGHAProvider, OnlineGHAProvider

Instance Method Summary collapse

Methods included from GHAUtils

#each_date, #get_gha_filename, #read_gha_file, #read_gha_file_content

Constructor Details

#initializeGHAProvider

Returns a new instance of GHAProvider.



43
44
45
46
47
48
# File 'lib/gh-archive.rb', line 43

def initialize
    @logger = Logger.new(STDOUT)
    
    @includes = {}
    @excludes = {}
end

Instance Method Details

#each(from = Time.gm(2015, 1, 1), to = Time.now) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/gh-archive.rb', line 72

def each(from = Time.gm(2015, 1, 1), to = Time.now)
    self.each_date(from, to) do |current_date|
        events = []
        begin
            events = self.get(current_date)
            @logger.info("Scanned #{current_date}")
        rescue
            @logger.error($!)
            next
        end
        
        events.each do |event|
            skip = false
            @includes.each do |key, value|
                skip = true unless value.include?(event[key])
            end
            
            @excludes.each do |key, value|
                skip = true if value.include?(event[key])
            end
            next if skip
            
            yield event
        end
        
        events.clear
        GC.start
    end
end

#exclude(**args) ⇒ Object



65
66
67
68
69
70
# File 'lib/gh-archive.rb', line 65

def exclude(**args)
    args.each do |key, value|
        @excludes[key.to_s] = [] unless @excludes[key.to_s]
        @excludes[key.to_s] << value
    end
end

#get(date) ⇒ Object



54
55
56
# File 'lib/gh-archive.rb', line 54

def get(date)
    raise "Not implemented"
end

#include(**args) ⇒ Object



58
59
60
61
62
63
# File 'lib/gh-archive.rb', line 58

def include(**args)
    args.each do |key, value|
        @includes[key.to_s] = [] unless @includes[key.to_s]
        @includes[key.to_s] << value
    end
end

#logger=(logger) ⇒ Object



50
51
52
# File 'lib/gh-archive.rb', line 50

def logger=(logger)
    @logger = logger
end