pylon-api 0.1.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 +19 -28
- data/lib/pylon/client.rb +22 -9
- data/lib/pylon/version.rb +2 -2
- metadata +23 -9
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,34 +1,25 @@
|
|
1
1
|
# Changelog
|
2
|
-
All notable changes to this project will be documented in this file.
|
3
2
|
|
4
|
-
|
5
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
3
|
+
## [1.0.0] - 2024-03-21
|
6
4
|
|
7
|
-
|
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
|
8
|
+
|
9
|
+
## [0.2.0] - 2024-03-21
|
8
10
|
|
9
11
|
### Added
|
10
|
-
-
|
11
|
-
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
- Knowledge base articles
|
18
|
-
- Tags management
|
19
|
-
- Teams management
|
20
|
-
- Ticket forms
|
21
|
-
- User roles
|
22
|
-
- Users management
|
23
|
-
- Robust error handling with specific error classes:
|
24
|
-
- `Pylon::AuthenticationError`
|
25
|
-
- `Pylon::ResourceNotFoundError`
|
26
|
-
- `Pylon::ValidationError`
|
27
|
-
- `Pylon::ApiError`
|
28
|
-
- Pagination support for list endpoints
|
29
|
-
- Debug mode for request/response logging
|
30
|
-
- Comprehensive test suite with RSpec
|
31
|
-
- YARD documentation for all methods
|
32
|
-
- MIT License
|
12
|
+
- Added support for file uploads via multipart/form-data
|
13
|
+
- Added retry mechanism for failed requests
|
14
|
+
- Added comprehensive error handling and logging
|
15
|
+
|
16
|
+
### Changed
|
17
|
+
- Improved request/response logging
|
18
|
+
- Enhanced error messages and documentation
|
33
19
|
|
34
|
-
[0.1.0]
|
20
|
+
## [0.1.0] - 2024-03-20
|
21
|
+
|
22
|
+
### Added
|
23
|
+
- Initial release
|
24
|
+
- Basic API client functionality
|
25
|
+
- Support for core API endpoints
|
data/lib/pylon/client.rb
CHANGED
@@ -154,6 +154,15 @@ module Pylon
|
|
154
154
|
patch("/issues/#{issue_id}", body: params)
|
155
155
|
end
|
156
156
|
|
157
|
+
# Snooze an issue until a specified time
|
158
|
+
#
|
159
|
+
# @param issue_id [String] The ID or number of the issue to snooze
|
160
|
+
# @param snooze_until [String] The date and time to snooze the issue until (RFC3339 format)
|
161
|
+
# @return [Hash] Updated issue details
|
162
|
+
def snooze_issue(issue_id, snooze_until:)
|
163
|
+
post("/issues/#{issue_id}/snooze", body: { snooze_until: snooze_until })
|
164
|
+
end
|
165
|
+
|
157
166
|
# List all knowledge base articles with pagination
|
158
167
|
#
|
159
168
|
# @param page [Integer] Page number for pagination
|
@@ -297,7 +306,7 @@ module Pylon
|
|
297
306
|
@connection ||= Faraday.new(@base_url) do |f|
|
298
307
|
f.request :json
|
299
308
|
f.request :multipart
|
300
|
-
f.response :json
|
309
|
+
f.response :json, content_type: /\bjson$/
|
301
310
|
f.response :logger if @debug
|
302
311
|
f.adapter Faraday.default_adapter
|
303
312
|
f.headers["Authorization"] = "Bearer #{api_key}"
|
@@ -327,13 +336,15 @@ module Pylon
|
|
327
336
|
data = data["data"] if data.is_a?(Hash) && data.key?("data")
|
328
337
|
[data, response]
|
329
338
|
when 401
|
330
|
-
raise AuthenticationError, parse_error_message(response)
|
339
|
+
raise AuthenticationError, parse_error_message(response) || "Invalid API key"
|
331
340
|
when 404
|
332
|
-
raise ResourceNotFoundError, parse_error_message(response)
|
341
|
+
raise ResourceNotFoundError, parse_error_message(response) || "Resource not found"
|
333
342
|
when 422
|
334
|
-
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"
|
335
346
|
else
|
336
|
-
raise ApiError.new(parse_error_message(response), response)
|
347
|
+
raise ApiError.new(parse_error_message(response) || "Internal server error", response)
|
337
348
|
end
|
338
349
|
end
|
339
350
|
|
@@ -342,10 +353,12 @@ module Pylon
|
|
342
353
|
# @param response [Faraday::Response] The API response
|
343
354
|
# @return [String] Error message
|
344
355
|
def parse_error_message(response)
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
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"]
|
349
362
|
end
|
350
363
|
end
|
351
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:
|
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
|
@@ -145,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
159
|
- !ruby/object:Gem::Version
|
146
160
|
version: '0'
|
147
161
|
requirements: []
|
148
|
-
rubygems_version: 3.
|
162
|
+
rubygems_version: 3.5.22
|
149
163
|
signing_key:
|
150
164
|
specification_version: 4
|
151
165
|
summary: Ruby client for the Pylon API
|