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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b127e38ea0c2b7e3393023e9d1deeab3b9b1ec098dbf8bcc1ad0dd16eb8ee107
4
- data.tar.gz: 885e48e2f24f23182ff8ab04fae71caebb8713ba55e0e12b82f5f66c0ebc797a
3
+ metadata.gz: ebbe08ff2aed1578b59faa4de18500e7b8125e16da15f44987161af7b076ec7f
4
+ data.tar.gz: 5fc91f76c5b5b1e5fbe0e3c36cbe3b5f85fd7eaaf8a8f361686c75d3515b7078
5
5
  SHA512:
6
- metadata.gz: 5d374d7055cc2eec0f690c5b2cc5f7f4bb62d985541064d3bc8215187f033b904660aa050b9b96faa00e6f10bedce4b753237779fbb6f0d4cf29548e1b0f40db
7
- data.tar.gz: 3723eb0eec233292e9dc24c6d4e7b5db4f3854c6019ca3442a7d30659ed1d258b4833cf8a99d2f669a1e87abaaab636e4b2b0ea1799cb28ecc082906ddc33069
6
+ metadata.gz: 7ea5b83f185f9dc7387822fcbec917517edc1cb5ecc5ca9b220b4924224849703e6528c17432866de09f6fbdebbd40db36e6defa78385c603ac1854f39b28b60
7
+ data.tar.gz: de5b48c9e3c6175898b2f9801ebd963ffe4bd50a1377677b27b7318083ac8646e59a81ff97b2be82e387c3d85231c38af1dd85e0b10efa8b0ca3291ed985ecb3
data/.rubocop.yml ADDED
@@ -0,0 +1,2 @@
1
+ inherit_gem:
2
+ chronicle-core: .rubocop-plugin.yml
data/Gemfile CHANGED
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in chronicle-foursquare.gemspec
6
6
  gemspec
7
7
 
8
- gem "rake", "~> 13.0"
8
+ gem 'rake', '~> 13.0'
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:new foursquare
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 --transformer foursquare --loader json
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
- #### `checkins`
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
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/gem_tasks"
3
+ require 'bundler/gem_tasks'
4
4
  task default: %i[]
data/bin/console CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require "bundler/setup"
5
- require "chronicle/foursquare"
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 "irb"
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("../lib", __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require "chronicle/foursquare/version"
5
+ require 'chronicle/foursquare/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = "chronicle-foursquare"
8
+ spec.name = 'chronicle-foursquare'
9
9
  spec.version = Chronicle::Foursquare::VERSION
10
- spec.authors = ["Andrew Louis"]
11
- spec.email = ["andrew@hyfen.net"]
10
+ spec.authors = ['Andrew Louis']
11
+ spec.email = ['andrew@hyfen.net']
12
12
 
13
- spec.summary = "Foursquare importer for Chronicle"
14
- spec.description = "Foursquare connectors"
15
- spec.homepage = "https://github.com/chronicle-app/chronicle-foursquare"
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'] = "https://rubygems.org"
22
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
21
23
 
22
- spec.metadata["homepage_uri"] = spec.homepage
23
- spec.metadata["source_code_uri"] = "https://github.com/chronicle-app/chronicle-foursquare"
24
- spec.metadata["changelog_uri"] = "https://github.com/chronicle-app/chronicle-foursquare"
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 "RubyGems 2.0 or newer is required to protect against " \
27
- "public gem pushes."
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 = Dir.chdir(File.expand_path('..', __FILE__)) do
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 = "exe"
37
+ spec.bindir = 'exe'
36
38
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
37
- spec.require_paths = ["lib"]
38
-
39
- spec.add_dependency "chronicle-etl", "~> 0.5"
40
- spec.add_dependency "faraday", "~> 2"
41
- spec.add_dependency "omniauth-oauth2", "~> 1"
42
-
43
- spec.add_development_dependency "bundler", "~> 2.3"
44
- spec.add_development_dependency "rake", "~> 13.0.6"
45
- spec.add_development_dependency "pry-byebug", "~> 3.9"
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: [:credentials, :token],
8
+ pluck_secrets({
9
+ access_token: %i[credentials token],
10
10
  uid: [:uid],
11
- first_name: [:info, :first_name],
12
- last_name: [:info, :last_name],
13
- email: [:info, :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 CheckinsExtractor < Chronicle::ETL::Extractor
3
+ class CheckinExtractor < Chronicle::ETL::Extractor
4
4
  register_connector do |r|
5
- r.provider = 'foursquare'
6
- r.description = 'checkins'
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, "Access token is missing") if @config.access_token.empty?
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 Chronicle::ETL::Extraction.new(data: checkin, meta: { actor: @actor})
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.provider = 'foursquare'
6
- r.description = 'foursquare checkin'
7
- r.identifier = 'checkin'
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
- build_checkin
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
- def timestamp
15
- Time.at(checkin[:createdAt])
16
- end
19
+ private
17
20
 
18
- def id
19
- checkin[:id]
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
- private
30
+ def build_venue(checkin)
31
+ venue = checkin[:venue]
32
+ location = venue[:location]
23
33
 
24
- def build_checkin
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
- def build_venue
38
- record = ::Chronicle::ETL::Models::Entity.new
39
- record.provider = 'foursquare'
40
- record.provider = checkin[:venue][:id]
41
- record.represents = 'venue'
42
- record.title = checkin[:venue][:name]
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
- def build_actor
52
- record = ::Chronicle::ETL::Models::Entity.new
53
- record.provider = 'foursquare'
54
- record.represents = 'identity'
55
- record.title = "#{actor[:firstName]} #{actor[:lastName]}"
56
- record.provider_id = actor[:id]
57
- record.provider_url = actor[:canonicalUrl]
58
- record.dedupe_on << ['provider_url']
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
- def build_category(category)
67
- record = ::Chronicle::ETL::Models::Entity.new
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 checkin
77
- @checkin ||= @extraction.data
78
- end
56
+ def build_agent(actor)
57
+ image_url = "#{actor[:photo][:prefix]}260x260#{actor[:photo][:suffix]}"
58
+ name = "#{actor[:firstName]} #{actor[:lastName]}"
79
59
 
80
- def actor
81
- @actor ||= @extraction.meta[:actor]
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 = 20170310
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Chronicle
4
4
  module Foursquare
5
- VERSION = "0.1.1"
5
+ VERSION = '0.2.0'
6
6
  end
7
7
  end
@@ -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 "foursquare/version"
6
- require_relative "../omniauth/strategies/foursquare"
7
- require_relative "foursquare/proxy"
8
- require_relative "foursquare/authorizer"
9
- require_relative "foursquare/checkins_extractor"
10
- require_relative "foursquare/checkin_transformer"
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
- :site => 'https://foursquare.com',
15
- :authorize_url => '/oauth2/authenticate',
16
- :token_url => '/oauth2/access_token'
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
- :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']
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
- { :raw_info => raw_info }
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, client_params.merge({
45
- :grant_type => 'authorization_code'}))
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
- {:client_id => options[:client_id], :redirect_uri => callback_url ,:response_type => "code"}
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.1.1
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: 2022-05-18 00:00:00.000000000 Z
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.5'
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.5'
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.6
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.6
110
+ version: '13.0'
83
111
  - !ruby/object:Gem::Dependency
84
- name: pry-byebug
112
+ name: rubocop
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
115
  - - "~>"
88
116
  - !ruby/object:Gem::Version
89
- version: '3.9'
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: '3.9'
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.3.3
171
+ rubygems_version: 3.4.10
142
172
  signing_key:
143
173
  specification_version: 4
144
174
  summary: Foursquare importer for Chronicle