tyler_efm_client 1.0.0.pre.alpha.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 88d92317b5acb03095243792d00d37678bc9c661806f3a6855440df15c82edca
4
+ data.tar.gz: 25f07c97e2454d9277c61022951c59d45801f8831eae32493d497bf10bc2e2ef
5
+ SHA512:
6
+ metadata.gz: e1b14745936b70901fbec4e485b820818a60d6e7abce4fda9fad13d41896744a814df67b7865cf40e260bcb2468e29b31d9772269f45808f18f52bc75614d4a6
7
+ data.tar.gz: e78fde612b7b9a5a83f9bc3a54779e6904bda9a792d85de51df54705e56467ac11ca4aa77889dc6f41e2b14b1fc71c823730d8d657604217c979601a539635ce
data/CHANGELOG.md ADDED
@@ -0,0 +1,34 @@
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
+ ## [1.0.0] - 2025-06-27
9
+
10
+ ### Added
11
+ - Initial release of Tyler EFM Client Ruby SDK
12
+ - Authentication method for Tyler EFM User Service
13
+ - Flexible SOAP service call method for any Tyler EFM operation
14
+ - WS-Security digital signatures (RSA-SHA1/SHA1 for Tyler compatibility)
15
+ - Automatic PFX certificate handling
16
+ - Support for both User Service and Court Record Service operations
17
+ - Critical UserNameHeader implementation for Court Record Service
18
+ - XML to JSON response conversion option
19
+ - Comprehensive error handling with specific exception types
20
+ - Complete example usage scripts
21
+ - Production-ready code based on working Tyler ECF 5.0 integration
22
+
23
+ ### Security
24
+ - Implements Tyler's exact security requirements:
25
+ - RSA-SHA1/SHA1 digital signatures (Tyler legacy requirement)
26
+ - Mutual TLS authentication using PFX certificates
27
+ - Proper WS-Security header structure
28
+ - UserNameHeader without namespace prefix (critical Tyler requirement)
29
+
30
+ ### Documentation
31
+ - Complete API documentation
32
+ - Usage examples for common scenarios
33
+ - Architecture notes explaining Tyler ECF 5.0 requirements
34
+ - Security feature documentation
data/GITHUB_SETUP.md ADDED
@@ -0,0 +1,221 @@
1
+ # GitHub Repository Setup Guide - Ruby Gem
2
+
3
+ This guide will help you set up the Ruby gem GitHub repository and configure it for automated publishing to RubyGems.
4
+
5
+ ## Repository Information
6
+
7
+ - **Repository**: `tyler-technologies/cj-esol-efm-client-ruby`
8
+ - **Purpose**: Ruby SDK for Tyler EFM integration
9
+ - **Gem Name**: `tyler_efm_client`
10
+ - **Version**: 1.0.0
11
+
12
+ ## Required Secrets Configuration
13
+
14
+ Add this secret in GitHub Settings → Secrets and variables → Actions:
15
+
16
+ ### RUBYGEMS_API_KEY
17
+ - **Get from**: https://rubygems.org/profile/edit
18
+ - **Generate**: API key with push permissions
19
+ - **Format**: `rubygems_abcdef123456...`
20
+
21
+ ## Publishing Workflow
22
+
23
+ ### Automated Publishing (Recommended)
24
+
25
+ The repository is configured for automated publishing:
26
+
27
+ 1. **Create a Release Tag**:
28
+ ```bash
29
+ git tag v1.0.0
30
+ git push origin v1.0.0
31
+ ```
32
+
33
+ 2. **GitHub Actions Will**:
34
+ - Run tests across Ruby versions (2.7, 3.0, 3.1, 3.2, 3.3)
35
+ - Run RuboCop linting
36
+ - Build the gem
37
+ - Publish to RubyGems automatically
38
+
39
+ ### Manual Triggering
40
+
41
+ You can also trigger publishing manually:
42
+ 1. Go to Actions tab in GitHub
43
+ 2. Select "Build and Publish Ruby Gem" workflow
44
+ 3. Click "Run workflow"
45
+
46
+ ## Repository Structure
47
+
48
+ ```
49
+ tyler_efm_client/
50
+ ├── .github/
51
+ │ └── workflows/
52
+ │ └── publish.yml # GitHub Actions workflow
53
+ ├── lib/
54
+ │ ├── tyler_efm_client.rb # Main entry point
55
+ │ └── tyler_efm_client/
56
+ │ ├── client.rb # Main client class
57
+ │ ├── errors.rb # Exception classes
58
+ │ ├── result_types.rb # Result classes
59
+ │ └── version.rb # Version constant
60
+ ├── examples/
61
+ │ ├── authentication_example.rb # Authentication demo
62
+ │ ├── getcaselist_example.rb # GetCaseList demo
63
+ │ └── complete_workflow_example.rb # Full workflow demo
64
+ ├── .gitignore # Git ignore rules
65
+ ├── tyler_efm_client.gemspec # Gem specification
66
+ ├── Gemfile # Bundle dependencies
67
+ ├── Rakefile # Build tasks
68
+ ├── README.md # Complete documentation
69
+ ├── LICENSE # MIT license
70
+ ├── CHANGELOG.md # Version history
71
+ ├── test_gem.rb # Gem functionality tests
72
+ ├── build_gem.rb # Local build script
73
+ ├── publish_gem.rb # Local publish script
74
+ └── PUBLICATION_GUIDE.md # Manual publishing guide
75
+ ```
76
+
77
+ ## First Commit Commands
78
+
79
+ ```bash
80
+ # In tyler_efm_client_ruby directory
81
+ git init
82
+ git add .
83
+ git commit -m "Initial commit: Tyler EFM Client Ruby SDK v1.0.0
84
+
85
+ 🚀 Features:
86
+ - Complete authenticate and call_service methods
87
+ - WS-Security digital signatures (RSA-SHA1/SHA1)
88
+ - Automatic PFX certificate handling
89
+ - JSON/XML response support
90
+ - Production-ready from working Tyler ECF 5.0 integration
91
+
92
+ 📦 Package Details:
93
+ - Ruby 2.7+ compatibility
94
+ - Nokogiri dependency for XML processing
95
+ - Complete examples and documentation
96
+ - GitHub Actions for automated publishing
97
+
98
+ 🔒 Security:
99
+ - Tyler's exact ECF 5.0 requirements
100
+ - UserNameHeader implementation for Court Record Service
101
+ - Legacy algorithm support for Tyler compatibility
102
+
103
+ 💎 Generated with [Claude Code](https://claude.ai/code)
104
+
105
+ Co-Authored-By: Claude <noreply@anthropic.com>"
106
+
107
+ git remote add origin https://github.com/tyler-technologies/cj-esol-efm-client-ruby.git
108
+ git branch -M main
109
+ git push -u origin main
110
+
111
+ # Create first release tag
112
+ git tag v1.0.0
113
+ git push origin v1.0.0
114
+ ```
115
+
116
+ ## Environment Setup (Optional but Recommended)
117
+
118
+ For additional security, create a "release" environment:
119
+
120
+ 1. Go to Settings → Environments
121
+ 2. Create new environment named "release"
122
+ 3. Add protection rules:
123
+ - Required reviewers
124
+ - Restrict to protected branches
125
+ - Environment secrets for production tokens
126
+
127
+ ## Verification Steps
128
+
129
+ After pushing and tagging:
130
+
131
+ 1. **Check GitHub Actions**:
132
+ - Go to Actions tab
133
+ - Verify "Build and Publish Ruby Gem" workflow runs successfully
134
+ - Check build and test results across Ruby versions
135
+
136
+ 2. **Verify Gem Publishing**:
137
+ - Check https://rubygems.org/gems/tyler_efm_client
138
+ - Verify gem information and documentation
139
+
140
+ 3. **Test Installation**:
141
+ ```bash
142
+ gem install tyler_efm_client
143
+
144
+ # Test in Ruby console
145
+ irb
146
+ require 'tyler_efm_client'
147
+ client = TylerEfmClient::Client.new
148
+ # Should work without errors
149
+ ```
150
+
151
+ ## Branch Protection (Recommended)
152
+
153
+ Set up branch protection for main branch:
154
+ 1. Settings → Branches → Add rule
155
+ 2. Branch name pattern: `main`
156
+ 3. Enable:
157
+ - Require pull request reviews
158
+ - Require status checks to pass
159
+ - Include administrators
160
+
161
+ ## Local Development Commands
162
+
163
+ For local development and testing:
164
+
165
+ ```bash
166
+ # Install dependencies
167
+ bundle install
168
+
169
+ # Run tests
170
+ ruby test_gem.rb
171
+
172
+ # Build gem locally
173
+ ruby build_gem.rb
174
+
175
+ # Publish manually (if needed)
176
+ ruby publish_gem.rb
177
+ ```
178
+
179
+ ## Version Management
180
+
181
+ To release a new version:
182
+
183
+ 1. Update version in `lib/tyler_efm_client/version.rb`
184
+ 2. Update `CHANGELOG.md` with new changes
185
+ 3. Commit changes
186
+ 4. Create and push new tag:
187
+ ```bash
188
+ git tag v1.1.0
189
+ git push origin v1.1.0
190
+ ```
191
+
192
+ ## Troubleshooting
193
+
194
+ ### Common Issues:
195
+
196
+ 1. **RUBYGEMS_API_KEY not found**:
197
+ - Verify secret name matches exactly
198
+ - Check secret is set in repository settings
199
+
200
+ 2. **Permission denied on RubyGems**:
201
+ - Check API key has push permissions
202
+ - Verify gem name is available on RubyGems.org
203
+
204
+ 3. **Build failures**:
205
+ - Review logs in Actions tab
206
+ - Check Ruby version compatibility
207
+ - Verify all dependencies are correct
208
+
209
+ 4. **Gem already exists**:
210
+ - RubyGems.org doesn't allow overwriting versions
211
+ - Increment version number for new releases
212
+
213
+ ### Getting Help:
214
+
215
+ - RubyGems guides: https://guides.rubygems.org/publishing/
216
+ - GitHub Actions docs: https://docs.github.com/en/actions
217
+ - Bundler documentation: https://bundler.io/
218
+
219
+ ---
220
+
221
+ **Ready to publish your Ruby gem!** 💎
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in tyler_efm_client.gemspec
6
+ gemspec
7
+
8
+ gem 'rake', '~> 13.0'
9
+ gem 'rspec', '~> 3.0'
10
+ gem 'yard', '~> 0.9'
11
+ gem 'rubocop', '~> 1.21'
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Tyler Technologies, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,146 @@
1
+ # Tyler EFM Client - Ruby Gem Publication Guide
2
+
3
+ This guide will help you publish the Tyler EFM Client Ruby gem to RubyGems.org.
4
+
5
+ ## Prerequisites
6
+
7
+ 1. **RubyGems.org Account**: Create account at https://rubygems.org/sign_up
8
+ 2. **Email Verification**: Verify your email address
9
+ 3. **API Access**: Set up API key for gem publishing
10
+
11
+ ## Publication Steps
12
+
13
+ ### 1. Set Up RubyGems.org Credentials
14
+
15
+ After creating your account, set up API access:
16
+
17
+ ```bash
18
+ gem signin
19
+ ```
20
+
21
+ This will prompt for your RubyGems.org credentials and create an API key.
22
+
23
+ ### 2. Run Publication Script
24
+
25
+ The automated publication script handles all steps:
26
+
27
+ ```bash
28
+ ./publish_gem.rb
29
+ ```
30
+
31
+ **What the script does:**
32
+ - ✅ Cleans previous build artifacts
33
+ - ✅ Runs pre-publication checks
34
+ - ✅ Installs dependencies with `bundle install`
35
+ - ✅ Builds the gem with `gem build`
36
+ - ✅ Verifies gem structure and metadata
37
+ - ✅ Runs final tests to ensure quality
38
+ - ✅ Prompts for confirmation before publishing
39
+ - ✅ Publishes to RubyGems.org with `gem push`
40
+
41
+ ### 3. Manual Publication (Alternative)
42
+
43
+ If you prefer manual steps:
44
+
45
+ ```bash
46
+ # Clean and build
47
+ rm -f *.gem Gemfile.lock
48
+ bundle install
49
+ gem build tyler_efm_client.gemspec
50
+
51
+ # Verify
52
+ gem specification tyler_efm_client-1.0.0.gem
53
+ ruby test_gem.rb
54
+
55
+ # Publish
56
+ gem push tyler_efm_client-1.0.0.gem
57
+ ```
58
+
59
+ ## Verification
60
+
61
+ After publication, verify your gem:
62
+
63
+ 1. **Visit gem page**: https://rubygems.org/gems/tyler_efm_client
64
+ 2. **Test installation**: `gem install tyler_efm_client`
65
+ 3. **Test functionality**: Run examples to ensure everything works
66
+
67
+ ## Gem Information
68
+
69
+ - **Name**: `tyler_efm_client`
70
+ - **Version**: `1.0.0`
71
+ - **Description**: Ruby SDK for Tyler Technologies Electronic Filing Manager (EFM) Services
72
+ - **License**: MIT
73
+ - **Ruby Version**: >= 2.7.0
74
+
75
+ ## Package Contents
76
+
77
+ The published gem includes:
78
+
79
+ ```
80
+ 📦 tyler_efm_client-1.0.0.gem
81
+ ├── lib/
82
+ │ ├── tyler_efm_client.rb # Main entry point
83
+ │ └── tyler_efm_client/
84
+ │ ├── client.rb # Main client class
85
+ │ ├── errors.rb # Exception classes
86
+ │ ├── result_types.rb # Result classes
87
+ │ └── version.rb # Version constant
88
+ ├── examples/
89
+ │ ├── authentication_example.rb # Authentication demo
90
+ │ ├── getcaselist_example.rb # GetCaseList demo
91
+ │ └── complete_workflow_example.rb # Full workflow demo
92
+ ├── README.md # Complete documentation
93
+ ├── LICENSE # MIT license
94
+ ├── CHANGELOG.md # Version history
95
+ └── tyler_efm_client.gemspec # Gem specification
96
+ ```
97
+
98
+ ## Post-Publication
99
+
100
+ After successful publication:
101
+
102
+ 1. **Update Documentation**: Update any references to point to the published gem
103
+ 2. **Announce**: Notify team members and stakeholders
104
+ 3. **Monitor**: Watch for issues or feedback from users
105
+ 4. **Maintain**: Plan for future versions and updates
106
+
107
+ ## Troubleshooting
108
+
109
+ ### Common Issues
110
+
111
+ **Authentication Error**:
112
+ ```
113
+ ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
114
+ ```
115
+ **Solution**: Run `gem signin` to authenticate with RubyGems.org
116
+
117
+ **Version Conflict**:
118
+ ```
119
+ ERROR: There was a problem saving the gem: Name has already been taken
120
+ ```
121
+ **Solution**: The gem name exists. Contact RubyGems.org support if you own the name.
122
+
123
+ **Build Errors**:
124
+ ```
125
+ ERROR: While executing gem ... (NoMethodError)
126
+ ```
127
+ **Solution**: Check gemspec syntax and ensure all files exist.
128
+
129
+ ### Getting Help
130
+
131
+ - **RubyGems.org Help**: https://guides.rubygems.org/publishing/
132
+ - **Tyler Support**: Contact ECF integration team for Tyler-specific issues
133
+ - **Gem Issues**: Check gem specification and file structure
134
+
135
+ ## Success Criteria
136
+
137
+ Your gem is successfully published when:
138
+
139
+ - ✅ Gem appears on https://rubygems.org/gems/tyler_efm_client
140
+ - ✅ `gem install tyler_efm_client` works from any machine
141
+ - ✅ Examples run successfully after installation
142
+ - ✅ All tests pass on fresh installation
143
+
144
+ ---
145
+
146
+ **Ready to publish? Run `./publish_gem.rb` to get started!** 🚀