sim-meter-au 0.1.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.
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "date"
4
+
5
+ module SimMeterAU
6
+ module Serializable
7
+ def to_h
8
+ members.to_h do |member|
9
+ [member, serialize_value(public_send(member))]
10
+ end
11
+ end
12
+
13
+ private
14
+
15
+ def serialize_value(value)
16
+ case value
17
+ when Serializable
18
+ value.to_h
19
+ when Array
20
+ value.map { |item| serialize_value(item) }
21
+ when Date, Time
22
+ value.iso8601
23
+ else
24
+ value
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SimMeterAU
4
+ Service = Data.define(:id, :name, :number) do
5
+ include Serializable
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SimMeterAU
4
+ VERSION = "0.1.0"
5
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "sim_meter_au/version"
4
+ require_relative "sim_meter_au/errors"
5
+ require_relative "sim_meter_au/serializable"
6
+ require_relative "sim_meter_au/service"
7
+ require_relative "sim_meter_au/models"
8
+ require_relative "sim_meter_au/provider"
9
+ require_relative "sim_meter_au/providers/aldi_mobile"
10
+ require_relative "sim_meter_au/providers/aldi_mobile/parsers/service_details"
11
+ require_relative "sim_meter_au/providers/aldi_mobile/parsers/usage"
12
+ require_relative "sim_meter_au/providers/aldi_mobile/parsers/orders"
13
+ require_relative "sim_meter_au/cli"
14
+
15
+ module SimMeterAU
16
+ PROVIDERS = {
17
+ aldi_mobile: Providers::AldiMobile
18
+ }.freeze
19
+
20
+ PROVIDER_ALIASES = {
21
+ aldi: :aldi_mobile,
22
+ aldimobile: :aldi_mobile
23
+ }.freeze
24
+
25
+ def self.client(provider:, **options)
26
+ provider_class(provider).new(**options)
27
+ end
28
+
29
+ def self.provider_class(provider)
30
+ key = normalize_provider(provider)
31
+ PROVIDERS.fetch(key)
32
+ rescue KeyError
33
+ available = PROVIDERS.keys.join(", ")
34
+ raise ProviderNotFoundError,
35
+ "Unknown provider #{provider.inspect}. Available providers: #{available}"
36
+ end
37
+
38
+ def self.providers
39
+ PROVIDERS.keys
40
+ end
41
+
42
+ def self.normalize_provider(provider)
43
+ key = provider.to_s.downcase.tr("- ", "_").to_sym
44
+ PROVIDER_ALIASES.fetch(key, key)
45
+ end
46
+ private_class_method :normalize_provider
47
+ end
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sim-meter-au
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Darren Jeacocke
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: mechanize
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '2.14'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '2.14'
26
+ - !ruby/object:Gem::Dependency
27
+ name: dotenv
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '3.2'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.2'
40
+ - !ruby/object:Gem::Dependency
41
+ name: minitest
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '5.25'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '5.25'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rake
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '13.2'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '13.2'
68
+ - !ruby/object:Gem::Dependency
69
+ name: webmock
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.24'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '3.24'
82
+ description: Exposes mobile services, balances, expiry and usage through provider
83
+ adapters.
84
+ email:
85
+ - dazonic@me.com
86
+ executables:
87
+ - sim-meter-au
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - LICENSE.md
92
+ - README.md
93
+ - exe/sim-meter-au
94
+ - lib/sim-meter-au.rb
95
+ - lib/sim_meter_au.rb
96
+ - lib/sim_meter_au/cli.rb
97
+ - lib/sim_meter_au/errors.rb
98
+ - lib/sim_meter_au/models.rb
99
+ - lib/sim_meter_au/provider.rb
100
+ - lib/sim_meter_au/providers/aldi_mobile.rb
101
+ - lib/sim_meter_au/providers/aldi_mobile/parsers/orders.rb
102
+ - lib/sim_meter_au/providers/aldi_mobile/parsers/service_details.rb
103
+ - lib/sim_meter_au/providers/aldi_mobile/parsers/usage.rb
104
+ - lib/sim_meter_au/serializable.rb
105
+ - lib/sim_meter_au/service.rb
106
+ - lib/sim_meter_au/version.rb
107
+ homepage: https://github.com/daz/sim-meter-au
108
+ licenses:
109
+ - MIT
110
+ metadata:
111
+ source_code_uri: https://github.com/daz/sim-meter-au
112
+ bug_tracker_uri: https://github.com/daz/sim-meter-au/issues
113
+ rubygems_mfa_required: 'true'
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '4.0'
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubygems_version: 4.0.16
129
+ specification_version: 4
130
+ summary: A unified Ruby API for Australian mobile service accounts
131
+ test_files: []