mpesa_stk 1.3 → 3.0.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: 12e1c2a4f60b943357593f37099a3ef7e5a9f4c272a0aca0960452b504789fe0
4
- data.tar.gz: 14c3633244b9867b275a1e10949f4b6880b62c04e42213c6b5b2f4ded24e4dc1
3
+ metadata.gz: 94ab99204952e38b30261d8fe99056e6bd73490188168fb7715678ce2441da1c
4
+ data.tar.gz: d2c669caa9c3188c6501e38399bf956558298eb76a8c9d101dc2d15ab4def24f
5
5
  SHA512:
6
- metadata.gz: 7fe982c6d29a14a7ab22e2acc16d97b9411666c47edf664c5f77a9e0b398d7b6cf3c031bdd9c9e55003f4fb31a21ecaef65e5eeadb4f7893721c3c466ba06e57
7
- data.tar.gz: c2dbf612bd39861047a24cf0497a01893ec6b0018ec20ee6f33cc8a36d0964e87172566f0090bcf4e29f076d099192dab6b0e859951029db8d32b38feb04171a
6
+ metadata.gz: 5e5ba51ab343854857e5cfbc47df4bdfa54c249a91287eabb56db5be22c9b3f440634f7ea6a89bfd1a393bfc1aa30639e2cc01441774b6872307ddfa26ce931d
7
+ data.tar.gz: ae94348ea8d875a3384e6fa64dd58ce96ee3a86fb3525b826d3ec24c41ec887e6f75d5ee6ff1a6dc981f217dcac33f69a937c1241b2c742a0d3eec59a5ce8ae5
@@ -0,0 +1,70 @@
1
+ # For most projects, this workflow file will not need changing; you simply need
2
+ # to commit it to your repository.
3
+ #
4
+ # You may wish to alter this file to override the set of languages analyzed,
5
+ # or to provide custom queries or build logic.
6
+ #
7
+ # ******** NOTE ********
8
+ # We have attempted to detect the languages in your repository. Please check
9
+ # the `language` matrix defined below to confirm you have the correct set of
10
+ # supported CodeQL languages.
11
+ #
12
+ name: "CodeQL"
13
+
14
+ on:
15
+ push:
16
+ branches: [ master ]
17
+ pull_request:
18
+ # The branches below must be a subset of the branches above
19
+ branches: [ master ]
20
+ schedule:
21
+ - cron: '41 13 * * 1'
22
+
23
+ jobs:
24
+ analyze:
25
+ name: Analyze
26
+ runs-on: ubuntu-latest
27
+ permissions:
28
+ actions: read
29
+ contents: read
30
+ security-events: write
31
+
32
+ strategy:
33
+ fail-fast: false
34
+ matrix:
35
+ language: [ 'ruby' ]
36
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
37
+ # Learn more about CodeQL language support at https://git.io/codeql-language-support
38
+
39
+ steps:
40
+ - name: Checkout repository
41
+ uses: actions/checkout@v2
42
+
43
+ # Initializes the CodeQL tools for scanning.
44
+ - name: Initialize CodeQL
45
+ uses: github/codeql-action/init@v1
46
+ with:
47
+ languages: ${{ matrix.language }}
48
+ # If you wish to specify custom queries, you can do so here or in a config file.
49
+ # By default, queries listed here will override any specified in a config file.
50
+ # Prefix the list here with "+" to use these queries and those in the config file.
51
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
52
+
53
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
54
+ # If this step fails, then you should remove it and run the build manually (see below)
55
+ - name: Autobuild
56
+ uses: github/codeql-action/autobuild@v1
57
+
58
+ # ℹ️ Command-line programs to run using the OS shell.
59
+ # 📚 https://git.io/JvXDl
60
+
61
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
62
+ # and modify them (or add more) to build your code if your project
63
+ # uses a compiled language
64
+
65
+ #- run: |
66
+ # make bootstrap
67
+ # make release
68
+
69
+ - name: Perform CodeQL Analysis
70
+ uses: github/codeql-action/analyze@v1
@@ -1,22 +1,26 @@
1
1
  name: Cop
