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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fcfe4ab02c112c8898998add96fc34ff4846029b2fc10bf2e2ce13c1f907a565
4
- data.tar.gz: d8fd25a0307bbdc62e1a8921a95cf5859382f52d27303d25fec825db7f416ee7
3
+ metadata.gz: 417baee1f917bf76f2bebeafe9ac0e740ca238649225e26ad75092d368d542ef
4
+ data.tar.gz: '018b75c89e76821075e2c6a9a369ce2630627d82c15a441c162aa16de0d78a2e'
5
5
  SHA512:
6
- metadata.gz: 7205621d5fe56ec66b58974d632eaa03e5be978a42e508656ad59583d499d348eef1ae91e6838da9f2ee3f9add0113f7e45151cce4578aebcd786cb2065a86ff
7
- data.tar.gz: d0bd80e6ba44a85fb9d083263cf0ae74904d5fce043fb18de248cf6e4ff8807905b4dedc5508afc05af9c293c1b2f8778b860602969c48992b58a7896fe01c6a
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
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
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
- ## [0.1.0] - 2024-03-21
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
- - Initial release of the Pylon API Ruby client
11
- - Comprehensive client implementation with support for all major API endpoints:
12
- - Accounts management
13
- - Attachments handling
14
- - Contacts management
15
- - Custom fields
16
- - Issues tracking
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]: https://github.com/benjodo/pylon-api/releases/tag/v0.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
- if response.body.is_a?(Hash)
346
- response.body["errors"]&.first || response.body["error"] || "HTTP #{response.status}"
347
- else
348
- "HTTP #{response.status}"
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
@@ -2,9 +2,9 @@
2
2
 
3
3
  module Pylon
4
4
  # Major version for breaking changes
5
- MAJOR = 0
5
+ MAJOR = 1
6
6
  # Minor version for new features
7
- MINOR = 1
7
+ MINOR = 0
8
8
  # Patch version for bug fixes
9
9
  PATCH = 0
10
10
  # Pre-release version (optional)
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.1.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-03-27 00:00:00.000000000 Z
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: 2.12.2
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: 2.12.2
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: '1.0'
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: '1.0'
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.3.7
162
+ rubygems_version: 3.5.22
149
163
  signing_key:
150
164
  specification_version: 4
151
165
  summary: Ruby client for the Pylon API