logstash-input-google-analytics-daily 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0cd3fb1f69b8620c9e7b271031208edbe87a94f47f3b04d336b324bc9f193918
4
+ data.tar.gz: 2340ae2ed93d7709247ff7fa373204a744cfe337d04d6ab1f737f2270f1bb4ad
5
+ SHA512:
6
+ metadata.gz: 9b5c034b1b129fcb22bc70ba910155594245caa2566c37d2d5898c1fef44e5a77d544f9d8210bea7824630c5f91d5a10372f1d8357d331433617565483929416
7
+ data.tar.gz: 0d495b66014baddb11a7817773644f204cc084a8639677c0a32f3bbbeb633d78e39b05a1bb150e0e348e0ce684005d66bc014d0126a7ed6601c20321510badf8
@@ -0,0 +1,2 @@
1
+ ## 1.0.0
2
+ - Initial Release
@@ -0,0 +1,2 @@
1
+ # logstash-input-google-analytics-daily
2
+ Use this input to query data from Google Analytics into Logstash
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
3
+
4
+ # Needed this for testing, as Logstash dependency management is currently broken
5
+ #
6
+ # logstash_path = ENV["LOGSTASH_PATH"] || "C:/logstash-7.6.1"
7
+ # gem 'logstash-core', :path => "#{logstash_path}/logstash-core"
8
+ # gem 'logstash-core-plugin-api', :path => "#{logstash_path}/logstash-core-plugin-api"
data/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright (c) 2012–2015 Elasticsearch <http://www.elastic.co>
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
@@ -0,0 +1,5 @@
1
+ Elasticsearch
2
+ Copyright 2012-2015 Elasticsearch
3
+
4
+ This product includes software developed by The Apache Software
5
+ Foundation (http://www.apache.org/).
@@ -0,0 +1,89 @@
1
+ # Logstash Plugin
2
+
3
+ Logstash plugin to pull daily reports from the Google Analytics v3 Core Reporting API.
4
+
5
+ Forked from https://github.com/russorat/logstash-input-googleanalytics.git.
6
+
7
+ ## Documentation
8
+
9
+ Documentation can be seen in [the docs folder](https://github.com/DeimosCloud/logstash-input-google-analytics-daily/blob/master/docs/index.asciidoc).
10
+
11
+ ## Developing
12
+
13
+ ### 1. Plugin Development and Testing
14
+
15
+ #### Code
16
+ - To get started, you'll need JRuby with the Bundler gem installed (`jruby -S gem install bundler`).
17
+
18
+ - Install dependencies
19
+
20
+ ```sh
21
+ jruby -S bundle install
22
+ ```
23
+
24
+ #### Test
25
+
26
+ - Run tests
27
+
28
+ ```sh
29
+ jruby -S bundle exec rspec
30
+ ```
31
+
32
+ ### Running your plugin locally in Logstash
33
+
34
+ #### Linking the gem
35
+
36
+ - Edit Logstash's `Gemfile` and add the local plugin path, for example:
37
+
38
+ ```ruby
39
+ gem "logstash-input-google-analytics-daily", :path => "/your/local/logstash-input-googleanalytics"
40
+ ```
41
+
42
+ - Install the plugin
43
+ ```sh
44
+ bin/plugin install --no-verify
45
+ ```
46
+ - Run Logstash with your plugin
47
+ Example logstash.conf:
48
+
49
+ ```
50
+ input {
51
+ google_analytics_daily {
52
+ view_id => "ga:62549480"
53
+ metrics => ["ga:users","ga:sessions"]
54
+ key_file_path => "C:/logstash-7.6.1/keyfile.json"
55
+ dates => ['yesterday', '2020-04-05']
56
+ dimensions => ['ga:browser', 'ga:city']
57
+ }
58
+ }
59
+
60
+ output {
61
+ stdout {
62
+ codec => rubydebug
63
+ }
64
+ }
65
+ ```
66
+
67
+ ```sh
68
+ bin/logstash -f logstash.conf
69
+ ```
70
+
71
+ NOTE: Any modifications to the plugin code will not show up until you restart Logstash.
72
+
73
+ #### 2.2 Run in an installed Logstash
74
+
75
+ Logstash by editing its `Gemfile` and pointing the `:path` to your local plugin development directory or you can build the gem and install it using:
76
+
77
+ - Build your plugin gem
78
+ ```sh
79
+ jruby -S gem build logstash-input-google-analytics-daily.gemspec
80
+ ```
81
+ - Install the plugin from the Logstash home
82
+ ```sh
83
+ bin/plugin install install Projects/logstash-input-google-analytics-daily/logstash-input-google-analytics-daily-1.0.0.gem
84
+ ```
85
+ - Start Logstash with your pipeline config:
86
+
87
+ ```sh
88
+ bin/logstash -f logstash.conf
89
+ ```
@@ -0,0 +1,243 @@
1
+ # encoding: utf-8
2
+ require "logstash/inputs/base"
3
+ require "logstash/namespace"
4
+ require "stud/interval"
5
+ require 'google/apis/analytics_v3'
6
+ require 'googleauth'
7
+
8
+ # Pull daily reports from Google Analytics using the v3 Core Reporting API.
9
+ # This plugin will generate one Logstash event per date, with each event containing all the data for that date
10
+ # The plugin will try to maintain a single event per date and list of metrics
11
+
12
+ class LogStash::Inputs::GoogleAnalyticsDaily < LogStash::Inputs::Base
13
+ config_name "google_analytics_daily"
14
+
15
+ # If undefined, Logstash will complain, even if codec is unused.
16
+ default :codec, "plain"
17
+
18
+ # Most of these inputs are described in the Google Analytics API docs.
19
+ # https://developers.google.com/analytics/devguides/reporting/core/v3/reference#q_details
20
+ # Any changes from the format described above have been noted.
21
+
22
+ # Type for logstash filtering
23
+ config :type, :validate => :string, :default => 'google_analytics_daily'
24
+
25
+ # View (profile) id, in the format 'ga:XXXX'
26
+ # https://developers.google.com/analytics/devguides/reporting/core/v3/reference#ids
27
+ config :view_id, :validate => :string, :required => true
28
+
29
+ # This plugin will only fetch reports for the specified dates
30
+ # In the format YYYY-MM-DD, or relative by using today, yesterday, or the NdaysAgo pattern
31
+ config :dates, :validate => :string, :list => true, :default => ['yesterday']
32
+
33
+ # The aggregated statistics for user activity to your site, such as clicks or pageviews.
34
+ # Maximum of 10 metrics for any query
35
+ # https://developers.google.com/analytics/devguides/reporting/core/v3/reference#metrics
36
+ # For a full list of metrics, see the documentation
37
+ # https://developers.google.com/analytics/devguides/reporting/core/dimsmets
38
+ config :metrics, :validate => :string, :list => true, :required => true
39
+
40
+ # Breaks down metrics by common criteria; for example, by ga:browser or ga:city
41
+ # Maximum of 7 dimensions in any query
42
+ # https://developers.google.com/analytics/devguides/reporting/core/v3/reference#dimensions
43
+ # For a full list of dimensions, see the documentation
44
+ # https://developers.google.com/analytics/devguides/reporting/core/dimsmets
45
+ config :dimensions, :validate => :string, :list => true, :default => []
46
+
47
+ # Used to restrict the data returned from your request
48
+ # https://developers.google.com/analytics/devguides/reporting/core/v3/reference#filters
49
+ config :filters, :validate => :string, :default => nil
50
+
51
+ # A list of metrics and dimensions indicating the sorting order and sorting direction for the returned data
52
+ # https://developers.google.com/analytics/devguides/reporting/core/v3/reference#sort
53
+ config :sort, :validate => :string, :default => nil
54
+
55
+ # https://developers.google.com/analytics/devguides/reporting/core/v3/reference#segment
56
+ config :segment, :validate => :string, :default => nil
57
+
58
+ # Valid values are DEFAULT, FASTER, HIGHER_PRECISION
59
+ # https://developers.google.com/analytics/devguides/reporting/core/v3/reference#samplingLevel
60
+ config :sampling_level, :validate => :string, :default => nil
61
+
62
+ # https://developers.google.com/analytics/devguides/reporting/core/v3/reference#include-empty-rows
63
+ config :include_empty_rows, :validate => :boolean, :default => true
64
+
65
+ # These values need to be pulled from your Google Developers Console
66
+ # For more information, see the docs. Be sure to enable Google Analytics API
67
+ # access for your application.
68
+ # https://developers.google.com/identity/protocols/OAuth2ServiceAccount
69
+
70
+ # This should be the path to the public/private key as a standard P12 file
71
+ config :key_file_path, :validate => :string, :required => true
72
+
73
+ # This will store the query in the resulting logstash event
74
+ # https://developers.google.com/analytics/devguides/reporting/core/v3/reference#data_response
75
+ config :store_query, :validate => :boolean, :default => true
76
+
77
+ # This will store the profile information in the resulting logstash event
78
+ # https://developers.google.com/analytics/devguides/reporting/core/v3/reference#data_response
79
+ config :store_profile, :validate => :boolean, :default => true
80
+
81
+ # Interval to run the command. Value is in seconds. If no interval is given,
82
+ # this plugin only fetches data once.
83
+ config :interval, :validate => :number, :required => false, :default => 60 * 60 * 24 # Daily
84
+
85
+
86
+ public
87
+
88
+ def register
89
+ end
90
+
91
+ def run(queue)
92
+ # we abort the loop if stop? becomes true
93
+ while !stop?
94
+ start_time = Time.now
95
+
96
+ analytics = get_service
97
+
98
+ @dates.each do |date|
99
+ options = get_request_parameters(date)
100
+
101
+ results = analytics.get_ga_data(
102
+ options[:view_id],
103
+ options[:start_date],
104
+ options[:end_date],
105
+ options[:metrics],
106
+ dimensions: options[:dimensions],
107
+ filters: options[:filters],
108
+ include_empty_rows: options[:include_empty_rows],
109
+ sampling_level: options[:sampling_level],
110
+ segment: options[:segment],
111
+ sort: options[:sort],
112
+ )
113
+
114
+ query = results.query.to_h
115
+ profile_info = results.profile_info.to_h
116
+ column_headers = results.column_headers.map { |c| c.name }
117
+
118
+ event = LogStash::Event.new
119
+ decorate(event)
120
+ # Populate Logstash event fields
121
+ event.set('ga.contains_sampled_data', results.contains_sampled_data?)
122
+ event.set('ga.query', query) if @store_query
123
+ event.set('ga.profile_info', profile_info) if @store_profile
124
+
125
+ if date == 'today'
126
+ event.set('ga.date', Time.now.strftime("%F"))
127
+ elsif date == 'yesterday'
128
+ event.set('ga.date', Time.at(Time.now.to_i - 86400).strftime("%F"))
129
+ elsif date.include?('daysAgo')
130
+ days_ago = date.sub('daysAgo', '').to_i
131
+ event.set('ga.date', Time.at(Time.now.to_i - (days_ago * 86400)).strftime("%F"))
132
+ else
133
+ event.set('ga.date', date)
134
+ end
135
+
136
+ # Use date and metrics as ID to prevent duplicate entries in Elasticsearch
137
+ event.set('_id', event.get('ga.date') + options[:metrics])
138
+
139
+ rows = []
140
+
141
+ if results.rows && results.rows.first
142
+
143
+ # Example with dimensions, multiple metrics:
144
+ # rows: [[Chrome, Cape Town, 6, 8], [Chrome, Paris, 1, 5], [Safari, Paris, 1, 3]], column_headers: ['ga:browser', 'ga:city', 'ga:user', 'ga:sessions']
145
+ # Example with dimension, single metric:
146
+ # rows: [[Chrome, 6]], column_headers: ['ga:browser', 'ga:user']
147
+ # Example with no dimension, single metric:
148
+ # rows: [[6]], column_headers: ['ga:user']
149
+ # Dimensions always appear before values
150
+ results.rows.each do |row|
151
+ dimensions = []
152
+ metrics = []
153
+
154
+ column_headers.zip(row) do |header, value|
155
+ # Combine GA column headers with values from row
156
+ if is_num(value)
157
+ float_value = Float(value)
158
+ # Sometimes GA returns infinity. if so, the number is invalid
159
+ # so set it to zero.
160
+ value = (float_value == Float::INFINITY) ? 0.0 : float_value
161
+ end
162
+
163
+ entry = {
164
+ name: header,
165
+ value: value
166
+ }
167
+ if @metrics.include?(header)
168
+ metrics << entry
169
+ else
170
+ dimensions << entry
171
+ end
172
+
173
+ end
174
+
175
+ rows << {metrics: metrics, dimensions: dimensions}
176
+ end
177
+
178
+ end
179
+ event.set("ga.rows", rows)
180
+
181
+ queue << event
182
+ end
183
+
184
+ # If no interval was set, we're done
185
+ if @interval.nil?
186
+ break
187
+ else
188
+ # Otherwise we sleep till the next run
189
+ time_lapsed = Time.now - start_time
190
+ # Sleep for the remainder of the interval, or 0 if the duration ran
191
+ # longer than the interval.
192
+ time_to_sleep_for = [0, @interval - time_lapsed].max
193
+ if time_to_sleep_for == 0
194
+ @logger.warn(
195
+ "Execution ran longer than the interval. Skipping sleep.",
196
+ :duration => time_lapsed,
197
+ :interval => @interval
198
+ )
199
+ else
200
+ Stud.stoppable_sleep(time_to_sleep_for) { stop? }
201
+ end
202
+ end
203
+ end # loop
204
+ end
205
+
206
+ private
207
+
208
+ def get_request_parameters(date)
209
+ options = {
210
+ :view_id => @view_id,
211
+ :start_date => date,
212
+ :end_date => date,
213
+ :metrics => @metrics.sort.join(','),
214
+ :output => 'json',
215
+ }
216
+ options.merge!({:dimensions => @dimensions.join(',')}) if (@dimensions and @dimensions.size)
217
+ options.merge!({:filters => @filters}) if @filters
218
+ options.merge!({:sort => @sort}) if @sort
219
+ options.merge!({:segment => @segment}) if @segment
220
+ options.merge!({:sampling_level => @sampling_level}) if @sampling_level
221
+ options.merge!({:include_empty_rows => @include_empty_rows}) if !@include_empty_rows.nil?
222
+ return options
223
+ end
224
+
225
+ def get_service
226
+ scope = 'https://www.googleapis.com/auth/analytics.readonly'
227
+ authorizer = Google::Auth::ServiceAccountCredentials.make_creds(
228
+ json_key_io: File.open(@key_file_path),
229
+ scope: scope
230
+ )
231
+
232
+ analytics = Google::Apis::AnalyticsV3::AnalyticsService.new
233
+ analytics.authorization = authorizer
234
+ return analytics
235
+ end
236
+
237
+ private
238
+
239
+ def is_num(a)
240
+ return (Float(a) and true) rescue false
241
+ end
242
+ end # class LogStash::Inputs::GoogleAnalytics
243
+
@@ -0,0 +1,28 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'logstash-input-google-analytics-daily'
3
+ s.version = '0.1.2'
4
+ s.licenses = ['Apache License (2.0)']
5
+ s.summary = "Logstash plugin to pull daily reports from Google Analytics."
6
+ s.description = "Logstash plugin to pull daily reports from the Google Analytics v3 Core Reporting API. Install into Logstash using $LS_HOME/bin/logstash-plugin install logstash-input-google-analytics-daily."
7
+ s.authors = ["Shalvah"]
8
+ s.email = 'shalvah.adebayo@gmail.com'
9
+ s.homepage = "http://www.elastic.co/guide/en/logstash/current/plugins-inputs-google_analytics_daily.html.html"
10
+ s.require_paths = ["lib"]
11
+
12
+ # Files
13
+ s.files = Dir['lib/**/*','spec/**/*','vendor/**/*','*.gemspec','*.md','CONTRIBUTORS','Gemfile','LICENSE','NOTICE.TXT']
14
+ # Tests
15
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
16
+
17
+ # Special flag to let us know this is actually a logstash plugin
18
+ s.metadata = { "logstash_plugin" => "true", "logstash_group" => "input" }
19
+
20
+ # Gem dependencies
21
+ s.add_runtime_dependency "logstash-core-plugin-api", ">= 2.0.0", "< 3.0.0"
22
+ s.add_runtime_dependency 'stud', '>= 0.0.22'
23
+ s.add_runtime_dependency 'google-api-client', "~>0.37"
24
+ s.add_runtime_dependency 'googleauth', "~>0.11"
25
+ s.add_development_dependency 'vcr'
26
+ s.add_development_dependency 'webmock'
27
+ s.add_development_dependency 'json'
28
+ end
@@ -0,0 +1,47 @@
1
+ # Tests currently nto in use
2
+ #
3
+ # # encoding: utf-8
4
+ # require "logstash/inputs/google_analytics_daily"
5
+ # require "vcr"
6
+ # require "json"
7
+ #
8
+ # ENV['SSL_CERT_FILE'] = "/Users/rsavage/Downloads/cacert.pem"
9
+ #
10
+ # VCR.configure do |config|
11
+ # config.cassette_library_dir = File.join(File.dirname(__FILE__), '..', 'fixtures', 'vcr_cassettes')
12
+ # config.hook_into :webmock
13
+ # end
14
+ #
15
+ # RSpec.describe LogStash::Inputs::GoogleAnalyticsDaily do
16
+ # describe "inputs/google_analytics_daily" do
17
+ # context "get users overview" do
18
+ # let(:options) do
19
+ # {
20
+ # "view_id" => "ga:213576060",
21
+ # "metrics" => ["ga:users","ga:sessions"],
22
+ # "key_file_path" => "C:/logstash-7.6.1/keyfile.json",
23
+ # "dates" => ['yesterday', '2020-04-05'],
24
+ # 'dimensions' => ['ga:browser'],
25
+ # "interval" => nil,
26
+ #
27
+ # }
28
+ # end
29
+ # let(:input) { LogStash::Inputs::GoogleAnalyticsDaily.new(options) }
30
+ # let(:expected_fields_result) { ["ga_pageviews"] }
31
+ # let(:queue) { [] }
32
+ # subject { input }
33
+ # it "loads pageviews" do
34
+ # #VCR.use_cassette("get_audience_overview") do
35
+ # subject.register
36
+ # subject.run(queue)
37
+ # expect(queue.length).to eq(1)
38
+ # e = queue.pop
39
+ # expected_fields_result.each do |f|
40
+ # expect(e.to_hash).to include(f)
41
+ # end
42
+ # #end
43
+ # end
44
+ # end
45
+ # end
46
+ #
47
+ # end
metadata ADDED
@@ -0,0 +1,160 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: logstash-input-google-analytics-daily
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Shalvah
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-04-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 2.0.0
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.0
22
+ name: logstash-core-plugin-api
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 2.0.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 3.0.0
33
+ - !ruby/object:Gem::Dependency
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: 0.0.22
39
+ name: stud
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 0.0.22
47
+ - !ruby/object:Gem::Dependency
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '0.37'
53
+ name: google-api-client
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '0.37'
61
+ - !ruby/object:Gem::Dependency
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '0.11'
67
+ name: googleauth
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0.11'
75
+ - !ruby/object:Gem::Dependency
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ name: vcr
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ name: webmock
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ name: json
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ description: Logstash plugin to pull daily reports from the Google Analytics v3 Core
118
+ Reporting API. Install into Logstash using $LS_HOME/bin/logstash-plugin install
119
+ logstash-input-google-analytics-daily.
120
+ email: shalvah.adebayo@gmail.com
121
+ executables: []
122
+ extensions: []
123
+ extra_rdoc_files: []
124
+ files:
125
+ - CHANGELOG.md
126
+ - DEVELOPER.md
127
+ - Gemfile
128
+ - LICENSE
129
+ - NOTICE.TXT
130
+ - README.md
131
+ - lib/logstash/inputs/google_analytics_daily.rb
132
+ - logstash-input-google-analytics-daily.gemspec
133
+ - spec/inputs/google_analytics_daily_spec.rb
134
+ homepage: http://www.elastic.co/guide/en/logstash/current/plugins-inputs-google_analytics_daily.html.html
135
+ licenses:
136
+ - Apache License (2.0)
137
+ metadata:
138
+ logstash_plugin: 'true'
139
+ logstash_group: input
140
+ post_install_message:
141
+ rdoc_options: []
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ requirements: []
155
+ rubygems_version: 3.0.6
156
+ signing_key:
157
+ specification_version: 4
158
+ summary: Logstash plugin to pull daily reports from Google Analytics.
159
+ test_files:
160
+ - spec/inputs/google_analytics_daily_spec.rb