2
- on: [push]
2
+ on: [push, pull_request]
3
3
 
4
4
  jobs:
5
5
  build:
6
6
  runs-on: ubuntu-latest
7
7
  steps:
8
- - name: Rubocop checks
9
- uses: gimenete/rubocop-action@1.0
10
- env:
11
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
12
-
13
- - uses: actions/checkout@v2
14
- - name: Set up Ruby 2.6
15
- uses: actions/setup-ruby@v1
8
+ - uses: actions/checkout@v4
9
+
10
+ - name: Set up Ruby
11
+ uses: ruby/setup-ruby@v1
16
12
  with:
17
- ruby-version: 2.6
18
- - name: Rails Test
13
+ ruby-version: "3.2"
14
+ bundler-cache: true
15
+
16
+ - name: Verify bundle installation
19
17
  run: |
20
- gem install bundler
21
- bundle install
22
- bundle exec rake test
18
+ bundle --version
19
+ bundle check || bundle install
20
+
21
+ - name: Rubocop checks
22
+ run: bundle exec rubocop
23
+ continue-on-error: false
24
+
25
+ - name: Run tests
26
+ run: bundle exec rake test
data/.gitignore CHANGED
@@ -9,6 +9,8 @@
9
9
 
10
10
  .env
11
11
  .DS_Store
12
+ ._*
13
+ **/._*
12
14
  *.gem
13
15
  dump.rdb
14
16
 
data/.rubocop.yml ADDED
@@ -0,0 +1,63 @@
1
+ # The behavior of RuboCop can be controlled via the .rubocop.yml
2
+ # configuration file. It makes it possible to enable/disable
3
+ # certain cops (checks) and to alter their behavior if they accept
4
+ # any parameters. The file can be placed either in your home
5
+ # directory or in some project directory.
6
+ #
7
+ # RuboCop will start looking for the configuration file in the directory
8
+ # where the inspected file is and continue its way up to the root directory.
9
+ #
10
+ # See https://docs.rubocop.org/rubocop/configuration
11
+
12
+ AllCops:
13
+ NewCops: enable
14
+ SuggestExtensions: false
15
+ TargetRubyVersion: 2.6
16
+ Exclude:
17
+ - 'vendor/**/*'
18
+ - 'test/**/*'
19
+ - 'spec/**/*'
20
+ - '**/._*'
21
+
22
+ # Disable Gemspec/DevelopmentDependencies - it's standard practice for gems
23
+ # to specify dev dependencies in gemspec
24
+ Gemspec/DevelopmentDependencies:
25
+ Enabled: false
26
+
27
+ # Allow longer lines for method signatures and complex API calls
28
+ Layout/LineLength:
29
+ Max: 130
30
+ Exclude:
31
+ - '**/*.gemspec'
32
+
33
+ # Allow longer methods for API classes that need to handle many parameters
34
+ Metrics/MethodLength:
35
+ Max: 15
36
+
37
+ # Allow longer classes for comprehensive API implementations
38
+ Metrics/ClassLength:
39
+ Max: 150
40
+
41
+ # Allow more complex methods for initialization with many parameters
42
+ # API classes need to handle many configuration options
43
+ Metrics/AbcSize:
44
+ Max: 25
45
+
46
+ Metrics/CyclomaticComplexity:
47
+ Max: 10
48
+
49
+ Metrics/PerceivedComplexity:
50
+ Max: 10
51
+
52
+ # Allow more parameters for API classes that need flexibility
53
+ # Some classes like Push need many optional parameters for different use cases
54
+ Metrics/ParameterLists:
55
+ Max: 10
56
+ CountKeywordArgs: true
57
+ MaxOptionalParameters: 6
58
+
59
+ # Allow get_ prefix for private validation/accessor methods
60
+ Naming/AccessorMethodName:
61
+ Enabled: true
62
+ Exclude:
63
+ - 'lib/mpesa_stk/**/*'
data/.sample.env CHANGED
@@ -1,10 +1,31 @@
1
1
  base_url="https://sandbox.safaricom.co.ke"
