pike13 0.1.0.beta

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.
Files changed (75) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +134 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +634 -0
  5. data/lib/pike13/api/v2/account/base.rb +31 -0
  6. data/lib/pike13/api/v2/account/business.rb +23 -0
  7. data/lib/pike13/api/v2/account/confirmation.rb +18 -0
  8. data/lib/pike13/api/v2/account/me.rb +20 -0
  9. data/lib/pike13/api/v2/account/password.rb +18 -0
  10. data/lib/pike13/api/v2/account/person.rb +18 -0
  11. data/lib/pike13/api/v2/desk/appointment.rb +28 -0
  12. data/lib/pike13/api/v2/desk/base.rb +30 -0
  13. data/lib/pike13/api/v2/desk/booking.rb +43 -0
  14. data/lib/pike13/api/v2/desk/business.rb +23 -0
  15. data/lib/pike13/api/v2/desk/custom_field.rb +23 -0
  16. data/lib/pike13/api/v2/desk/event.rb +23 -0
  17. data/lib/pike13/api/v2/desk/event_occurrence.rb +33 -0
  18. data/lib/pike13/api/v2/desk/event_occurrence_note.rb +38 -0
  19. data/lib/pike13/api/v2/desk/event_occurrence_visit.rb +18 -0
  20. data/lib/pike13/api/v2/desk/event_occurrence_waitlist_entry.rb +18 -0
  21. data/lib/pike13/api/v2/desk/form_of_payment.rb +38 -0
  22. data/lib/pike13/api/v2/desk/invoice.rb +83 -0
  23. data/lib/pike13/api/v2/desk/location.rb +23 -0
  24. data/lib/pike13/api/v2/desk/make_up.rb +36 -0
  25. data/lib/pike13/api/v2/desk/note.rb +38 -0
  26. data/lib/pike13/api/v2/desk/pack.rb +28 -0
  27. data/lib/pike13/api/v2/desk/pack_product.rb +43 -0
  28. data/lib/pike13/api/v2/desk/payment.rb +31 -0
  29. data/lib/pike13/api/v2/desk/person.rb +48 -0
  30. data/lib/pike13/api/v2/desk/person_plan.rb +18 -0
  31. data/lib/pike13/api/v2/desk/person_visit.rb +18 -0
  32. data/lib/pike13/api/v2/desk/person_waitlist_entry.rb +18 -0
  33. data/lib/pike13/api/v2/desk/person_waiver.rb +18 -0
  34. data/lib/pike13/api/v2/desk/plan.rb +28 -0
  35. data/lib/pike13/api/v2/desk/plan_product.rb +23 -0
  36. data/lib/pike13/api/v2/desk/punch.rb +33 -0
  37. data/lib/pike13/api/v2/desk/refund.rb +23 -0
  38. data/lib/pike13/api/v2/desk/revenue_category.rb +23 -0
  39. data/lib/pike13/api/v2/desk/sales_tax.rb +23 -0
  40. data/lib/pike13/api/v2/desk/service.rb +28 -0
  41. data/lib/pike13/api/v2/desk/staff_member.rb +28 -0
  42. data/lib/pike13/api/v2/desk/visit.rb +43 -0
  43. data/lib/pike13/api/v2/desk/waitlist_entry.rb +38 -0
  44. data/lib/pike13/api/v2/front/appointment.rb +28 -0
  45. data/lib/pike13/api/v2/front/base.rb +30 -0
  46. data/lib/pike13/api/v2/front/booking.rb +53 -0
  47. data/lib/pike13/api/v2/front/branding.rb +18 -0
  48. data/lib/pike13/api/v2/front/business.rb +23 -0
  49. data/lib/pike13/api/v2/front/event.rb +23 -0
  50. data/lib/pike13/api/v2/front/event_occurrence.rb +33 -0
  51. data/lib/pike13/api/v2/front/event_occurrence_note.rb +23 -0
  52. data/lib/pike13/api/v2/front/event_occurrence_waitlist_eligibility.rb +18 -0
  53. data/lib/pike13/api/v2/front/form_of_payment.rb +43 -0
  54. data/lib/pike13/api/v2/front/invoice.rb +58 -0
  55. data/lib/pike13/api/v2/front/location.rb +23 -0
  56. data/lib/pike13/api/v2/front/note.rb +24 -0
  57. data/lib/pike13/api/v2/front/payment.rb +23 -0
  58. data/lib/pike13/api/v2/front/person.rb +23 -0
  59. data/lib/pike13/api/v2/front/person_plan.rb +18 -0
  60. data/lib/pike13/api/v2/front/person_visit.rb +18 -0
  61. data/lib/pike13/api/v2/front/person_waitlist_entry.rb +18 -0
  62. data/lib/pike13/api/v2/front/person_waiver.rb +18 -0
  63. data/lib/pike13/api/v2/front/plan.rb +28 -0
  64. data/lib/pike13/api/v2/front/plan_product.rb +23 -0
  65. data/lib/pike13/api/v2/front/plan_terms.rb +28 -0
  66. data/lib/pike13/api/v2/front/service.rb +28 -0
  67. data/lib/pike13/api/v2/front/staff_member.rb +23 -0
  68. data/lib/pike13/api/v2/front/visit.rb +33 -0
  69. data/lib/pike13/api/v2/front/waitlist_entry.rb +33 -0
  70. data/lib/pike13/configuration.rb +58 -0
  71. data/lib/pike13/errors.rb +104 -0
  72. data/lib/pike13/http_client.rb +175 -0
  73. data/lib/pike13/version.rb +5 -0
  74. data/lib/pike13.rb +159 -0
  75. metadata +131 -0
