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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c5b1f37ba1c9f84dbf0f1f0dd9064e85a5b64a0fe327ad3013e40dadb069d8c
4
- data.tar.gz: 7800d67a2bcc68f30e73a1d1558296c69e2f51e45b5a19ab6316d8b9b2ce1807
3
+ metadata.gz: 417baee1f917bf76f2bebeafe9ac0e740ca238649225e26ad75092d368d542ef
4
+ data.tar.gz: '018b75c89e76821075e2c6a9a369ce2630627d82c15a441c162aa16de0d78a2e'
5
5
  SHA512:
6
- metadata.gz: ba0a41a8d95c55dc0f02b1a7e165a28f2cca04dac895d9923ccd9edeb0226ca7d67429d4dfd5f0ae7e124462fc028679b311340769d2d18f559897412b06846a
7
- data.tar.gz: f3da4554aba19d6eca7058b075a1e40746e05fe3207dd1cd6257eba4a08f99b548341e1aeac594b95bfc5a87252c79d810d10be1c4331bb1a45737474a16efea
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
- 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
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 `snooze_issue` method to support the new issue snooze endpoint
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
- ## [0.1.0] - 2024-03-21
16
+ ### Changed
17
+ - Improved request/response logging
18
+ - Enhanced error messages and documentation
13
19
 
14
- ### Added
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
- [0.2.0]: https://github.com/benjodo/pylon-api/compare/v0.1.0...v0.2.0
40
- [0.1.0]: https://github.com/benjodo/pylon-api/releases/tag/v0.1.0
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
- if response.body.is_a?(Hash)
355
- response.body["errors"]&.first || response.body["error"] || "HTTP #{response.status}"
356
- else
357
- "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"]
358
362
  end
359
363
  end
360
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 = 2
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.2.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-30 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