omnievent 0.1.0.pre1

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.
data/lib/omnievent.rb ADDED
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "logger"
4
+
5
+ # Base module for OmniEvent
6
+ module OmniEvent
7
+ class Error < StandardError; end
8
+ class MissingStrategy < StandardError; end
9
+ class StrategyNotIncluded < StandardError; end
10
+ class StrategyNotConfigured < StandardError; end
11
+
12
+ module Strategies
13
+ autoload :Developer, "omnievent/strategies/developer"
14
+ end
15
+
16
+ autoload :Utils, "omnievent/utils"
17
+ autoload :Configuration, "omnievent/configuration"
18
+ autoload :Strategy, "omnievent/strategy"
19
+ autoload :Builder, "omnievent/builder"
20
+ autoload :KeyStore, "omnievent/key_store"
21
+ autoload :EventHash, "omnievent/event_hash"
22
+
23
+ class ActiveStrategies < OmniEvent::KeyStore; end
24
+
25
+ class << self
26
+ # The default logger.
27
+ def default_logger
28
+ logger = ::Logger.new($stdout)
29
+ logger.progname = "omniauth"
30
+ logger
31
+ end
32
+
33
+ # Get the configuration.
34
+ def config
35
+ Configuration.instance
36
+ end
37
+
38
+ # Setup the configuration.
39
+ def configure
40
+ yield config
41
+ end
42
+
43
+ # Get the current logger.
44
+ def logger
45
+ config.logger
46
+ end
47
+
48
+ # All available strategies.
49
+ def strategies
50
+ @strategies ||= []
51
+ end
52
+
53
+ # All active strategies.
54
+ def active_strategies
55
+ @active_strategies ||= ActiveStrategies.new
56
+ end
57
+
58
+ # List events.
59
+ def list_events(provider = nil, opts = {})
60
+ raise ArgumentError, "You need to pass a provider name as the first argument." unless provider
61
+
62
+ strategy_instance(provider).request(:list_events, opts)
63
+ end
64
+
65
+ def strategy_instance(provider)
66
+ klass = provider_class(provider)
67
+ raise MissingStrategy, "Could not find matching strategy for #{klass.inspect}." unless klass
68
+
69
+ strategy_proc = active_strategies[klass]
70
+
71
+ raise StrategyNotConfigured, "Strategy for #{klass.inspect} has not be configured." unless strategy_proc
72
+
73
+ strategy_proc.call
74
+ end
75
+
76
+ def provider_class(provider)
77
+ klass = OmniEvent::Utils.camelize(provider.to_s).to_s
78
+
79
+ begin
80
+ OmniEvent::Strategies.const_get(klass, false)
81
+ rescue NameError
82
+ false
83
+ end
84
+ end
85
+ end
86
+ end
data/omnievent.gemspec ADDED
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path("lib", __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require "omnievent/version"
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "omnievent"
9
+ spec.version = OmniEvent::VERSION
10
+ spec.authors = ["Angus McLeod"]
11
+ spec.email = ["development@pavilion.tech"]
12
+ spec.description = "Manage events from any calendar, event discovery, event ticketing,
13
+ event management, social network or video conferencing provider."
14
+ spec.summary = "Manage events from multiple providers."
15
+ spec.homepage = "https://github.com/paviliondev/omnievent"
16
+ spec.license = "MIT"
17
+ spec.required_ruby_version = ">= 2.6.0"
18
+ spec.metadata["homepage_uri"] = spec.homepage
19
+ spec.metadata["source_code_uri"] = spec.homepage
20
+ spec.metadata["changelog_uri"] = spec.homepage
21
+
22
+ spec.files = Dir.chdir(__dir__) do
23
+ `git ls-files -z`.split("\x0").reject do |f|
24
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
25
+ end
26
+ end
27
+ spec.bindir = "exe"
28
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
29
+ spec.require_paths = ["lib"]
30
+
31
+ spec.add_development_dependency "activesupport", "~> 7.0"
32
+ spec.add_development_dependency "byebug"
33
+ spec.add_development_dependency "rspec", "~> 3.4"
34
+ spec.add_dependency "hashie", ">= 3.4.6"
35
+ spec.add_dependency "iso-639", "~> 0.3.5"
36
+ spec.add_dependency "tzinfo", "~> 2.0"
37
+ end
data/sig/omnievent.rbs ADDED
@@ -0,0 +1,4 @@
1
+ module OmniEvent
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata ADDED
@@ -0,0 +1,152 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: omnievent
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.pre1
5
+ platform: ruby
6
+ authors:
7
+ - Angus McLeod
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2022-10-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '7.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '7.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: byebug
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.4'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: hashie
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 3.4.6
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 3.4.6
69
+ - !ruby/object:Gem::Dependency
70
+ name: iso-639
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.3.5
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.3.5
83
+ - !ruby/object:Gem::Dependency
84
+ name: tzinfo
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.0'
97
+ description: |-
98
+ Manage events from any calendar, event discovery, event ticketing,
99
+ event management, social network or video conferencing provider.
100
+ email:
101
+ - development@pavilion.tech
102
+ executables: []
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - ".rspec"
107
+ - ".rubocop.yml"
108
+ - CHANGELOG.md
109
+ - CODE_OF_CONDUCT.md
110
+ - Gemfile
111
+ - Gemfile.lock
112
+ - LICENSE.txt
113
+ - README.md
114
+ - Rakefile
115
+ - lib/omnievent.rb
116
+ - lib/omnievent/builder.rb
117
+ - lib/omnievent/configuration.rb
118
+ - lib/omnievent/event_hash.rb
119
+ - lib/omnievent/key_store.rb
120
+ - lib/omnievent/strategies/developer.rb
121
+ - lib/omnievent/strategy.rb
122
+ - lib/omnievent/utils.rb
123
+ - lib/omnievent/version.rb
124
+ - omnievent.gemspec
125
+ - sig/omnievent.rbs
126
+ homepage: https://github.com/paviliondev/omnievent
127
+ licenses:
128
+ - MIT
129
+ metadata:
130
+ homepage_uri: https://github.com/paviliondev/omnievent
131
+ source_code_uri: https://github.com/paviliondev/omnievent
132
+ changelog_uri: https://github.com/paviliondev/omnievent
133
+ post_install_message:
134
+ rdoc_options: []
135
+ require_paths:
136
+ - lib
137
+ required_ruby_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: 2.6.0
142
+ required_rubygems_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">"
145
+ - !ruby/object:Gem::Version
146
+ version: 1.3.1
147
+ requirements: []
148
+ rubygems_version: 3.1.4
149
+ signing_key:
150
+ specification_version: 4
151
+ summary: Manage events from multiple providers.
152
+ test_files: []