@@ -0,0 +1,175 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "httparty"
4
+
5
+ module Pike13
6
+ # HTTParty-based HTTP client for Pike13 API
7
+ # Provides HTTP methods with error handling
8
+ class HTTPClient
9
+ include HTTParty
10
+
11
+ attr_reader :base_url, :access_token
12
+
13
+ def initialize(base_url:, access_token:)
14
+ @base_url = base_url
15
+ @access_token = access_token
16
+ end
17
+
18
+ # GET request
19
+ #
20
+ # @param path [String] The API endpoint path
21
+ # @param params [Hash] Query parameters
22
+ # @return [Hash, Array] Parsed response body
23
+ def get(path, params = {})
24
+ handle_response do
25
+ self.class.get(
26
+ full_path(path),
27
+ query: params,
28
+ headers: headers,
29
+ timeout: 30
30
+ )
31
+ end
32
+ end
33
+
34
+ # POST request
35
+ #
36
+ # @param path [String] The API endpoint path
37
+ # @param body [Hash] Request body
38
+ # @param params [Hash] Query parameters
39
+ # @return [Hash] Parsed response body
40
+ def post(path, body = {}, params = {})
41
+ handle_response do
42
+ self.class.post(
43
+ full_path(path),
44
+ body: body.to_json,
45
+ query: params,
46
+ headers: headers,
47
+ timeout: 30
48
+ )
49
+ end
50
+ end
51
+
52
+ # PUT request
53
+ #
54
+ # @param path [String] The API endpoint path
55
+ # @param body [Hash] Request body
56
+ # @param params [Hash] Query parameters
57
+ # @return [Hash] Parsed response body
58
+ def put(path, body = {}, params = {})
59
+ handle_response do
60
+ self.class.put(
61
+ full_path(path),
62
+ body: body.to_json,
63
+ query: params,
64
+ headers: headers,
65
+ timeout: 30
66
+ )
67
+ end
68
+ end
69
+
70
+ # PATCH request
71
+ #
72
+ # @param path [String] The API endpoint path
73
+ # @param body [Hash] Request body
74
+ # @param params [Hash] Query parameters
75
+ # @return [Hash] Parsed response body
76
+ def patch(path, body = {}, params = {})
77
+ handle_response do
78
+ self.class.patch(
79
+ full_path(path),
80
+ body: body.to_json,
81
+ query: params,
82
+ headers: headers,
83
+ timeout: 30
84
+ )
85
+ end
86
+ end
87
+
88
+ # DELETE request
89
+ #
90
+ # @param path [String] The API endpoint path
91
+ # @param params [Hash] Query parameters
92
+ # @return [Hash] Parsed response body
93
+ def delete(path, params = {})
94
+ handle_response do
95
+ self.class.delete(
96
+ full_path(path),
97
+ query: params,
98
+ headers: headers,
99
+ timeout: 30
100
+ )
101
+ end
102
+ end
103
+
104
+ private
105
+
106
+ def full_path(path)
107
+ "#{base_url}/api/v2/#{path}"
108
+ end
109
+
110
+ def headers
111
+ {
112
+ "Authorization" => "Bearer #{access_token}",
113
+ "Content-Type" => "application/json",
114
+ "Accept" => "application/json"
115
+ }
116
+ end
117
+
118
+ def handle_response
119
+ response = yield
120
+ handle_status_code(response)
121
+ rescue HTTParty::Error => e
122
+ raise Pike13::ConnectionError, "Connection failed: #{e.message}"
123
+ end
124
+
125
+ def handle_status_code(response)
126
+ return parse_response_body(response) if response.code.between?(200, 299)
127
+
128
+ raise_error_for_status(response)
129
+ end
130
+
131
+ def raise_error_for_status(response)
132
+ case response.code
133
+ when 400 then raise Pike13::BadRequestError.new(response.body, http_status: response.code)
134
+ when 401 then raise Pike13::UnauthorizedError.new("Unauthorized", http_status: response.code)
135
+ when 404 then raise Pike13::NotFoundError.new("Resource not found", http_status: response.code)
136
+ when 422 then raise_validation_error(response)
137
+ when 429 then raise Pike13::RateLimitError.new("Rate limit exceeded", http_status: response.code)
138
+ when 500..599 then raise Pike13::ServerError.new("Server error", http_status: response.code)
139
+ else raise Pike13::APIError.new("Unexpected error", http_status: response.code)
140
+ end
141
+ end
142
+
143
+ def raise_validation_error(response)
144
+ parsed = parse_json_safely(response.body)
145
+ error_message = extract_error_message(parsed, response.body)
146
+ raise Pike13::ValidationError.new(error_message, http_status: response.code)
147
+ end
148
+
149
+ def parse_json_safely(body)
150
+ JSON.parse(body)
151
+ rescue StandardError
152
+ {}
153
+ end
154
+
155
+ def extract_error_message(parsed, fallback)
156
+ return fallback unless parsed.is_a?(Hash) && parsed["errors"]
157
+
158
+ parsed["errors"].is_a?(Array) ? parsed["errors"].first : parsed["errors"]
159
+ end
160
+
161
+ def parse_response_body(response)
162
+ return nil if response.body.nil? || response.body.empty?
163
+
164
+ parsed = response.parsed_response
165
+ return parsed unless parsed.is_a?(Hash)
166
+
167
+ # Handle different response formats
168
+ if parsed.key?("data")
169
+ parsed["data"]
170
+ else
171
+ parsed
172
+ end
173
+ end
174
+ end
175
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pike13
4
+ VERSION = "0.1.0.beta"
5
+ end
data/lib/pike13.rb ADDED
@@ -0,0 +1,159 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "pike13/version"
4
+ require_relative "pike13/configuration"
5
+ require_relative "pike13/errors"
6
+ require_relative "pike13/http_client"
7
+
8
+ # Namespace base classes
9
+ require_relative "pike13/api/v2/desk/base"
10
+ require_relative "pike13/api/v2/front/base"
11
+ require_relative "pike13/api/v2/account/base"
12
+
13
+ # Account namespace resources
14
+ require_relative "pike13/api/v2/account/me"
15
+ require_relative "pike13/api/v2/account/business"
16
+ require_relative "pike13/api/v2/account/person"
17
+ require_relative "pike13/api/v2/account/password"
18
+ require_relative "pike13/api/v2/account/confirmation"
19
+
20
+ # Desk resources
21
+ require_relative "pike13/api/v2/desk/appointment"
22
+ require_relative "pike13/api/v2/desk/booking"
23
+ require_relative "pike13/api/v2/desk/business"
24
+ require_relative "pike13/api/v2/desk/custom_field"
25
+ require_relative "pike13/api/v2/desk/event"
26
+ require_relative "pike13/api/v2/desk/event_occurrence"
27
+ require_relative "pike13/api/v2/desk/event_occurrence_note"
28
+ require_relative "pike13/api/v2/desk/event_occurrence_visit"
29
+ require_relative "pike13/api/v2/desk/event_occurrence_waitlist_entry"
30
+ require_relative "pike13/api/v2/desk/form_of_payment"
31
+ require_relative "pike13/api/v2/desk/invoice"
32
+ require_relative "pike13/api/v2/desk/location"
33
+ require_relative "pike13/api/v2/desk/note"
34
+ require_relative "pike13/api/v2/desk/pack"
35
+ require_relative "pike13/api/v2/desk/pack_product"
36
+ require_relative "pike13/api/v2/desk/person"
37
+ require_relative "pike13/api/v2/desk/person_plan"
38
+ require_relative "pike13/api/v2/desk/person_visit"
39
+ require_relative "pike13/api/v2/desk/person_waitlist_entry"
40
+ require_relative "pike13/api/v2/desk/person_waiver"
41
+ require_relative "pike13/api/v2/desk/plan"
42
+ require_relative "pike13/api/v2/desk/plan_product"
43
+ require_relative "pike13/api/v2/desk/punch"
44
+ require_relative "pike13/api/v2/desk/revenue_category"
45
+ require_relative "pike13/api/v2/desk/sales_tax"
46
+ require_relative "pike13/api/v2/desk/service"
47
+ require_relative "pike13/api/v2/desk/staff_member"
48
+ require_relative "pike13/api/v2/desk/visit"
49
+ require_relative "pike13/api/v2/desk/waitlist_entry"
50
+ require_relative "pike13/api/v2/desk/payment"
51
+ require_relative "pike13/api/v2/desk/refund"
52
+ require_relative "pike13/api/v2/desk/make_up"
53
+
54
+ # Front resources
55
+ require_relative "pike13/api/v2/front/appointment"
56
+ require_relative "pike13/api/v2/front/booking"
57
+ require_relative "pike13/api/v2/front/branding"
58
+ require_relative "pike13/api/v2/front/business"
59
+ require_relative "pike13/api/v2/front/event"
60
+ require_relative "pike13/api/v2/front/event_occurrence"
61
+ require_relative "pike13/api/v2/front/event_occurrence_note"
62
+ require_relative "pike13/api/v2/front/event_occurrence_waitlist_eligibility"
63
+ require_relative "pike13/api/v2/front/form_of_payment"
64
+ require_relative "pike13/api/v2/front/invoice"
65
+ require_relative "pike13/api/v2/front/location"
66
+ require_relative "pike13/api/v2/front/note"
67
+ require_relative "pike13/api/v2/front/person"
68
+ require_relative "pike13/api/v2/front/person_plan"
69
+ require_relative "pike13/api/v2/front/person_visit"
70
+ require_relative "pike13/api/v2/front/person_waitlist_entry"
71
+ require_relative "pike13/api/v2/front/person_waiver"
72
+ require_relative "pike13/api/v2/front/plan"
73
+ require_relative "pike13/api/v2/front/plan_product"
74
+ require_relative "pike13/api/v2/front/plan_terms"
75
+ require_relative "pike13/api/v2/front/service"
76
+ require_relative "pike13/api/v2/front/staff_member"
77
+ require_relative "pike13/api/v2/front/visit"
78
+ require_relative "pike13/api/v2/front/waitlist_entry"
79
+ require_relative "pike13/api/v2/front/payment"
80
+
81
+ # Pike13 Ruby Client
82
+ #
83
+ # A Ruby gem for interacting with the Pike13 API.
84
+ #
85
+ # @example Configuration
86
+ # Pike13.configure do |config|
87
+ # config.access_token = "your_access_token"
88
+ # config.base_url = "mybusiness.pike13.com"
89
+ # end
90
+ #
91
+ # # Then use models directly
92
+ # person = Pike13::API::V2::Desk::Person.find(123)
93
+ # people = Pike13::API::V2::Desk::Person.all
94
+ #
95
+ # @example Using different namespaces
96
+ # # Account namespace (not scoped to business subdomain)
97
+ # account = Pike13::API::V2::Account::Me.me
98
+ # businesses = Pike13::API::V2::Account::Business.all
99
+ #
100
+ # # Desk namespace (staff interface)
101
+ # people = Pike13::API::V2::Desk::Person.all
102
+ # events = Pike13::API::V2::Desk::Event.all
103
+ #
104
+ # # Front namespace (client interface)
105
+ # locations = Pike13::API::V2::Front::Location.all
106
+ # branding = Pike13::API::V2::Front::Branding.all.first
107
+ module Pike13
108
+ # Simplified namespace aliases
109
+ Account = API::V2::Account
110
+ Desk = API::V2::Desk
111
+ Front = API::V2::Front
112
+
113
+ class << self
114
+ attr_writer :configuration
115
+
116
+ # Returns the global configuration object
117
+ #
118
+ # @return [Configuration]
119
+ def configuration
120
+ @configuration ||= Configuration.new
121
+ end
122
+
123
+ # Configure Pike13 globally
124
+ #
125
+ # Automatically applies configuration to all API Base classes.
126
+ #
127
+ # @yield [Configuration] Global configuration object
128
+ #
129
+ # @example
130
+ # Pike13.configure do |config|
131
+ # config.access_token = "your_access_token"
132
+ # config.base_url = "mybusiness.pike13.com"
133
+ # end
134
+ #
135
+ # # Then use models directly
136
+ # person = Pike13::API::V2::Desk::Person.find(123)
137
+ def configure
138
+ yield(configuration)
139
+ configuration.validate!
140
+ apply_configuration!
141
+ end
142
+
143
+ # Reset configuration (mainly for testing)
144
+ #
145
+ # @return [Configuration] New configuration object
146
+ def reset!
147
+ @configuration = Configuration.new
148
+ end
149
+
150
+ private
151
+
152
+ # Apply configuration to all API Base classes
153
+ def apply_configuration!
154
+ API::V2::Desk::Base.configure(configuration)
155
+ API::V2::Front::Base.configure(configuration)
156
+ API::V2::Account::Base.configure(configuration)
157
+ end
158
+ end
159
+ end
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pike13
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.beta
5
+ platform: ruby
6
+ authors:
7
+ - Juan Huttemann
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: httparty
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.21'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '0.21'
26
+ description: A Ruby gem for interacting with the Pike13 Core API
27
+ email:
28
+ - juanfhuttemann@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - CHANGELOG.md
34
+ - LICENSE.txt
35
+ - README.md
36
+ - lib/pike13.rb
37
+ - lib/pike13/api/v2/account/base.rb
38
+ - lib/pike13/api/v2/account/business.rb
39
+ - lib/pike13/api/v2/account/confirmation.rb
40
+ - lib/pike13/api/v2/account/me.rb
41
+ - lib/pike13/api/v2/account/password.rb
42
+ - lib/pike13/api/v2/account/person.rb
43
+ - lib/pike13/api/v2/desk/appointment.rb
44
+ - lib/pike13/api/v2/desk/base.rb
45
+ - lib/pike13/api/v2/desk/booking.rb
46
+ - lib/pike13/api/v2/desk/business.rb
47
+ - lib/pike13/api/v2/desk/custom_field.rb
48
+ - lib/pike13/api/v2/desk/event.rb
49
+ - lib/pike13/api/v2/desk/event_occurrence.rb
50
+ - lib/pike13/api/v2/desk/event_occurrence_note.rb
51
+ - lib/pike13/api/v2/desk/event_occurrence_visit.rb
52
+ - lib/pike13/api/v2/desk/event_occurrence_waitlist_entry.rb
53
+ - lib/pike13/api/v2/desk/form_of_payment.rb
54
+ - lib/pike13/api/v2/desk/invoice.rb
55
+ - lib/pike13/api/v2/desk/location.rb
56
+ - lib/pike13/api/v2/desk/make_up.rb
57
+ - lib/pike13/api/v2/desk/note.rb
58
+ - lib/pike13/api/v2/desk/pack.rb
59
+ - lib/pike13/api/v2/desk/pack_product.rb
60
+ - lib/pike13/api/v2/desk/payment.rb
61
+ - lib/pike13/api/v2/desk/person.rb
62
+ - lib/pike13/api/v2/desk/person_plan.rb
63
+ - lib/pike13/api/v2/desk/person_visit.rb
64
+ - lib/pike13/api/v2/desk/person_waitlist_entry.rb
65
+ - lib/pike13/api/v2/desk/person_waiver.rb
66
+ - lib/pike13/api/v2/desk/plan.rb
67
+ - lib/pike13/api/v2/desk/plan_product.rb
68
+ - lib/pike13/api/v2/desk/punch.rb
69
+ - lib/pike13/api/v2/desk/refund.rb
70
+ - lib/pike13/api/v2/desk/revenue_category.rb
71
+ - lib/pike13/api/v2/desk/sales_tax.rb
72
+ - lib/pike13/api/v2/desk/service.rb
73
+ - lib/pike13/api/v2/desk/staff_member.rb
74
+ - lib/pike13/api/v2/desk/visit.rb
75
+ - lib/pike13/api/v2/desk/waitlist_entry.rb
76
+ - lib/pike13/api/v2/front/appointment.rb
77
+ - lib/pike13/api/v2/front/base.rb
78
+ - lib/pike13/api/v2/front/booking.rb
79
+ - lib/pike13/api/v2/front/branding.rb
80
+ - lib/pike13/api/v2/front/business.rb
81
+ - lib/pike13/api/v2/front/event.rb
82
+ - lib/pike13/api/v2/front/event_occurrence.rb
83
+ - lib/pike13/api/v2/front/event_occurrence_note.rb
84
+ - lib/pike13/api/v2/front/event_occurrence_waitlist_eligibility.rb
85
+ - lib/pike13/api/v2/front/form_of_payment.rb
86
+ - lib/pike13/api/v2/front/invoice.rb
87
+ - lib/pike13/api/v2/front/location.rb
88
+ - lib/pike13/api/v2/front/note.rb
89
+ - lib/pike13/api/v2/front/payment.rb
90
+ - lib/pike13/api/v2/front/person.rb
91
+ - lib/pike13/api/v2/front/person_plan.rb
92
+ - lib/pike13/api/v2/front/person_visit.rb
93
+ - lib/pike13/api/v2/front/person_waitlist_entry.rb
94
+ - lib/pike13/api/v2/front/person_waiver.rb
95
+ - lib/pike13/api/v2/front/plan.rb
96
+ - lib/pike13/api/v2/front/plan_product.rb
97
+ - lib/pike13/api/v2/front/plan_terms.rb
98
+ - lib/pike13/api/v2/front/service.rb
99
+ - lib/pike13/api/v2/front/staff_member.rb
100
+ - lib/pike13/api/v2/front/visit.rb
101
+ - lib/pike13/api/v2/front/waitlist_entry.rb
102
+ - lib/pike13/configuration.rb
103
+ - lib/pike13/errors.rb
104
+ - lib/pike13/http_client.rb
105
+ - lib/pike13/version.rb
106
+ homepage: https://github.com/juanhuttemann/pike13-ruby
107
+ licenses:
108
+ - MIT
109
+ metadata:
110
+ homepage_uri: https://github.com/juanhuttemann/pike13-ruby
111
+ source_code_uri: https://github.com/juanhuttemann/pike13-ruby
112
+ changelog_uri: https://github.com/juanhuttemann/pike13-ruby/blob/master/CHANGELOG.md
113
+ rubygems_mfa_required: 'true'
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: 3.0.0
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubygems_version: 3.6.9
129
+ specification_version: 4
130
+ summary: Ruby client for the Pike13 Core API
131
+ test_files: []