pylon-api 0.2.0 → 1.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 +4 -4
- data/CHANGELOG.md +16 -31
- data/lib/pylon/client.rb +13 -9
- data/lib/pylon/version.rb +2 -2
- metadata +22 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 417baee1f917bf76f2bebeafe9ac0e740ca238649225e26ad75092d368d542ef
|
4
|
+
data.tar.gz: '018b75c89e76821075e2c6a9a369ce2630627d82c15a441c162aa16de0d78a2e'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 658536c7d456207f7ff5eab110aa1f991b658753a603301512896ed22cb7434881c6800dad2593c39f457238fdcf252a98d2dc18a16d0d541fb9e8660a581e08
|
7
|
+
data.tar.gz: 9de4cd5667d7dfc9a7eb890e067d3d3dc756f5f31a4a2b35ef9e49aa9790dcb31f1efd8ad7b6c421a0fd76aaf2e2de8aa38c50f4da8418efb059c30fec3f5d27
|
data/CHANGELOG.md
CHANGED
@@ -1,40 +1,25 @@
|
|
1
1
|
# Changelog
|
2
|
-
All notable changes to this project will be documented in this file.
|
3
2
|
|
4
|
-
|
5
|
-
|
3
|
+
## [1.0.0] - 2024-03-21
|
4
|
+
|
5
|
+
### Changed
|
6
|
+
- Downgraded Faraday dependency from 2.12.2 to 1.10.4 for better compatibility with existing applications
|
7
|
+
- Updated Faraday multipart and retry dependencies to match Faraday 1.x compatibility
|
6
8
|
|
7
9
|
## [0.2.0] - 2024-03-21
|
8
10
|
|
9
11
|
### Added
|
10
|
-
- Added
|
12
|
+
- Added support for file uploads via multipart/form-data
|
13
|
+
- Added retry mechanism for failed requests
|
14
|
+
- Added comprehensive error handling and logging
|
11
15
|
|
12
|
-
|
16
|
+
### Changed
|
17
|
+
- Improved request/response logging
|
18
|
+
- Enhanced error messages and documentation
|
13
19
|
|
14
|
-
|
15
|
-
- Initial release of the Pylon API Ruby client
|
16
|
-
- Comprehensive client implementation with support for all major API endpoints:
|
17
|
-
- Accounts management
|
18
|
-
- Attachments handling
|
19
|
-
- Contacts management
|
20
|
-
- Custom fields
|
21
|
-
- Issues tracking
|
22
|
-
- Knowledge base articles
|
23
|
-
- Tags management
|
24
|
-
- Teams management
|
25
|
-
- Ticket forms
|
26
|
-
- User roles
|
27
|
-
- Users management
|
28
|
-
- Robust error handling with specific error classes:
|
29
|
-
- `Pylon::AuthenticationError`
|
30
|
-
- `Pylon::ResourceNotFoundError`
|
31
|
-
- `Pylon::ValidationError`
|
32
|
-
- `Pylon::ApiError`
|
33
|
-
- Pagination support for list endpoints
|
34
|
-
- Debug mode for request/response logging
|
35
|
-
- Comprehensive test suite with RSpec
|
36
|
-
- YARD documentation for all methods
|
37
|
-
- MIT License
|
20
|
+
## [0.1.0] - 2024-03-20
|
38
21
|
|
39
|
-
|
40
|
-
|
22
|
+
### Added
|
23
|
+
- Initial release
|
24
|
+
- Basic API client functionality
|
25
|
+
- Support for core API endpoints
|
data/lib/pylon/client.rb
CHANGED
@@ -306,7 +306,7 @@ module Pylon
|
|
306
306
|
@connection ||= Faraday.new(@base_url) do |f|
|
307
307
|
f.request :json
|
308
308
|
f.request :multipart
|
309
|
-
f.response :json
|
309
|
+
f.response :json, content_type: /\bjson$/
|
310
310
|
f.response :logger if @debug
|
311
311
|
f.adapter Faraday.default_adapter
|
312
312
|
f.headers["Authorization"] = "Bearer #{api_key}"
|
@@ -336,13 +336,15 @@ module Pylon
|
|
336
336
|
data = data["data"] if data.is_a?(Hash) && data.key?("data")
|
337
337
|
[data, response]
|
338
338
|
when 401
|
339
|
-
raise AuthenticationError, parse_error_message(response)
|
339
|
+
raise AuthenticationError, parse_error_message(response) || "Invalid API key"
|
340
340
|
when 404
|
341
|
-
raise ResourceNotFoundError, parse_error_message(response)
|
341
|
+
raise ResourceNotFoundError, parse_error_message(response) || "Resource not found"
|
342
342
|
when 422
|
343
|
-
raise ValidationError, parse_error_message(response)
|
343
|
+
raise ValidationError, parse_error_message(response) || "Validation error"
|
344
|
+
when 429
|
345
|
+
raise ApiError, parse_error_message(response) || "Rate limit exceeded"
|
344
346
|
else
|
345
|
-
raise ApiError.new(parse_error_message(response), response)
|
347
|
+
raise ApiError.new(parse_error_message(response) || "Internal server error", response)
|
346
348
|
end
|
347
349
|
end
|
348
350
|
|
@@ -351,10 +353,12 @@ module Pylon
|
|
351
353
|
# @param response [Faraday::Response] The API response
|
352
354
|
# @return [String] Error message
|
353
355
|
def parse_error_message(response)
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
356
|
+
return nil unless response.body.is_a?(Hash)
|
357
|
+
|
358
|
+
if response.body["errors"].is_a?(Array) && !response.body["errors"].empty?
|
359
|
+
response.body["errors"].first
|
360
|
+
elsif response.body["error"].is_a?(String)
|
361
|
+
response.body["error"]
|
358
362
|
end
|
359
363
|
end
|
360
364
|
|
data/lib/pylon/version.rb
CHANGED
metadata
CHANGED
@@ -1,43 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pylon-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Odom
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.10.4
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.10.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: faraday-multipart
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.0.4
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.0.4
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: faraday-retry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.0.3
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.3
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|