most-popular 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 06e97da7a3296fe71490cde62c4b19e129b419ea
4
+ data.tar.gz: f3fc0cb6e37cac44b6a228167bdd25c59132be38
5
+ SHA512:
6
+ metadata.gz: e2e42c530a352c1ca2f7eef249b492fb5229a6b9e8ac1138d7fdbbe59114506e42cf364ba17c6705f9202543b6e74e05858f77045b3a9239195c1de18374e469
7
+ data.tar.gz: 8960dc2b3bdcc1859b01b63d35e064e1a5e985e099e8ba4af1561f2ee1f9555b0eea5730fac6c38ff40922e039b757c6774f031f19efe092a5e6ee71c7bfbb50
@@ -0,0 +1,6 @@
1
+ SERVICE_ACCOUNT_EMAIL=238317317317-htv966ia96ii951mhhk6qhk6edtt2lad@developer.gserviceaccount.com
2
+ PROFILE_ID=777777
3
+ FILENAME=lib/most-popular/config/production/MyApplication-5eae1f52d9cf.p12
4
+ SECRET=notasecret
5
+ APPLICATION_NAME=MyApplication
6
+ APPLICATION_VERSION=1.0.0
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ .env
@@ -0,0 +1,16 @@
1
+ language: ruby
2
+ cache: bundler
3
+ rvm:
4
+ - 2.1.5
5
+ - 2.2.2
6
+ before_install:
7
+ - gem update --system
8
+ - gem --version
9
+ - gem update bundler
10
+
11
+ deploy:
12
+ provider: rubygems
13
+ api_key:
14
+ secure: Iu+VsOaUY3SRBbDz30ROceQdhsp5VZrZ9v9Qmy1O/KVJDgODz5dJBwlbw0bUW5KL7BhyuSZfkDHA/UaZoB1/Ww/Qf+RqPIo36C0YHGktfUUs3F8iaEAkd0unTf5NcI9H+OnAFR5VqHCn5nwla+gABM7kTYy2/uIrM36XRjHF3kUhBVLELcOjr3x4P1ofJKOdLoS4IPMYc8sYT/Ai/62XVlCKjK+za4UWba2nnSWI/D6i/Hja/HUlNc1eqEaQIB9NRDhGtvv3mIfBNkdVBn+T3hk1n9Ddb07xOoPYfo8QKCMzC0vv0ayqUEEBlYYylFxXBETK3n7KB6u30/soMJNfj7ncZ8ePe1kHXS1wpd5uTI7kBFRWCwScXaEtAuMt73+3V6KHQKNXljESCAOqrIDVVHJjh8RsSVHseDpSCHEY9TsDMIUyTjIcYovRlGakWLNUmRM5yWJO19IahiGElaxG6xMywcyeRDzOVKh5XBe/pD2asa54NnyEQ62lQLm+CLv9Ma2kEAZUAjLLOXR/duaorHOeiET39QoxgVeSWqIaQFOvuHqZv9ziRRITVqOSFZD9vjdqCMm44aipgi8bbl1iLzLIQG/ceHg4C/AkLsO4xtgv/7ThARLy3Xq5XVkjp9TkMZDrE6s7K9ryB/z21XczSe4XnMRbJUWnvp2Etieyecw=
15
+ on:
16
+ tags: true
@@ -0,0 +1,13 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
4
+
5
+ We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, age, or religion.
6
+
7
+ Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
8
+
9
+ Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.
10
+
11
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
12
+
13
+ This Code of Conduct is adapted from the [Contributor Covenant](http:contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/)
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in most-popular.gemspec
4
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 gambaroff
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,143 @@
1
+ [![Build Status](https://travis-ci.org/gambaroff/google-analytics-most-popular.svg?branch=master)](https://travis-ci.org/gambaroff/google-analytics-most-popular)
2
+ # most_popular
3
+
4
+ Add this line to your application's Gemfile:
5
+
6
+ ```ruby
7
+ gem 'most-popular'
8
+ ```
9
+
10
+ And then execute:
11
+
12
+ $ bundle
13
+
14
+ Or install it yourself as:
15
+
16
+ $ gem install most-popular
17
+
18
+ ## Usage
19
+ You will need a service account credentials from google.
20
+
21
+ ## Service Account with Google for Server-to-Server Applications
22
+ Google API uses OAuth 2.0 with service accounts. Learn more about Google APIs and OAuth 2.0 here:https://developers.google.com/accounts/docs/OAuth2
23
+
24
+ Or, follow these steps.
25
+
26
+ 1. From the "Project Home" screen, activate access to "Google+ API”.
27
+ 2. From google developer console, APIs -> Enabled APIs - Must enable analytics API
28
+ 3. Click on "APIs&Auth" in the left column
29
+ 4. Click Credentials in the left column
30
+ 5. Under OAuth click Create New ClientID button
31
+ 6. Give your application a name and click "Next"
32
+ 7. Select "Service Account" as the "Application type"
33
+ 8. Select "other" under "Installed application type"
34
+ 9. Click "Create client ID"
35
+ 10. Click 'Download private key' to save the generate private key file
36
+
37
+
38
+ ### Managing Credentials
39
+
40
+ * ###Using Bash or Zsh Profile
41
+
42
+ This is the “bare minimum” solution. You can store the environment variable key/value pairs with the operating system directly and globally, so they are going to be available to the Rails app. In your .bashrc file or .zshrc file, set environment variables with lines like:
43
+ ```
44
+ export KEY=value
45
+ ```
46
+
47
+ With this, you can fire up rails console or irb and access your environment var by doing:
48
+
49
+ ```
50
+ ENV["KEY"]
51
+ => "value"
52
+ ```
53
+ This is also not very ideal for creating app-specific environment variables or using different environment variables for different environments such as development and testing
54
+ http://www.gotealeaf.com/blog/managing-environment-configuration-variables-in-rails
55
+
56
+ * ###Using a gem, like Dotenv
57
+
58
+ [Dotenv](https://github.com/bkeepers/dotenv) solves the problems of setting project-specific environment vars and is super easy to get started on. Start by including the ```gem 'dotenv-rails', :groups => [:development, :test]``` in the appropriate groups, in this case development and test. You can then put your sensitive information inside a .env file at the root of your project directory:
59
+
60
+ ```
61
+ SERVICE_ACCOUNT_EMAIL=072731723843-htv966ia965hk61mii9hqr98edtt2lad@developer.gserviceaccount.com
62
+ PROFILE_ID=77777
63
+ FILENAME=config/environments/production/YourApp-5eee1f52d9cf.p12
64
+ SECRET=notasecret
65
+ ```
66
+
67
+ You can call these variables anywhere in your Rails application by using: ```ENV["SERVICE_ACCOUNT_EMAIL"], ENV["PROFILE_ID"], ENV["FILENAME"] and ENV["SECRET"]```
68
+
69
+ Support for export (for accessing these variables in the terminal) and yaml-like configs come baked in. Make sure to git-ignore your ```.env``` files if you’re working alone or you’ll be back to square one. While working on a team, you can maintain a default ```.env.example``` file that is checked into source control with further instructions to other developers. check out [dotenv](https://github.com/bkeepers/dotenv)
70
+
71
+ More info on [Managing Environment Configuration Variables in Rails](http://www.gotealeaf.com/blog/managing-environment-configuration-variables-in-rails)
72
+
73
+
74
+ ### Example Rails App
75
+
76
+ ```ruby
77
+ #app/models/concerns/most_popupar_story.rb
78
+
79
+ class MostPopularStory
80
+ def initialize
81
+ builder = MostPopular::Analytics::GoogleAnalyticsBuilder.new
82
+ builder.service_account({
83
+ service_account_email: ENV["SERVICE_ACCOUNT_EMAIL"],
84
+ profile_id: ENV["PROFILE_ID"]
85
+ })
86
+ builder.key_file({
87
+ filename: ENV["FILENAME"],
88
+ secret: ENV["SECRET"]
89
+ })
90
+ builder.application({
91
+ application_name: 'Your Application',
92
+ application_version: '1.0.0'
93
+ })
94
+ builder.api(:api_v3)
95
+ builder.filter({filter: 'topics'})
96
+ analytics = builder.build
97
+ @trending = MostPopular::Trending::TrendingStory.new(analytics)
98
+ end
99
+
100
+ def trending
101
+ @trending.trending_stories
102
+ end
103
+ end
104
+ ```
105
+
106
+ ### Optional Arguments
107
+
108
+ trending_stories method can take a Hash of any of these *date: :today*, *date: :last_day*, *date: :last_week*, *num_results: 10*, filter: 'my_filter'
109
+
110
+ for example
111
+
112
+ ```ruby
113
+ @trending.trending_stories(date: :last_week, num_results: 3)
114
+ ```
115
+
116
+ ## Testing Example, using VCR gem
117
+ ```ruby
118
+ require 'rails_helper'
119
+
120
+ RSpec.describe MostPopularStory do
121
+ let(:trending) { MostPopularStory.new}
122
+
123
+ VCR.use_cassette('treding_story', :record => :new_episodes) do
124
+ describe '#initialize' do
125
+ it 'can be instantiated',:vcr do
126
+ expect(trending).not_to be_nil
127
+ expect(trending.class).to eq MostPopularStory
128
+ end
129
+ end
130
+
131
+ describe '#now_trending' do
132
+ it 'contains an array of trending stories', :vcr do
133
+ expect(trending.now_trending.class).to eq Array
134
+ expect(trending.now_trending.size).to eq 10
135
+ end
136
+
137
+ it 'contains expected Object', :vcr do
138
+ expect(trending.now_trending.first.class).to eq MostPopular::Trending::ViewedStory
139
+ end
140
+ end
141
+ end
142
+ end
143
+ ```
@@ -0,0 +1,5 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ task default: :spec
5
+ RSpec::Core::RakeTask.new
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "most-popular"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,4 @@
1
+ require "most-popular/version"
2
+ require "most-popular/google_analytics"
3
+ require "most-popular/viewed_story"
4
+ require "most-popular/trending"
@@ -0,0 +1,88 @@
1
+ require 'google/api_client'
2
+
3
+ module MostPopular
4
+ module Analytics
5
+ class GoogleAnalytics
6
+ # Don't call GoogleAnalytics.new directly. Use GoogleAnalyticsBuilder instead. See unit tests
7
+ def initialize(client, api_method, profile_id, filter)
8
+ @client = client
9
+ @api_method = api_method
10
+ @profile_id = profile_id
11
+ @filter = filter
12
+ end
13
+
14
+ def summarize(args={})
15
+ args = defaults.merge(args)
16
+ results = @client.execute(
17
+ :api_method => @api_method,
18
+ :parameters => query_hash(args))
19
+ results.data.rows
20
+ end
21
+
22
+ private
23
+
24
+ def defaults
25
+ {start_date: 'yesterday', end_date: 'today', num_results: 10 }
26
+ end
27
+
28
+ def query_hash(args)
29
+ {
30
+ 'ids' => "ga:" + @profile_id,
31
+ 'start-date' => args[:start_date],
32
+ 'end-date' => args[:end_date],
33
+ 'dimensions' => 'ga:pagePath',
34
+ 'metrics' => 'ga:pageviews',
35
+ 'sort' => '-ga:pageviews',
36
+ 'filters' => 'ga:pagePath=~^/' + @filter.to_s + '/.*',
37
+ 'max-results' => args[:num_results]
38
+ }
39
+ end
40
+
41
+ end
42
+
43
+ class GoogleAnalyticsBuilder
44
+ def service_account(args)
45
+ @service_account_email = args[:service_account_email]
46
+ @profile_id = args[:profile_id]
47
+ end
48
+
49
+ def key_file(args)
50
+ @key_file = args[:filename]
51
+ @key_secret = args[:secret]
52
+ end
53
+
54
+ def application(args)
55
+ @application_name = args[:application_name]
56
+ @application_version = args[:application_version]
57
+ end
58
+
59
+ def api(api)
60
+ raise 'API not yet supported' unless api == :api_v3
61
+ @api_name = 'analytics'
62
+ @api_version = 'v3'
63
+ end
64
+
65
+ def filter(args)
66
+ @filter = args[:filter]
67
+ end
68
+
69
+ def build
70
+ #TODO check if account is set up or else raise exception
71
+ client = Google::APIClient.new(
72
+ :application_name => @application_name,
73
+ :application_version => @application_version
74
+ )
75
+ key = Google::APIClient::KeyUtils.load_from_pkcs12(@key_file, @key_secret)
76
+ client.authorization = Signet::OAuth2::Client.new(
77
+ :token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
78
+ :audience => 'https://accounts.google.com/o/oauth2/token',
79
+ :scope => 'https://www.googleapis.com/auth/analytics.readonly',
80
+ :issuer => @service_account_email,
81
+ :signing_key => key)
82
+ client.authorization.fetch_access_token!
83
+ api_method = client.discovered_api(@api_name, @api_version).data.ga.get
84
+ GoogleAnalytics.new(client, api_method, @profile_id, @filter)
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,32 @@
1
+ module MostPopular
2
+ module Trending
3
+ class TrendingStory
4
+
5
+ def initialize(analytics)
6
+ @analytics = analytics
7
+ end
8
+
9
+ def trending_stories(date: :last_day, num_results: 10)
10
+ start_date, end_date = dates_for(date)
11
+ rows = @analytics.summarize({start_date: start_date, end_date: end_date, num_results: num_results})
12
+ rows.collect do |r|
13
+ ViewedStory.new(r.first, r.last)
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def dates_for(date)
20
+ #TODO consider moving logic to Analytics subclasses
21
+ case date
22
+ when :last_day
23
+ return 'yesterday', 'today'
24
+ when :last_week
25
+ return '7daysAgo', 'today'
26
+ else
27
+ raise "I don't know what to do with #{date}"
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,3 @@
1
+ module MostPopular
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,13 @@
1
+ module MostPopular
2
+ module Trending
3
+ class ViewedStory
4
+ attr_reader :uri,:views
5
+
6
+ def initialize(uri,views)
7
+ @uri = uri
8
+ @views = views
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,34 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'most-popular/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "most-popular"
8
+ spec.version = MostPopular::VERSION
9
+ spec.authors = ["Stephania Gambaroff Thomas"]
10
+ spec.email = ["sthomas@marketplace.org"]
11
+
12
+ spec.summary = %q{Google Analytics Most popular}
13
+ spec.description = %q{Authorizes server to server account and returns X number of most viewed pages by path}
14
+ spec.homepage = "https://github.com/gambaroff/google-analytics-most-popular"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
+ # delete this section to allow pushing this gem to any host.
19
+
20
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ spec.bindir = "exe"
22
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ spec.require_paths = ["lib"]
24
+
25
+ spec.add_dependency "google-api-client", "~> 0.8.6"
26
+
27
+ spec.add_development_dependency "bundler", "~> 1.9"
28
+ spec.add_development_dependency "rake", "~> 10.0"
29
+ spec.add_development_dependency "rspec", "~> 3.2"
30
+ spec.add_development_dependency "rspec-mocks", "~> 3.2"
31
+ spec.add_development_dependency "vcr", "~> 2.9"
32
+ spec.add_development_dependency "webmock", "~> 1.20"
33
+ spec.add_development_dependency "dotenv", "~> 2.0"
34
+ end
metadata ADDED
@@ -0,0 +1,175 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: most-popular
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Stephania Gambaroff Thomas
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-07-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: google-api-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.8.6
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.8.6
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.9'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.9'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-mocks
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: vcr
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.9'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.9'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.20'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.20'
111
+ - !ruby/object:Gem::Dependency
112
+ name: dotenv
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '2.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '2.0'
125
+ description: Authorizes server to server account and returns X number of most viewed
126
+ pages by path
127
+ email:
128
+ - sthomas@marketplace.org
129
+ executables: []
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - ".env.example"
134
+ - ".gitignore"
135
+ - ".travis.yml"
136
+ - CODE_OF_CONDUCT.md
137
+ - Gemfile
138
+ - LICENSE.txt
139
+ - README.md
140
+ - Rakefile
141
+ - bin/console
142
+ - bin/setup
143
+ - lib/most-popular.rb
144
+ - lib/most-popular/config/Test-5eae1f52d9cf.p12
145
+ - lib/most-popular/config/Test2-2bdbc68098d7.p12
146
+ - lib/most-popular/google_analytics.rb
147
+ - lib/most-popular/trending.rb
148
+ - lib/most-popular/version.rb
149
+ - lib/most-popular/viewed_story.rb
150
+ - most-popular.gemspec
151
+ homepage: https://github.com/gambaroff/google-analytics-most-popular
152
+ licenses:
153
+ - MIT
154
+ metadata: {}
155
+ post_install_message:
156
+ rdoc_options: []
157
+ require_paths:
158
+ - lib
159
+ required_ruby_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ required_rubygems_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ requirements: []
170
+ rubyforge_project:
171
+ rubygems_version: 2.4.8
172
+ signing_key:
173
+ specification_version: 4
174
+ summary: Google Analytics Most popular
175
+ test_files: []