2
2
  token_generator_url="/oauth/v1/generate?grant_type=client_credentials"
3
3
  process_request_url="/mpesa/stkpush/v1/processrequest"
4
+ transaction_status_url="/mpesa/transactionstatus/v1/query"
5
+ stk_push_query_url="/mpesa/stkpushquery/v1/query"
6
+ b2c_url="/mpesa/b2c/v1/paymentrequest"
7
+ b2b_url="/mpesa/b2b/v1/paymentrequest"
8
+ c2b_register_url="/mpesa/c2b/v1/registerurl"
9
+ c2b_simulate_url="/mpesa/c2b/v1/simulate"
10
+ account_balance_url="/mpesa/accountbalance/v1/query"
11
+ reversal_url="/mpesa/reversal/v1/request"
12
+ ratiba_url="/standingorder/v1/createStandingOrderExternal"
13
+ iot_base_url="/simportal/v1"
14
+ pull_transactions_register_url="/pulltransactions/v1/register"
15
+ pull_transactions_query_url="/pulltransactions/v1/query"
4
16
 
5
17
  key=""
6
18
  secret=""
7
19
  business_short_code=""
8
20
  business_passkey=""
9
21
  callback_url="https://api.endpoint/callback"
10
- till_number=""
22
+ confirmation_url="https://api.endpoint/confirmation"
23
+ till_number=""
24
+ initiator=""
25
+ initiator_name=""
26
+ security_credential=""
27
+ result_url="https://api.endpoint/result"
28
+ queue_timeout_url="https://api.endpoint/queue_timeout"
29
+ iot_api_key="Yl4S3KEcr173mbeUdYdjf147IuG3rJ824ArMkP6Z"
30
+ vpn_group=""
31
+ username=""
data/CHANGELOG.md ADDED
@@ -0,0 +1,259 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [3.0.0] - 2026-05-25
9
+
10
+ ### Changed
11
+
12
+ - **Breaking:** Unified public API on `.call` (and `.register` for URL registration endpoints).
13
+ - **Breaking:** Replaced string-key option hashes with keyword arguments (`key:`, `secret:`, `business_short_code:`, etc.).
14
+ - **Breaking:** `MpesaStk::PushPayment` removed; use `MpesaStk::Push.call(amount, phone, type: :pay_bill | :buy_goods)`. PayBill is the default.
15
+ - **Breaking:** IoT entry points: use `IoT.list_sims`, `IoT.send_message`, or `IoT.call(:method_name, ...)`. Removed `IoT.sims` / `IoT.messaging` factories.
16
+ - Added `MpesaStk::Client` base class and `MpesaStk::Config` for shared HTTP, OAuth, and configuration.
17
+ - Added `MpesaStk.configure` block and `MPESA_STK_SKIP_DOTENV` to control Dotenv loading.
18
+
19
+ ### Added
20
+
21
+ - `MIGRATION.md` with a full 2.x → 3.0 upgrade guide.
22
+
23
+ ## [2.0.0] - 2025-01-XX
24
+
25
+ ### Added
26
+
27
+ #### New API Endpoints
28
+
29
+ - **Transaction Status Query** (`MpesaStk::TransactionStatus`)
30
+ - Query the status of any M-Pesa transaction
31
+ - Supports querying by transaction ID
32
+ - Full error handling and response parsing
33
+
34
+ - **STK Push Query** (`MpesaStk::StkPushQuery`)
35
+ - Query the status of STK Push transactions
36
+ - Check payment request status using CheckoutRequestID
37
+
38
+ - **Business to Customer (B2C)** (`MpesaStk::B2C`)
39
+ - Send money from business to customer
40
+ - Supports salary payments, promotions, and other B2C transactions
41
+ - Configurable command IDs and remarks
42
+
43
+ - **Business to Business (B2B)** (`MpesaStk::B2B`)
44
+ - Send money from business to business
45
+ - Supports PayBill to PayBill and PayBill to Buy Goods transactions
46
+ - Full support for sender and receiver account references
47
+
48
+ - **Customer to Business (C2B)** (`MpesaStk::C2B`)
49
+ - Register C2B validation and confirmation URLs
50
+ - Simulate C2B payments for testing
51
+ - Complete C2B payment flow support
52
+
53
+ - **Account Balance Query** (`MpesaStk::AccountBalance`)
54
+ - Query account balance for PayBill or Till Number
55
+ - Supports both Initiator and PartyA queries
56
+
57
+ - **Transaction Reversal** (`MpesaStk::Reversal`)
58
+ - Reverse M-Pesa transactions
59
+ - Supports full and partial reversals
60
+ - Configurable timeout and result URLs
61
+
62
+ - **M-Pesa Ratiba (Standing Orders)** (`MpesaStk::Ratiba`)
63
+ - Create recurring payment standing orders
64
+ - Schedule automatic payments
65
+ - Manage subscription-based payments
66
+
67
+ - **IoT SIM Management & Messaging** (`MpesaStk::IoT`)
68
+ - **SIM Operations:**
69
+ - Get all SIMs with pagination
70
+ - Query lifecycle status
71
+ - Query customer information
72
+ - SIM activation
73
+ - Get activation trends
74
+ - Rename assets
75
+ - Get location information
76
+ - Suspend/unsuspend subscriptions
77
+ - **Messaging Operations:**
78
+ - Get all messages with pagination
79
+ - Search messages
80
+ - Filter messages by date/status
81
+ - Send single messages to IoT devices
82
+ - Delete messages and message threads
83
+
84
+ - **IMSI/SWAP Operations** (`MpesaStk::IMSI`)
85
+ - Check ATI (Access Transaction Information)
86
+ - Query IMSI and SIM swap information
87
+ - Supports both v1 and v2 API versions
88
+ - Useful for fraud prevention and SIM verification
89
+
90
+ - **Pull Transactions** (`MpesaStk::PullTransactions`)
91
+ - Register pull transaction callback URLs
92
+ - Query historical transactions
93
+ - Retrieve transaction data for reconciliation
94
+
95
+ #### Testing Infrastructure
96
+
97
+ - Comprehensive test suite with 148 tests covering all features
98
+ - Test files for all new API endpoints:
99
+ - `test/transaction_status_test.rb`
100
+ - `test/stk_push_query_test.rb`
101
+ - `test/b2c_test.rb`
102
+ - `test/b2b_test.rb`
103
+ - `test/c2b_test.rb`
104
+ - `test/account_balance_test.rb`
105
+ - `test/reversal_test.rb`
106
+ - `test/ratiba_test.rb`
107
+ - `test/iot_test.rb`
108
+ - `test/imsi_test.rb`
109
+ - `test/pull_transactions_test.rb`
110
+ - Enhanced `MockRedis` class for isolated testing without external Redis dependency
111
+ - Improved test helper with comprehensive environment variable setup
112
+ - All tests use WebMock for HTTP request stubbing
113
+
114
+ #### Documentation
115
+
116
+ - Comprehensive README.md update with:
117
+ - Detailed API reference for all endpoints
118
+ - Usage examples using both ENV variables and hash parameters
119
+ - Descriptions for each API endpoint explaining their purpose
120
+ - Consolidated response format and error handling sections
121
+ - Quick start examples
122
+ - Complete configuration guide
123
+ - Updated `.sample.env` with all new environment variables
124
+ - Clear documentation of required vs optional parameters
125
+
126
+ #### Configuration
127
+
128
+ - Added support for hash-based parameter passing for all APIs
129
+ - Enhanced ENV variable support for all new endpoints
130
+ - Improved error messages for missing configuration
131
+ - Standardized configuration access across all classes
132
+
133
+ ### Changed
134
+
135
+ #### Dependencies
136
+
137
+ - Added explicit `base64` dependency (>= 0.1.0) for Ruby 3.4+ compatibility
138
+ - Added explicit `csv` dependency (>= 3.0.0) for Ruby 3.4+ compatibility
139
+ - Updated `minitest` to ~> 5.20 for Ruby 3.3+ compatibility
140
+ - Updated `pry` to ~> 0.12 for compatibility
141
+ - Updated `pry-nav` to ~> 0.3 for compatibility
142
+ - Updated `httparty` constraint to < 0.22.0
143
+ - All dependencies now compatible with Ruby 3.3+
144
+
145
+ #### Code Quality
146
+
147
+ - Improved error handling across all API classes
148
+ - Standardized error messages and exception types
149
+ - Enhanced HTTP response validation
150
+ - Better handling of missing configuration
151
+ - Improved code consistency across all classes
152
+ - Added `frozen_string_literal: true` to gemspec
153
+
154
+ #### Test Infrastructure
155
+
156
+ - Fixed circular require warnings in Ruby 3.3+
157
+ - Improved test isolation with better MockRedis implementation
158
+ - Enhanced test helper with proper warning suppression
159
+ - Better test organization and structure
160
+
161
+ #### CI/CD
162
+
163
+ - Updated GitHub Actions workflow:
164
+ - Updated `actions/checkout` to v4
165
+ - Updated Ruby setup action to `ruby/setup-ruby@v1`
166
+ - Updated Ruby version to 3.1
167
+ - Added `bundler-cache: true` for faster builds
168
+ - Added `pull_request` trigger
169
+
170
+ ### Fixed
171
+
172
+ - Fixed Ruby 3.4+ compatibility warnings for `base64` and `csv` gems
173
+ - Fixed circular require warnings in test suite (Ruby 3.3+)
174
+ - Fixed `MockRedis` shared storage issue in tests
175
+ - Fixed assertion method names in tests (`assert_not_equal` → `refute_equal`)
176
+ - Fixed syntax error in `MpesaStk::IMSI` class
177
+ - Improved error handling for Redis connection failures
178
+ - Fixed generic exception handling (changed to `ArgumentError` where appropriate)
179
+
180
+ ### Improved
181
+
182
+ - Better separation of concerns across API classes
183
+ - More consistent API design patterns
184
+ - Enhanced documentation and examples
185
+ - Improved code maintainability
186
+ - Better error messages for debugging
187
+
188
+ ## [1.3.0] - Previous Version
189
+
190
+ ### Features
191
+
192
+ - STK Push payment initiation
193
+ - Access token management with Redis caching
194
+ - Support for multiple applications with custom credentials
195
+ - Basic error handling and response parsing
196
+
197
+ ---
198
+
199
+ ## Version History
200
+
201
+ - **2.0.0** - Major release with comprehensive API coverage, full test suite, and Ruby 3.3+ compatibility
202
+ - **1.3.0** - Initial stable release with STK Push functionality
203
+
204
+ ---
205
+
206
+ ## Migration Guide
207
+
208
+ ### Upgrading from 1.3.x to 2.0.0
209
+
210
+ 1. **Update Dependencies:**
211
+ ```bash
212
+ bundle update mpesa_stk
213
+ ```
214
+
215
+ 2. **New Environment Variables:**
216
+ Add the following to your `.env` file (see `.sample.env` for complete list):
217
+ - `transaction_status_url`
218
+ - `stk_push_query_url`
219
+ - `b2c_url`, `b2b_url`
220
+ - `c2b_register_url`, `c2b_simulate_url`
221
+ - `account_balance_url`
222
+ - `reversal_url`
223
+ - `ratiba_url`
224
+ - `iot_base_url`, `iot_api_key`, `vpn_group`, `username`
225
+ - `imsi_v1_url`, `imsi_v2_url`
226
+ - `pull_transactions_register_url`, `pull_transactions_query_url`
227
+ - `initiator`, `initiator_name`, `security_credential`
228
+ - `result_url`, `queue_timeout_url`, `confirmation_url`
229
+
230
+ 3. **Ruby Version:**
231
+ Ensure you're using Ruby 2.6.0 or higher (Ruby 3.3+ recommended)
232
+
233
+ 4. **Redis:**
234
+ Redis 4.0+ is now required
235
+
236
+ 5. **API Changes:**
237
+ - All existing STK Push APIs remain backward compatible
238
+ - New APIs follow consistent patterns with both ENV and hash parameter support
239
+ - Error handling has been improved but maintains backward compatibility
240
+
241
+ ### Breaking Changes
242
+
243
+ None - This release maintains full backward compatibility with version 1.3.x.
244
+
245
+ ---
246
+
247
+ ## Contributors
248
+
249
+ - mboya
250
+ - cess
251
+
252
+ ---
253
+
254
+ ## Links
255
+
256
+ - [GitHub Repository](https://github.com/mboya/mpesa_stk)
257
+ - [RubyGems](https://rubygems.org/gems/mpesa_stk)
258
+ - [Safaricom Developer Portal](https://developer.safaricom.co.ke/)
259
+
data/CODE_OF_CONDUCT.md CHANGED
File without changes
data/Gemfile CHANGED
@@ -1,6 +1,10 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ source 'https://rubygems.org'
4
+
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
6
 
5
7
  # Specify your gem's dependencies in mpesa_stk.gemspec
6
8
  gemspec
9
+
10
+ gem 'simplecov', '~> 0.22.0', group: :development
data/Gemfile.lock CHANGED
@@ -1,51 +1,97 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mpesa_stk (1.3)
5
- httparty (>= 0.15.6, < 0.19.0)
4
+ mpesa_stk (3.0.0)
5
+ base64 (>= 0.1.0)
6
+ csv (>= 3.0.0)
7
+ httparty (>= 0.15.6, < 0.25.0)
8
+ redis (>= 4.0)
6
9
  redis-namespace (~> 1.5, >= 1.5.3)
7
10
  redis-rack (~> 2.0, >= 2.0.2)
8
11
 
9
12
  GEM
10
13
  remote: https://rubygems.org/
11
14
  specs:
12
- addressable (2.7.0)
13
- public_suffix (>= 2.0.2, < 5.0)
14
- coderay (1.1.2)
15
- crack (0.4.3)
16
- safe_yaml (~> 1.0.0)
17
- dotenv (2.7.5)
18
- hashdiff (1.0.1)
19
- httparty (0.18.1)
20
- mime-types (~> 3.0)
15
+ addressable (2.9.0)
16
+ public_suffix (>= 2.0.2, < 8.0)
17
+ ast (2.4.3)
18
+ base64 (0.3.0)
19
+ bigdecimal (4.1.2)
20
+ coderay (1.1.3)
21
+ connection_pool (3.0.2)
22
+ crack (1.0.1)
23
+ bigdecimal
24
+ rexml
25
+ csv (3.3.5)
26
+ docile (1.4.1)
27
+ dotenv (3.2.0)
28
+ hashdiff (1.2.1)
29
+ httparty (0.24.2)
30
+ csv
31
+ mini_mime (>= 1.0.0)
21
32
  multi_xml (>= 0.5.2)
22
- method_source (0.8.2)
23
- mime-types (3.3.1)
24
- mime-types-data (~> 3.2015)
25
- mime-types-data (3.2020.0512)
26
- minitest (5.14.0)
27
- multi_xml (0.6.0)
28
- pry (0.10.4)
29
- coderay (~> 1.1.0)
30
- method_source (~> 0.8.1)
31
- slop (~> 3.4)
32
- pry-nav (0.2.4)
33
- pry (>= 0.9.10, < 0.11.0)
34
- public_suffix (4.0.4)
35
- rack (2.2.2)
36
- rake (13.0.1)
37
- redis (4.2.1)
38
- redis-namespace (1.7.0)
39
- redis (>= 3.0.4)
40
- redis-rack (2.1.2)
33
+ json (2.19.5)
34
+ language_server-protocol (3.17.0.5)
35
+ lint_roller (1.1.0)
36
+ method_source (1.1.0)
37
+ mini_mime (1.1.5)
38
+ minitest (5.27.0)
39
+ multi_xml (0.9.1)
40
+ bigdecimal (>= 3.1, < 5)
41
+ parallel (1.28.0)
42
+ parser (3.3.11.1)
43
+ ast (~> 2.4.1)
44
+ racc
45
+ prism (1.9.0)
46
+ pry (0.14.2)
47
+ coderay (~> 1.1)
48
+ method_source (~> 1.0)
49
+ pry-nav (1.0.0)
50
+ pry (>= 0.9.10, < 0.15)
51
+ public_suffix (7.0.5)
52
+ racc (1.8.1)
53
+ rack (2.2.23)
54
+ rainbow (3.1.1)
55
+ rake (13.4.2)
56
+ redis (5.4.1)
57
+ redis-client (>= 0.22.0)
58
+ redis-client (0.29.0)
59
+ connection_pool
60
+ redis-namespace (1.11.0)
61
+ redis (>= 4)
62
+ redis-rack (2.1.4)
41
63
  rack (>= 2.0.8, < 3)
42
64
  redis-store (>= 1.2, < 2)
43
- redis-store (1.8.2)
44
- redis (>= 4, < 5)
45
- safe_yaml (1.0.5)
46
- slop (3.6.0)
47
- webmock (3.8.3)
48
- addressable (>= 2.3.6)
65
+ redis-store (1.11.0)
66
+ redis (>= 4, < 6)
67
+ regexp_parser (2.12.0)
68
+ rexml (3.4.4)
69
+ rubocop (1.86.2)
70
+ json (~> 2.3)
71
+ language_server-protocol (~> 3.17.0.2)
72
+ lint_roller (~> 1.1.0)
73
+ parallel (>= 1.10)
74
+ parser (>= 3.3.0.2)
75
+ rainbow (>= 2.2.2, < 4.0)
76
+ regexp_parser (>= 2.9.3, < 3.0)
77
+ rubocop-ast (>= 1.49.0, < 2.0)
78
+ ruby-progressbar (~> 1.7)
79
+ unicode-display_width (>= 2.4.0, < 4.0)
80
+ rubocop-ast (1.49.1)
81
+ parser (>= 3.3.7.2)
82
+ prism (~> 1.7)
83
+ ruby-progressbar (1.13.0)
84
+ simplecov (0.22.0)
85
+ docile (~> 1.1)
86
+ simplecov-html (~> 0.11)
87
+ simplecov_json_formatter (~> 0.1)
88
+ simplecov-html (0.13.2)
89
+ simplecov_json_formatter (0.1.4)
90
+ unicode-display_width (3.2.0)
91
+ unicode-emoji (~> 4.1)
92
+ unicode-emoji (4.2.0)
93
+ webmock (3.26.2)
94
+ addressable (>= 2.8.0)
49
95
  crack (>= 0.3.2)
50
96
  hashdiff (>= 0.4.0, < 2.0.0)
51
97
 
@@ -53,14 +99,16 @@ PLATFORMS
53
99
  ruby
54
100
 
55
101
  DEPENDENCIES
56
- bundler
57
- dotenv (= 2.7.5)
58
- minitest (~> 5.0)
102
+ bundler (~> 2.0)
103
+ dotenv (~> 3.0)
104
+ minitest (~> 5.20)
59
105
  mpesa_stk!
60
- pry (~> 0.10.4)
61
- pry-nav (~> 0.2.4)
106
+ pry (~> 0.14)
107
+ pry-nav (~> 1.0)
62
108
  rake (>= 12.3.3)
63
- webmock (~> 3.0, >= 3.0.1)
109
+ rubocop (~> 1.0)
110
+ simplecov (~> 0.22.0, ~> 0.22)
111
+ webmock (~> 3.18)
64
112
 
65
113
  BUNDLED WITH
66
- 2.1.4
114
+ 2.7.2
data/LICENSE.txt CHANGED
File without changes