attio 0.1.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/.codecov.yml +52 -0
- data/.github/CODEOWNERS +28 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +28 -0
- data/.github/dependabot.yml +54 -0
- data/.github/pull_request_template.md +40 -0
- data/.github/workflows/ci.yml +112 -0
- data/.github/workflows/dependabot-auto-merge.yml +45 -0
- data/.github/workflows/pr_checks.yml +145 -0
- data/.github/workflows/release.yml +147 -0
- data/.gitignore +10 -0
- data/.rspec +4 -0
- data/.rubocop.yml +133 -0
- data/.yardopts +18 -0
- data/CHANGELOG.md +34 -0
- data/CODE_OF_CONDUCT.md +37 -0
- data/CONTRIBUTING.md +280 -0
- data/Gemfile +17 -0
- data/Gemfile.lock +127 -0
- data/LICENSE.txt +21 -0
- data/README.md +292 -0
- data/Rakefile +57 -0
- data/SECURITY.md +59 -0
- data/attio.gemspec +34 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/danger/Dangerfile +121 -0
- data/docs/.nojekyll +0 -0
- data/docs/Attio/AuthenticationError.html +152 -0
- data/docs/Attio/Client.html +1373 -0
- data/docs/Attio/ConnectionPool/TimeoutError.html +148 -0
- data/docs/Attio/ConnectionPool.html +944 -0
- data/docs/Attio/Error.html +152 -0
- data/docs/Attio/HttpClient/ConnectionError.html +152 -0
- data/docs/Attio/HttpClient/TimeoutError.html +152 -0
- data/docs/Attio/HttpClient.html +1329 -0
- data/docs/Attio/Logger.html +747 -0
- data/docs/Attio/NotFoundError.html +152 -0
- data/docs/Attio/RateLimitError.html +152 -0
- data/docs/Attio/RequestLogger.html +780 -0
- data/docs/Attio/Resources/Attributes.html +508 -0
- data/docs/Attio/Resources/Base.html +624 -0
- data/docs/Attio/Resources/Lists.html +1002 -0
- data/docs/Attio/Resources/Objects.html +415 -0
- data/docs/Attio/Resources/Records.html +1465 -0
- data/docs/Attio/Resources/Users.html +415 -0
- data/docs/Attio/Resources/Workspaces.html +324 -0
- data/docs/Attio/Resources.html +141 -0
- data/docs/Attio/RetryHandler.html +1023 -0
- data/docs/Attio/ServerError.html +152 -0
- data/docs/Attio/ValidationError.html +152 -0
- data/docs/Attio.html +397 -0
- data/docs/SETUP.md +117 -0
- data/docs/_index.html +378 -0
- data/docs/class_list.html +54 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +503 -0
- data/docs/example.rb +119 -0
- data/docs/file.CHANGELOG.html +124 -0
- data/docs/file.README.html +371 -0
- data/docs/file_list.html +64 -0
- data/docs/frames.html +22 -0
- data/docs/index.html +371 -0
- data/docs/js/app.js +344 -0
- data/docs/js/full_list.js +242 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +750 -0
- data/docs/top-level-namespace.html +110 -0
- data/lib/attio/client.rb +118 -0
- data/lib/attio/connection_pool.rb +69 -0
- data/lib/attio/errors.rb +9 -0
- data/lib/attio/http_client.rb +100 -0
- data/lib/attio/logger.rb +110 -0
- data/lib/attio/resources/attributes.rb +26 -0
- data/lib/attio/resources/base.rb +55 -0
- data/lib/attio/resources/lists.rb +56 -0
- data/lib/attio/resources/objects.rb +20 -0
- data/lib/attio/resources/records.rb +158 -0
- data/lib/attio/resources/users.rb +20 -0
- data/lib/attio/resources/workspaces.rb +13 -0
- data/lib/attio/retry_handler.rb +70 -0
- data/lib/attio/version.rb +3 -0
- data/lib/attio.rb +60 -0
- data/run_tests.rb +52 -0
- data/test_basic.rb +51 -0
- data/test_typhoeus.rb +31 -0
- metadata +160 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
require:
|
2
|
+
- rubocop-rspec
|
3
|
+
|
4
|
+
AllCops:
|
5
|
+
TargetRubyVersion: 3.0
|
6
|
+
NewCops: enable
|
7
|
+
Exclude:
|
8
|
+
- 'vendor/**/*'
|
9
|
+
- 'bin/**/*'
|
10
|
+
- 'coverage/**/*'
|
11
|
+
- 'docs/**/*'
|
12
|
+
- 'tmp/**/*'
|
13
|
+
- '*.gemspec'
|
14
|
+
- 'Gemfile'
|
15
|
+
- 'Rakefile'
|
16
|
+
|
17
|
+
# Layout and formatting
|
18
|
+
Layout/LineLength:
|
19
|
+
Max: 120
|
20
|
+
AllowedPatterns: ['\A\s*#']
|
21
|
+
|
22
|
+
Layout/MultilineMethodCallIndentation:
|
23
|
+
EnforcedStyle: indented
|
24
|
+
|
25
|
+
# Metrics
|
26
|
+
Metrics/BlockLength:
|
27
|
+
Exclude:
|
28
|
+
- 'spec/**/*'
|
29
|
+
- 'Rakefile'
|
30
|
+
|
31
|
+
Metrics/MethodLength:
|
32
|
+
Max: 20
|
33
|
+
CountAsOne: ['array', 'hash', 'heredoc']
|
34
|
+
|
35
|
+
Metrics/ClassLength:
|
36
|
+
Max: 150
|
37
|
+
|
38
|
+
Metrics/ModuleLength:
|
39
|
+
Max: 150
|
40
|
+
|
41
|
+
Metrics/AbcSize:
|
42
|
+
Max: 20
|
43
|
+
|
44
|
+
Metrics/CyclomaticComplexity:
|
45
|
+
Max: 8
|
46
|
+
|
47
|
+
Metrics/PerceivedComplexity:
|
48
|
+
Max: 8
|
49
|
+
|
50
|
+
# Style
|
51
|
+
Style/Documentation:
|
52
|
+
Enabled: false
|
53
|
+
|
54
|
+
Style/StringLiterals:
|
55
|
+
EnforcedStyle: double_quotes
|
56
|
+
|
57
|
+
Style/StringLiteralsInInterpolation:
|
58
|
+
EnforcedStyle: double_quotes
|
59
|
+
|
60
|
+
Style/FrozenStringLiteralComment:
|
61
|
+
Enabled: true
|
62
|
+
|
63
|
+
Style/TrailingCommaInArrayLiteral:
|
64
|
+
EnforcedStyleForMultiline: comma
|
65
|
+
|
66
|
+
Style/TrailingCommaInHashLiteral:
|
67
|
+
EnforcedStyleForMultiline: comma
|
68
|
+
|
69
|
+
Style/TrailingCommaInArguments:
|
70
|
+
EnforcedStyleForMultiline: no_comma
|
71
|
+
|
72
|
+
Style/ClassAndModuleChildren:
|
73
|
+
EnforcedStyle: compact
|
74
|
+
|
75
|
+
Style/EmptyMethod:
|
76
|
+
EnforcedStyle: expanded
|
77
|
+
|
78
|
+
# Naming
|
79
|
+
Naming/PredicateName:
|
80
|
+
ForbiddenPrefixes:
|
81
|
+
- is_
|
82
|
+
|
83
|
+
Naming/AccessorMethodName:
|
84
|
+
Enabled: false
|
85
|
+
|
86
|
+
# RSpec specific cops
|
87
|
+
RSpec/ExampleLength:
|
88
|
+
Max: 15
|
89
|
+
|
90
|
+
RSpec/MultipleExpectations:
|
91
|
+
Max: 5
|
92
|
+
|
93
|
+
RSpec/NestedGroups:
|
94
|
+
Max: 4
|
95
|
+
|
96
|
+
RSpec/DescribeClass:
|
97
|
+
Enabled: true
|
98
|
+
|
99
|
+
RSpec/FilePath:
|
100
|
+
Enabled: true
|
101
|
+
|
102
|
+
RSpec/ContextWording:
|
103
|
+
Prefixes:
|
104
|
+
- when
|
105
|
+
- with
|
106
|
+
- without
|
107
|
+
- if
|
108
|
+
- unless
|
109
|
+
- for
|
110
|
+
|
111
|
+
RSpec/DescribedClass:
|
112
|
+
Enabled: true
|
113
|
+
|
114
|
+
# Security
|
115
|
+
Security/Eval:
|
116
|
+
Enabled: true
|
117
|
+
|
118
|
+
Security/Open:
|
119
|
+
Enabled: true
|
120
|
+
|
121
|
+
Security/YAMLLoad:
|
122
|
+
Enabled: true
|
123
|
+
|
124
|
+
# Bundler
|
125
|
+
Bundler/OrderedGems:
|
126
|
+
Enabled: true
|
127
|
+
|
128
|
+
# Gemspec
|
129
|
+
Gemspec/OrderedDependencies:
|
130
|
+
Enabled: true
|
131
|
+
|
132
|
+
Gemspec/RequiredRubyVersion:
|
133
|
+
Enabled: true
|
data/.yardopts
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
--markup markdown
|
2
|
+
--markup-provider redcarpet
|
3
|
+
--output-dir docs
|
4
|
+
--private
|
5
|
+
--protected
|
6
|
+
--no-cache
|
7
|
+
--embed-mixins
|
8
|
+
--hide-void-return
|
9
|
+
--readme README.md
|
10
|
+
--main README.md
|
11
|
+
--title "Attio Ruby Client Documentation"
|
12
|
+
--template default
|
13
|
+
--markup-provider=redcarpet
|
14
|
+
--charset utf-8
|
15
|
+
lib/**/*.rb
|
16
|
+
-
|
17
|
+
README.md
|
18
|
+
CHANGELOG.md
|
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
|
+
## [Unreleased]
|
9
|
+
|
10
|
+
## [0.1.1] - 2025-08-11
|
11
|
+
|
12
|
+
### Changed
|
13
|
+
- Updated gem description to remove "Official" designation
|
14
|
+
|
15
|
+
## [0.1.0] - 2025-08-11 - Initial Release (yanked)
|
16
|
+
|
17
|
+
### Added
|
18
|
+
- Initial implementation of Attio Ruby client
|
19
|
+
- Support for all major Attio API endpoints:
|
20
|
+
- Records (CRUD operations, querying)
|
21
|
+
- Objects (list, get schema)
|
22
|
+
- Lists (list, get entries)
|
23
|
+
- Workspaces (list, get current)
|
24
|
+
- Attributes (list, create, update)
|
25
|
+
- Users (list, get current user)
|
26
|
+
- Comprehensive error handling
|
27
|
+
- Connection pooling and retry logic
|
28
|
+
- Full test suite with RSpec
|
29
|
+
- Code coverage reporting
|
30
|
+
|
31
|
+
### Documentation
|
32
|
+
- Complete API documentation with YARD
|
33
|
+
- Usage examples and guides
|
34
|
+
- Development setup instructions
|
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Code of Conduct
|
2
|
+
|
3
|
+
## Our Pledge
|
4
|
+
|
5
|
+
We pledge to make participation in our project a respectful and professional experience for everyone.
|
6
|
+
|
7
|
+
## Our Standards
|
8
|
+
|
9
|
+
Examples of positive behavior include:
|
10
|
+
* Using welcoming and inclusive language
|
11
|
+
* Being respectful of differing viewpoints
|
12
|
+
* Gracefully accepting constructive feedback
|
13
|
+
* Focusing on what is best for the community
|
14
|
+
* Showing empathy towards other community members
|
15
|
+
|
16
|
+
Examples of unacceptable behavior include:
|
17
|
+
* Unprofessional or unwelcome comments
|
18
|
+
* Personal attacks
|
19
|
+
* Public or private harassment
|
20
|
+
* Publishing others' private information without permission
|
21
|
+
* Other conduct which could reasonably be considered inappropriate
|
22
|
+
|
23
|
+
## Our Responsibilities
|
24
|
+
|
25
|
+
Project maintainers are responsible for clarifying standards of acceptable behavior and are expected to take appropriate corrective action in response to unacceptable behavior.
|
26
|
+
|
27
|
+
## Scope
|
28
|
+
|
29
|
+
This Code of Conduct applies within project spaces and in public spaces when representing the project.
|
30
|
+
|
31
|
+
## Enforcement
|
32
|
+
|
33
|
+
Instances of unacceptable behavior may be reported to the project team. All complaints will be reviewed and investigated promptly and fairly.
|
34
|
+
|
35
|
+
## Attribution
|
36
|
+
|
37
|
+
This Code of Conduct is adapted from the Contributor Covenant, version 2.0.
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,280 @@
|
|
1
|
+
# Contributing to Attio Ruby Client
|
2
|
+
|
3
|
+
Thank you for your interest in contributing to the Attio Ruby client! This guide will help you get started with contributing to the project.
|
4
|
+
|
5
|
+
## Table of Contents
|
6
|
+
|
7
|
+
- [Getting Started](#getting-started)
|
8
|
+
- [Development Setup](#development-setup)
|
9
|
+
- [How to Contribute](#how-to-contribute)
|
10
|
+
- [Reporting Issues](#reporting-issues)
|
11
|
+
- [Submitting Pull Requests](#submitting-pull-requests)
|
12
|
+
- [Coding Standards](#coding-standards)
|
13
|
+
- [Testing](#testing)
|
14
|
+
- [Documentation](#documentation)
|
15
|
+
- [Release Process](#release-process)
|
16
|
+
|
17
|
+
## Getting Started
|
18
|
+
|
19
|
+
1. Fork the repository on GitHub
|
20
|
+
2. Clone your fork locally:
|
21
|
+
```bash
|
22
|
+
git clone https://github.com/YOUR_USERNAME/attio-ruby.git
|
23
|
+
cd attio-ruby
|
24
|
+
```
|
25
|
+
3. Add the upstream remote:
|
26
|
+
```bash
|
27
|
+
git remote add upstream https://github.com/idl3/attio-ruby.git
|
28
|
+
```
|
29
|
+
|
30
|
+
## Development Setup
|
31
|
+
|
32
|
+
1. Install Ruby 3.0 or higher
|
33
|
+
2. Install dependencies:
|
34
|
+
```bash
|
35
|
+
bundle install
|
36
|
+
```
|
37
|
+
3. Run tests to verify setup:
|
38
|
+
```bash
|
39
|
+
bundle exec rspec
|
40
|
+
```
|
41
|
+
4. Run linting:
|
42
|
+
```bash
|
43
|
+
bundle exec rubocop
|
44
|
+
```
|
45
|
+
|
46
|
+
### Setting up API credentials for testing
|
47
|
+
|
48
|
+
Create a `.env` file in the project root:
|
49
|
+
```bash
|
50
|
+
ATTIO_API_KEY=your_test_api_key
|
51
|
+
```
|
52
|
+
|
53
|
+
## How to Contribute
|
54
|
+
|
55
|
+
### Finding Issues to Work On
|
56
|
+
|
57
|
+
- Check our [issue tracker](https://github.com/idl3/attio-ruby/issues) for open issues
|
58
|
+
- Look for issues labeled `good first issue` or `help wanted`
|
59
|
+
- Comment on an issue to let others know you're working on it
|
60
|
+
|
61
|
+
### Creating New Features
|
62
|
+
|
63
|
+
1. Open an issue to discuss the feature before starting work
|
64
|
+
2. Wait for maintainer feedback and approval
|
65
|
+
3. Follow the pull request process below
|
66
|
+
|
67
|
+
## Reporting Issues
|
68
|
+
|
69
|
+
### Bug Reports
|
70
|
+
|
71
|
+
When reporting bugs, please include:
|
72
|
+
- Ruby version (`ruby -v`)
|
73
|
+
- Gem version
|
74
|
+
- Minimal code example that reproduces the issue
|
75
|
+
- Full error messages and stack traces
|
76
|
+
- Expected vs actual behavior
|
77
|
+
|
78
|
+
Use our [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) when creating issues.
|
79
|
+
|
80
|
+
### Feature Requests
|
81
|
+
|
82
|
+
For feature requests:
|
83
|
+
- Clearly describe the problem you're trying to solve
|
84
|
+
- Provide use cases and examples
|
85
|
+
- Explain why this would benefit other users
|
86
|
+
|
87
|
+
Use our [feature request template](.github/ISSUE_TEMPLATE/feature_request.md).
|
88
|
+
|
89
|
+
## Submitting Pull Requests
|
90
|
+
|
91
|
+
### Before Submitting
|
92
|
+
|
93
|
+
1. Create a feature branch:
|
94
|
+
```bash
|
95
|
+
git checkout -b feature/your-feature-name
|
96
|
+
```
|
97
|
+
|
98
|
+
2. Make your changes following our coding standards
|
99
|
+
|
100
|
+
3. Write or update tests for your changes
|
101
|
+
|
102
|
+
4. Update documentation if needed
|
103
|
+
|
104
|
+
5. Run the test suite:
|
105
|
+
```bash
|
106
|
+
bundle exec rspec
|
107
|
+
bundle exec rubocop
|
108
|
+
```
|
109
|
+
|
110
|
+
6. Update CHANGELOG.md with your changes under "Unreleased"
|
111
|
+
|
112
|
+
### Commit Messages
|
113
|
+
|
114
|
+
We use [Conventional Commits](https://www.conventionalcommits.org/):
|
115
|
+
|
116
|
+
- `feat:` New features
|
117
|
+
- `fix:` Bug fixes
|
118
|
+
- `docs:` Documentation changes
|
119
|
+
- `style:` Code style changes (formatting, etc.)
|
120
|
+
- `refactor:` Code refactoring
|
121
|
+
- `test:` Test additions or changes
|
122
|
+
- `chore:` Maintenance tasks
|
123
|
+
- `perf:` Performance improvements
|
124
|
+
|
125
|
+
Examples:
|
126
|
+
```
|
127
|
+
feat: add batch operations support for records
|
128
|
+
fix: handle rate limit errors correctly
|
129
|
+
docs: update README with pagination examples
|
130
|
+
```
|
131
|
+
|
132
|
+
### Pull Request Process
|
133
|
+
|
134
|
+
1. Push your branch to your fork:
|
135
|
+
```bash
|
136
|
+
git push origin feature/your-feature-name
|
137
|
+
```
|
138
|
+
|
139
|
+
2. Create a pull request from your fork to the main repository
|
140
|
+
|
141
|
+
3. Fill out the PR template completely
|
142
|
+
|
143
|
+
4. Wait for automated checks to pass
|
144
|
+
|
145
|
+
5. Address any review feedback
|
146
|
+
|
147
|
+
6. Once approved, a maintainer will merge your PR
|
148
|
+
|
149
|
+
## Coding Standards
|
150
|
+
|
151
|
+
### Ruby Style Guide
|
152
|
+
|
153
|
+
We use RuboCop to enforce style guidelines. Key points:
|
154
|
+
|
155
|
+
- Use 2 spaces for indentation
|
156
|
+
- Maximum line length of 120 characters
|
157
|
+
- Use descriptive variable and method names
|
158
|
+
- Prefer symbols over strings for hash keys
|
159
|
+
- Use guard clauses to reduce nesting
|
160
|
+
|
161
|
+
### Code Organization
|
162
|
+
|
163
|
+
- Keep classes focused and single-purpose
|
164
|
+
- Extract complex logic into private methods
|
165
|
+
- Use modules for shared behavior
|
166
|
+
- Place one class per file
|
167
|
+
|
168
|
+
### Error Handling
|
169
|
+
|
170
|
+
- Create specific error classes for different error types
|
171
|
+
- Include helpful error messages
|
172
|
+
- Preserve original error context when re-raising
|
173
|
+
|
174
|
+
## Testing
|
175
|
+
|
176
|
+
### Writing Tests
|
177
|
+
|
178
|
+
- Write tests for all new functionality
|
179
|
+
- Maintain test coverage above 85%
|
180
|
+
- Use descriptive test names
|
181
|
+
- Test both success and failure cases
|
182
|
+
- Use fixtures for API response data
|
183
|
+
|
184
|
+
### Test Structure
|
185
|
+
|
186
|
+
```ruby
|
187
|
+
RSpec.describe Attio::Resources::Records do
|
188
|
+
describe '#list' do
|
189
|
+
context 'with valid parameters' do
|
190
|
+
it 'returns a list of records' do
|
191
|
+
# test implementation
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
context 'with invalid parameters' do
|
196
|
+
it 'raises an appropriate error' do
|
197
|
+
# test implementation
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
```
|
203
|
+
|
204
|
+
### Running Tests
|
205
|
+
|
206
|
+
```bash
|
207
|
+
# Run all tests
|
208
|
+
bundle exec rspec
|
209
|
+
|
210
|
+
# Run specific test file
|
211
|
+
bundle exec rspec spec/attio/resources/records_spec.rb
|
212
|
+
|
213
|
+
# Run with coverage report
|
214
|
+
COVERAGE=true bundle exec rspec
|
215
|
+
```
|
216
|
+
|
217
|
+
## Documentation
|
218
|
+
|
219
|
+
### Code Documentation
|
220
|
+
|
221
|
+
- Document all public methods with YARD
|
222
|
+
- Include parameter types and return values
|
223
|
+
- Add usage examples for complex methods
|
224
|
+
- Keep documentation up-to-date with code changes
|
225
|
+
|
226
|
+
Example:
|
227
|
+
```ruby
|
228
|
+
# Creates a new record in Attio
|
229
|
+
#
|
230
|
+
# @param object [String] The object type (e.g., 'people', 'companies')
|
231
|
+
# @param attributes [Hash] The record attributes
|
232
|
+
# @return [Hash] The created record
|
233
|
+
# @raise [Attio::InvalidRequestError] if parameters are invalid
|
234
|
+
#
|
235
|
+
# @example Create a person
|
236
|
+
# client.records.create(
|
237
|
+
# object: 'people',
|
238
|
+
# attributes: { name: 'John Doe', email: 'john@example.com' }
|
239
|
+
# )
|
240
|
+
def create(object:, attributes:)
|
241
|
+
# implementation
|
242
|
+
end
|
243
|
+
```
|
244
|
+
|
245
|
+
### README Updates
|
246
|
+
|
247
|
+
Update the README when:
|
248
|
+
- Adding new features
|
249
|
+
- Changing API interfaces
|
250
|
+
- Adding configuration options
|
251
|
+
- Updating requirements
|
252
|
+
|
253
|
+
## Release Process
|
254
|
+
|
255
|
+
Releases are managed by maintainers. The process:
|
256
|
+
|
257
|
+
1. Update version in `lib/attio/version.rb`
|
258
|
+
2. Update CHANGELOG.md with release notes
|
259
|
+
3. Create a git tag: `git tag v1.2.3`
|
260
|
+
4. Push tag to trigger release workflow: `git push origin v1.2.3`
|
261
|
+
5. GitHub Actions will automatically:
|
262
|
+
- Run tests
|
263
|
+
- Build the gem
|
264
|
+
- Publish to RubyGems
|
265
|
+
- Create GitHub release
|
266
|
+
|
267
|
+
## Getting Help
|
268
|
+
|
269
|
+
- Join our [discussions](https://github.com/idl3/attio-ruby/discussions)
|
270
|
+
- Check existing issues and PRs
|
271
|
+
- Reach out to maintainers if needed
|
272
|
+
|
273
|
+
## Recognition
|
274
|
+
|
275
|
+
Contributors will be recognized in:
|
276
|
+
- CHANGELOG.md for their contributions
|
277
|
+
- GitHub's contributor graph
|
278
|
+
- Release notes when applicable
|
279
|
+
|
280
|
+
Thank you for contributing to the Attio Ruby client!
|
data/Gemfile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
# Specify your gem's dependencies in attio.gemspec
|
4
|
+
gemspec
|
5
|
+
|
6
|
+
gem "rake", "~> 13.0"
|
7
|
+
gem "logger" # Required for Ruby 3.5.0+ compatibility
|
8
|
+
|
9
|
+
group :development, :test do
|
10
|
+
gem "rspec", "~> 3.12"
|
11
|
+
gem "webmock", "~> 3.18"
|
12
|
+
gem "simplecov", "~> 0.22"
|
13
|
+
gem "simplecov-console", "~> 0.9"
|
14
|
+
gem "rubocop", "~> 1.50"
|
15
|
+
gem "rubocop-rspec", "~> 2.19"
|
16
|
+
gem "pry", "~> 0.14"
|
17
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
attio (0.1.0)
|
5
|
+
typhoeus (~> 1.4)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
addressable (2.8.7)
|
11
|
+
public_suffix (>= 2.0.2, < 7.0)
|
12
|
+
ansi (1.5.0)
|
13
|
+
ast (2.4.3)
|
14
|
+
bigdecimal (3.2.2)
|
15
|
+
coderay (1.1.3)
|
16
|
+
crack (1.0.0)
|
17
|
+
bigdecimal
|
18
|
+
rexml
|
19
|
+
diff-lcs (1.6.2)
|
20
|
+
docile (1.4.1)
|
21
|
+
ethon (0.16.0)
|
22
|
+
ffi (>= 1.15.0)
|
23
|
+
ffi (1.17.2)
|
24
|
+
ffi (1.17.2-arm64-darwin)
|
25
|
+
hashdiff (1.2.0)
|
26
|
+
json (2.13.2)
|
27
|
+
language_server-protocol (3.17.0.5)
|
28
|
+
lint_roller (1.1.0)
|
29
|
+
logger (1.7.0)
|
30
|
+
method_source (1.1.0)
|
31
|
+
parallel (1.27.0)
|
32
|
+
parser (3.3.9.0)
|
33
|
+
ast (~> 2.4.1)
|
34
|
+
racc
|
35
|
+
prism (1.4.0)
|
36
|
+
pry (0.15.2)
|
37
|
+
coderay (~> 1.1)
|
38
|
+
method_source (~> 1.0)
|
39
|
+
public_suffix (6.0.2)
|
40
|
+
racc (1.8.1)
|
41
|
+
rainbow (3.1.1)
|
42
|
+
rake (13.3.0)
|
43
|
+
regexp_parser (2.11.1)
|
44
|
+
rexml (3.4.1)
|
45
|
+
rspec (3.13.1)
|
46
|
+
rspec-core (~> 3.13.0)
|
47
|
+
rspec-expectations (~> 3.13.0)
|
48
|
+
rspec-mocks (~> 3.13.0)
|
49
|
+
rspec-core (3.13.5)
|
50
|
+
rspec-support (~> 3.13.0)
|
51
|
+
rspec-expectations (3.13.5)
|
52
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
53
|
+
rspec-support (~> 3.13.0)
|
54
|
+
rspec-mocks (3.13.5)
|
55
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
56
|
+
rspec-support (~> 3.13.0)
|
57
|
+
rspec-support (3.13.4)
|
58
|
+
rubocop (1.79.2)
|
59
|
+
json (~> 2.3)
|
60
|
+
language_server-protocol (~> 3.17.0.2)
|
61
|
+
lint_roller (~> 1.1.0)
|
62
|
+
parallel (~> 1.10)
|
63
|
+
parser (>= 3.3.0.2)
|
64
|
+
rainbow (>= 2.2.2, < 4.0)
|
65
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
66
|
+
rubocop-ast (>= 1.46.0, < 2.0)
|
67
|
+
ruby-progressbar (~> 1.7)
|
68
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
69
|
+
rubocop-ast (1.46.0)
|
70
|
+
parser (>= 3.3.7.2)
|
71
|
+
prism (~> 1.4)
|
72
|
+
rubocop-capybara (2.22.1)
|
73
|
+
lint_roller (~> 1.1)
|
74
|
+
rubocop (~> 1.72, >= 1.72.1)
|
75
|
+
rubocop-factory_bot (2.27.1)
|
76
|
+
lint_roller (~> 1.1)
|
77
|
+
rubocop (~> 1.72, >= 1.72.1)
|
78
|
+
rubocop-rspec (2.31.0)
|
79
|
+
rubocop (~> 1.40)
|
80
|
+
rubocop-capybara (~> 2.17)
|
81
|
+
rubocop-factory_bot (~> 2.22)
|
82
|
+
rubocop-rspec_rails (~> 2.28)
|
83
|
+
rubocop-rspec_rails (2.29.1)
|
84
|
+
rubocop (~> 1.61)
|
85
|
+
ruby-progressbar (1.13.0)
|
86
|
+
simplecov (0.22.0)
|
87
|
+
docile (~> 1.1)
|
88
|
+
simplecov-html (~> 0.11)
|
89
|
+
simplecov_json_formatter (~> 0.1)
|
90
|
+
simplecov-console (0.9.4)
|
91
|
+
ansi
|
92
|
+
simplecov
|
93
|
+
terminal-table
|
94
|
+
simplecov-html (0.13.2)
|
95
|
+
simplecov_json_formatter (0.1.4)
|
96
|
+
terminal-table (4.0.0)
|
97
|
+
unicode-display_width (>= 1.1.1, < 4)
|
98
|
+
typhoeus (1.4.1)
|
99
|
+
ethon (>= 0.9.0)
|
100
|
+
unicode-display_width (3.1.4)
|
101
|
+
unicode-emoji (~> 4.0, >= 4.0.4)
|
102
|
+
unicode-emoji (4.0.4)
|
103
|
+
webmock (3.25.1)
|
104
|
+
addressable (>= 2.8.0)
|
105
|
+
crack (>= 0.3.2)
|
106
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
107
|
+
yard (0.9.37)
|
108
|
+
|
109
|
+
PLATFORMS
|
110
|
+
arm64-darwin-24
|
111
|
+
ruby
|
112
|
+
|
113
|
+
DEPENDENCIES
|
114
|
+
attio!
|
115
|
+
logger
|
116
|
+
pry (~> 0.14)
|
117
|
+
rake (~> 13.0)
|
118
|
+
rspec (~> 3.12)
|
119
|
+
rubocop (~> 1.50)
|
120
|
+
rubocop-rspec (~> 2.19)
|
121
|
+
simplecov (~> 0.22)
|
122
|
+
simplecov-console (~> 0.9)
|
123
|
+
webmock (~> 3.18)
|
124
|
+
yard (~> 0.9)
|
125
|
+
|
126
|
+
BUNDLED WITH
|
127
|
+
2.7.1
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2025 Ernest Sim
|
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
|
13
|
+
all 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
|
21
|
+
THE SOFTWARE.
|