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 +7 -0
- data/CHANGELOG.md +34 -0
- data/GITHUB_SETUP.md +221 -0
- data/Gemfile +11 -0
- data/LICENSE +21 -0
- data/PUBLICATION_GUIDE.md +146 -0
- data/README.md +298 -0
- data/Rakefile +14 -0
- data/build_gem.rb +73 -0
- data/config.example.json +15 -0
- data/docs/getting_started.md +293 -0
- data/examples/authentication_example.rb +64 -0
- data/examples/complete_workflow_example.rb +149 -0
- data/examples/getcaselist_example.rb +142 -0
- data/lib/tyler_efm_client/client.rb +627 -0
- data/lib/tyler_efm_client/errors.rb +19 -0
- data/lib/tyler_efm_client/result_types.rb +77 -0
- data/lib/tyler_efm_client/version.rb +6 -0
- data/lib/tyler_efm_client.rb +41 -0
- data/publish_gem.rb +155 -0
- data/samples/court_filing_workflow/README.md +332 -0
- data/test_gem.rb +170 -0
- metadata +164 -0
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
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!** 🚀
|