chronicle-foursquare 0.1.1 → 0.2.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -0
- data/Gemfile +2 -2
- data/README.md +7 -9
- data/Rakefile +1 -1
- data/bin/console +3 -3
- data/chronicle-foursquare.gemspec +30 -25
- data/lib/chronicle/foursquare/authorizer.rb +5 -5
- data/lib/chronicle/foursquare/{checkins_extractor.rb → checkin_extractor.rb} +7 -5
- data/lib/chronicle/foursquare/checkin_transformer.rb +58 -63
- data/lib/chronicle/foursquare/proxy.rb +3 -3
- data/lib/chronicle/foursquare/version.rb +1 -1
- data/lib/chronicle/foursquare.rb +7 -6
- data/lib/omniauth/strategies/foursquare.rb +19 -15
- metadata +42 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ebbe08ff2aed1578b59faa4de18500e7b8125e16da15f44987161af7b076ec7f
|
4
|
+
data.tar.gz: 5fc91f76c5b5b1e5fbe0e3c36cbe3b5f85fd7eaaf8a8f361686c75d3515b7078
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ea5b83f185f9dc7387822fcbec917517edc1cb5ecc5ca9b220b4924224849703e6528c17432866de09f6fbdebbd40db36e6defa78385c603ac1854f39b28b60
|
7
|
+
data.tar.gz: de5b48c9e3c6175898b2f9801ebd963ffe4bd50a1377677b27b7318083ac8646e59a81ff97b2be82e387c3d85231c38af1dd85e0b10efa8b0ca3291ed985ecb3
|
data/.rubocop.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -28,7 +28,7 @@ $ chronicle-etl secrets:set foursquare client_secret
|
|
28
28
|
Next, we need an access token for accessing your data. We can use the authorization flow:
|
29
29
|
|
30
30
|
```sh
|
31
|
-
$ chronicle-etl authorizations:
|
31
|
+
$ chronicle-etl authorizations:foursquare
|
32
32
|
```
|
33
33
|
|
34
34
|
This will open a browser window to authorize on foursquare.com. When the flow is complete, access/refresh tokens will be saved in the chronicle secret system under the "foursquare" namespace. It'll be available automatically whenever you use this plugin.
|
@@ -37,23 +37,21 @@ This will open a browser window to authorize on foursquare.com. When the flow is
|
|
37
37
|
```sh
|
38
38
|
# Extract recent checkins
|
39
39
|
$ chronicle-etl --extractor foursquare --since 1w
|
40
|
+
|
40
41
|
# Transform as Chronicle Schema
|
41
|
-
$ chronicle-etl --extractor foursquare --since 1w --
|
42
|
+
$ chronicle-etl --extractor foursquare --since 1w --schema chronicle
|
43
|
+
|
44
|
+
# Get a table of dates and place name
|
45
|
+
$ chronicle-etl --extractor foursquare --since 1w --schema chronicle --fields end_time object.name --loader table
|
42
46
|
```
|
43
47
|
|
44
48
|
## Available Connectors
|
45
49
|
|
46
50
|
### Extractors
|
47
51
|
|
48
|
-
#### `
|
52
|
+
#### `checkin`
|
49
53
|
|
50
54
|
Extractor for your Foursquare (via the Swarm app) checkins
|
51
55
|
|
52
56
|
##### Settings
|
53
57
|
- `access_token`: (required) API access token for foursquare. By default, it's loaded from secrets under the `foursquare` namespace. You can check if it's available with `chronicle-etl secrets:list foursquare`
|
54
|
-
|
55
|
-
### Transformers
|
56
|
-
|
57
|
-
#### `visit`
|
58
|
-
|
59
|
-
Transform a visit into Chronicle Schema
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'chronicle/foursquare'
|
6
6
|
|
7
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
8
8
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -11,5 +11,5 @@ require "chronicle/foursquare"
|
|
11
11
|
# require "pry"
|
12
12
|
# Pry.start
|
13
13
|
|
14
|
-
require
|
14
|
+
require 'irb'
|
15
15
|
IRB.start(__FILE__)
|
@@ -1,46 +1,51 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
lib = File.expand_path(
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
-
require
|
5
|
+
require 'chronicle/foursquare/version'
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name =
|
8
|
+
spec.name = 'chronicle-foursquare'
|
9
9
|
spec.version = Chronicle::Foursquare::VERSION
|
10
|
-
spec.authors = [
|
11
|
-
spec.email = [
|
10
|
+
spec.authors = ['Andrew Louis']
|
11
|
+
spec.email = ['andrew@hyfen.net']
|
12
12
|
|
13
|
-
spec.summary =
|
14
|
-
spec.description =
|
15
|
-
spec.homepage =
|
13
|
+
spec.summary = 'Foursquare importer for Chronicle'
|
14
|
+
spec.description = 'Foursquare connectors'
|
15
|
+
spec.homepage = 'https://github.com/chronicle-app/chronicle-foursquare'
|
16
|
+
|
17
|
+
spec.required_ruby_version = '>= 3.0'
|
16
18
|
|
17
19
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
18
20
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
19
21
|
if spec.respond_to?(:metadata)
|
20
|
-
spec.metadata['allowed_push_host'] =
|
22
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
21
23
|
|
22
|
-
spec.metadata[
|
23
|
-
spec.metadata[
|
24
|
-
spec.metadata[
|
24
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
25
|
+
spec.metadata['source_code_uri'] = 'https://github.com/chronicle-app/chronicle-foursquare'
|
26
|
+
spec.metadata['changelog_uri'] = 'https://github.com/chronicle-app/chronicle-foursquare'
|
25
27
|
else
|
26
|
-
raise
|
27
|
-
|
28
|
+
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
29
|
+
'public gem pushes.'
|
28
30
|
end
|
29
31
|
|
30
32
|
# Specify which files should be added to the gem when it is released.
|
31
33
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
32
|
-
spec.files
|
34
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
33
35
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
34
36
|
end
|
35
|
-
spec.bindir =
|
37
|
+
spec.bindir = 'exe'
|
36
38
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
37
|
-
spec.require_paths = [
|
38
|
-
|
39
|
-
spec.add_dependency
|
40
|
-
spec.add_dependency
|
41
|
-
spec.add_dependency
|
42
|
-
|
43
|
-
|
44
|
-
spec.add_development_dependency
|
45
|
-
spec.add_development_dependency
|
39
|
+
spec.require_paths = ['lib']
|
40
|
+
|
41
|
+
spec.add_dependency 'chronicle-core', '~> 0.3'
|
42
|
+
spec.add_dependency 'chronicle-etl', '~> 0.6'
|
43
|
+
spec.add_dependency 'faraday', '~> 2'
|
44
|
+
spec.add_dependency 'omniauth-oauth2', '~> 1'
|
45
|
+
|
46
|
+
spec.add_development_dependency 'bundler', '~> 2.3'
|
47
|
+
spec.add_development_dependency 'pry-byebug', '~> 3.10'
|
48
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
49
|
+
spec.add_development_dependency 'rubocop', '~> 1.63'
|
50
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
46
51
|
end
|
@@ -5,12 +5,12 @@ module Chronicle
|
|
5
5
|
class Authorizer < Chronicle::ETL::OauthAuthorizer
|
6
6
|
provider :foursquare
|
7
7
|
omniauth_strategy :foursquare
|
8
|
-
pluck_secrets({
|
9
|
-
access_token: [
|
8
|
+
pluck_secrets({
|
9
|
+
access_token: %i[credentials token],
|
10
10
|
uid: [:uid],
|
11
|
-
first_name: [
|
12
|
-
last_name: [
|
13
|
-
email: [
|
11
|
+
first_name: %i[info first_name],
|
12
|
+
last_name: %i[info last_name],
|
13
|
+
email: %i[info email]
|
14
14
|
})
|
15
15
|
end
|
16
16
|
end
|
@@ -1,15 +1,17 @@
|
|
1
1
|
module Chronicle
|
2
2
|
module Foursquare
|
3
|
-
class
|
3
|
+
class CheckinExtractor < Chronicle::ETL::Extractor
|
4
4
|
register_connector do |r|
|
5
|
-
r.
|
6
|
-
r.
|
5
|
+
r.source = :foursquare
|
6
|
+
r.type = :checkin
|
7
|
+
r.strategy = :api
|
8
|
+
r.description = 'foursquare checkin'
|
7
9
|
end
|
8
10
|
|
9
11
|
setting :access_token, required: true
|
10
12
|
|
11
13
|
def prepare
|
12
|
-
raise(Chronicle::ETL::ExtractionError,
|
14
|
+
raise(Chronicle::ETL::ExtractionError, 'Access token is missing') if @config.access_token.empty?
|
13
15
|
|
14
16
|
@proxy = Chronicle::Foursquare::Proxy.new(access_token: @config.access_token)
|
15
17
|
@actor = load_actor
|
@@ -22,7 +24,7 @@ module Chronicle
|
|
22
24
|
|
23
25
|
def extract
|
24
26
|
@checkins.each do |checkin|
|
25
|
-
yield
|
27
|
+
yield build_extraction(data: checkin, meta: { actor: @actor })
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
@@ -2,84 +2,79 @@ module Chronicle
|
|
2
2
|
module Foursquare
|
3
3
|
class CheckinTransformer < Chronicle::ETL::Transformer
|
4
4
|
register_connector do |r|
|
5
|
-
r.
|
6
|
-
r.
|
7
|
-
r.
|
5
|
+
r.source = :foursquare
|
6
|
+
r.type = :checkin
|
7
|
+
r.strategy = :api
|
8
|
+
r.description = 'a checkin'
|
9
|
+
r.from_schema = :extraction
|
10
|
+
r.to_schema = :chronicle
|
8
11
|
end
|
9
12
|
|
10
|
-
def transform
|
11
|
-
|
13
|
+
def transform(record)
|
14
|
+
checkin = record.data
|
15
|
+
actor = record.extraction.meta[:actor]
|
16
|
+
build_checkin(checkin, actor)
|
12
17
|
end
|
13
18
|
|
14
|
-
|
15
|
-
Time.at(checkin[:createdAt])
|
16
|
-
end
|
19
|
+
private
|
17
20
|
|
18
|
-
def
|
19
|
-
|
21
|
+
def build_checkin(checkin, actor)
|
22
|
+
Chronicle::Models::CheckInAction.new do |r|
|
23
|
+
r.source = 'foursquare'
|
24
|
+
r.end_time = Time.at(checkin[:createdAt])
|
25
|
+
r.agent = build_agent(actor)
|
26
|
+
r.object = build_venue(checkin)
|
27
|
+
end
|
20
28
|
end
|
21
29
|
|
22
|
-
|
30
|
+
def build_venue(checkin)
|
31
|
+
venue = checkin[:venue]
|
32
|
+
location = venue[:location]
|
23
33
|
|
24
|
-
|
25
|
-
record = ::Chronicle::ETL::Models::Activity.new
|
26
|
-
record.provider = 'foursquare'
|
27
|
-
record.end_at = timestamp
|
28
|
-
record.provider_id = id
|
29
|
-
record.lat = checkin[:venue][:location][:lat]
|
30
|
-
record.lng = checkin[:venue][:location][:lng]
|
31
|
-
record.dedupe_on << ['provider', 'provider_id', 'verb']
|
32
|
-
record.involved = build_venue
|
33
|
-
record.actor = build_actor
|
34
|
-
record
|
35
|
-
end
|
34
|
+
# TODO: represent categories (https://github.com/chronicle-app/chronicle-core/issues/10)
|
36
35
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
record.provider_id = checkin[:venue][:id]
|
44
|
-
record.lat = checkin[:venue][:location][:lat]
|
45
|
-
record.lng = checkin[:venue][:location][:lng]
|
46
|
-
record.dedupe_on << ['provider', 'provider_id', 'represents']
|
47
|
-
record.abouts = checkin[:venue][:categories].map{|category| build_category(category)}
|
48
|
-
record
|
49
|
-
end
|
36
|
+
Chronicle::Models::Place.new do |r|
|
37
|
+
r.source = 'foursquare'
|
38
|
+
r.name = venue[:name]
|
39
|
+
r.latitude = location[:lat]
|
40
|
+
r.longitude = location[:lng]
|
41
|
+
r.source_id = venue[:id]
|
50
42
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
record.dedupe_on << ['provider', 'provider_id', 'represents']
|
60
|
-
record.attachments = [::Chronicle::ETL::Models::Attachment.new({
|
61
|
-
url_original: actor[:photo][:prefix] + "260x260" + actor[:photo][:suffix]
|
62
|
-
})]
|
63
|
-
record
|
64
|
-
end
|
43
|
+
r.address = Chronicle::Models::PostalAddress.new do |a|
|
44
|
+
a.description = location&.dig(:formattedAddress)&.join(', ')
|
45
|
+
a.address_country = location[:country]
|
46
|
+
a.address_locality = location[:city]
|
47
|
+
a.address_region = location[:state]
|
48
|
+
a.postal_code = location[:postalCode]
|
49
|
+
a.street_address = location[:address]
|
50
|
+
end
|
65
51
|
|
66
|
-
|
67
|
-
|
68
|
-
record.provider = 'foursquare'
|
69
|
-
record.provider_id = category[:id]
|
70
|
-
record.represents = 'topic'
|
71
|
-
record.title = category[:name]
|
72
|
-
record.dedupe_on << ['provider', 'provider_id', 'represents']
|
73
|
-
record
|
52
|
+
r.dedupe_on = [%i[source source_id type]]
|
53
|
+
end
|
74
54
|
end
|
75
55
|
|
76
|
-
def
|
77
|
-
|
78
|
-
|
56
|
+
def build_agent(actor)
|
57
|
+
image_url = "#{actor[:photo][:prefix]}260x260#{actor[:photo][:suffix]}"
|
58
|
+
name = "#{actor[:firstName]} #{actor[:lastName]}"
|
79
59
|
|
80
|
-
|
81
|
-
|
60
|
+
Chronicle::Models::Person.new do |r|
|
61
|
+
r.source = 'foursquare'
|
62
|
+
r.name = name
|
63
|
+
r.image = image_url
|
64
|
+
r.source_id = actor[:id]
|
65
|
+
r.url = actor[:canonicalUrl]
|
66
|
+
end
|
82
67
|
end
|
68
|
+
|
69
|
+
# def build_category(category)
|
70
|
+
# record = ::Chronicle::ETL::Models::Entity.new
|
71
|
+
# record.provider = 'foursquare'
|
72
|
+
# record.provider_id = category[:id]
|
73
|
+
# record.represents = 'topic'
|
74
|
+
# record.title = category[:name]
|
75
|
+
# record.dedupe_on << ['provider', 'provider_id', 'represents']
|
76
|
+
# record
|
77
|
+
# end
|
83
78
|
end
|
84
79
|
end
|
85
80
|
end
|
@@ -3,9 +3,9 @@ require 'faraday'
|
|
3
3
|
module Chronicle
|
4
4
|
module Foursquare
|
5
5
|
class Proxy
|
6
|
-
API_VERSION =
|
6
|
+
API_VERSION = 20_170_310
|
7
7
|
|
8
|
-
def initialize(access_token:
|
8
|
+
def initialize(access_token:)
|
9
9
|
@access_token = access_token
|
10
10
|
end
|
11
11
|
|
@@ -39,7 +39,7 @@ module Chronicle
|
|
39
39
|
load_endpoint('users/self/checkins', params)[:response][:checkins][:items]
|
40
40
|
end
|
41
41
|
|
42
|
-
def load_endpoint(endpoint, params={})
|
42
|
+
def load_endpoint(endpoint, params = {})
|
43
43
|
params = params.merge({
|
44
44
|
oauth_token: @access_token,
|
45
45
|
v: API_VERSION
|
data/lib/chronicle/foursquare.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'chronicle/etl'
|
4
|
+
require 'chronicle/models'
|
4
5
|
|
5
|
-
require_relative
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
9
|
-
require_relative
|
10
|
-
require_relative
|
6
|
+
require_relative 'foursquare/version'
|
7
|
+
require_relative '../omniauth/strategies/foursquare'
|
8
|
+
require_relative 'foursquare/proxy'
|
9
|
+
require_relative 'foursquare/authorizer'
|
10
|
+
require_relative 'foursquare/checkin_extractor'
|
11
|
+
require_relative 'foursquare/checkin_transformer'
|
@@ -11,28 +11,28 @@ module OmniAuth
|
|
11
11
|
module Strategies
|
12
12
|
class Foursquare < OmniAuth::Strategies::OAuth2
|
13
13
|
option :client_options, {
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
14
|
+
site: 'https://foursquare.com',
|
15
|
+
authorize_url: '/oauth2/authenticate',
|
16
|
+
token_url: '/oauth2/access_token'
|
17
17
|
}
|
18
18
|
|
19
19
|
uid { raw_info['id'] }
|
20
20
|
|
21
21
|
info do
|
22
22
|
{
|
23
|
-
:
|
24
|
-
:
|
25
|
-
:
|
26
|
-
:
|
27
|
-
:
|
28
|
-
:
|
29
|
-
:
|
30
|
-
:
|
23
|
+
first_name: raw_info['firstName'],
|
24
|
+
last_name: raw_info['lastName'],
|
25
|
+
name: "#{raw_info['firstName']} #{raw_info['lastName']}",
|
26
|
+
email: (raw_info['contact'] || {})['email'],
|
27
|
+
phone: (raw_info['contact'] || {})['phone'],
|
28
|
+
image: raw_info['photo'],
|
29
|
+
location: raw_info['homeCity'],
|
30
|
+
description: raw_info['bio']
|
31
31
|
}
|
32
32
|
end
|
33
33
|
|
34
34
|
extra do
|
35
|
-
{ :
|
35
|
+
{ raw_info: raw_info }
|
36
36
|
end
|
37
37
|
|
38
38
|
def request_phase
|
@@ -41,8 +41,12 @@ module OmniAuth
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def auth_hash
|
44
|
-
OmniAuth::Utils.deep_merge(super,
|
45
|
-
|
44
|
+
OmniAuth::Utils.deep_merge(super,
|
45
|
+
client_params.merge(
|
46
|
+
{
|
47
|
+
grant_type: 'authorization_code'
|
48
|
+
}
|
49
|
+
))
|
46
50
|
end
|
47
51
|
|
48
52
|
def raw_info
|
@@ -54,7 +58,7 @@ module OmniAuth
|
|
54
58
|
private
|
55
59
|
|
56
60
|
def client_params
|
57
|
-
{:
|
61
|
+
{ client_id: options[:client_id], redirect_uri: callback_url, response_type: 'code' }
|
58
62
|
end
|
59
63
|
end
|
60
64
|
end
|
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chronicle-foursquare
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Louis
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: chronicle-core
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.3'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: chronicle-etl
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - "~>"
|
18
32
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
33
|
+
version: '0.6'
|
20
34
|
type: :runtime
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
38
|
- - "~>"
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
40
|
+
version: '0.6'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: faraday
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,34 +80,48 @@ dependencies:
|
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '2.3'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry-byebug
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.10'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.10'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: rake
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
72
100
|
requirements:
|
73
101
|
- - "~>"
|
74
102
|
- !ruby/object:Gem::Version
|
75
|
-
version: 13.0
|
103
|
+
version: '13.0'
|
76
104
|
type: :development
|
77
105
|
prerelease: false
|
78
106
|
version_requirements: !ruby/object:Gem::Requirement
|
79
107
|
requirements:
|
80
108
|
- - "~>"
|
81
109
|
- !ruby/object:Gem::Version
|
82
|
-
version: 13.0
|
110
|
+
version: '13.0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
112
|
+
name: rubocop
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
115
|
- - "~>"
|
88
116
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
117
|
+
version: '1.63'
|
90
118
|
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
93
121
|
requirements:
|
94
122
|
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
124
|
+
version: '1.63'
|
97
125
|
description: Foursquare connectors
|
98
126
|
email:
|
99
127
|
- andrew@hyfen.net
|
@@ -102,6 +130,7 @@ extensions: []
|
|
102
130
|
extra_rdoc_files: []
|
103
131
|
files:
|
104
132
|
- ".gitignore"
|
133
|
+
- ".rubocop.yml"
|
105
134
|
- CODE_OF_CONDUCT.md
|
106
135
|
- Gemfile
|
107
136
|
- README.md
|
@@ -111,8 +140,8 @@ files:
|
|
111
140
|
- chronicle-foursquare.gemspec
|
112
141
|
- lib/chronicle/foursquare.rb
|
113
142
|
- lib/chronicle/foursquare/authorizer.rb
|
143
|
+
- lib/chronicle/foursquare/checkin_extractor.rb
|
114
144
|
- lib/chronicle/foursquare/checkin_transformer.rb
|
115
|
-
- lib/chronicle/foursquare/checkins_extractor.rb
|
116
145
|
- lib/chronicle/foursquare/proxy.rb
|
117
146
|
- lib/chronicle/foursquare/version.rb
|
118
147
|
- lib/omniauth/strategies/foursquare.rb
|
@@ -123,6 +152,7 @@ metadata:
|
|
123
152
|
homepage_uri: https://github.com/chronicle-app/chronicle-foursquare
|
124
153
|
source_code_uri: https://github.com/chronicle-app/chronicle-foursquare
|
125
154
|
changelog_uri: https://github.com/chronicle-app/chronicle-foursquare
|
155
|
+
rubygems_mfa_required: 'true'
|
126
156
|
post_install_message:
|
127
157
|
rdoc_options: []
|
128
158
|
require_paths:
|
@@ -131,14 +161,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
131
161
|
requirements:
|
132
162
|
- - ">="
|
133
163
|
- !ruby/object:Gem::Version
|
134
|
-
version: '0'
|
164
|
+
version: '3.0'
|
135
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
166
|
requirements:
|
137
167
|
- - ">="
|
138
168
|
- !ruby/object:Gem::Version
|
139
169
|
version: '0'
|
140
170
|
requirements: []
|
141
|
-
rubygems_version: 3.
|
171
|
+
rubygems_version: 3.4.10
|
142
172
|
signing_key:
|
143
173
|
specification_version: 4
|
144
174
|
summary: Foursquare importer for Chronicle
|