an_post_return 0.2.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.
@@ -0,0 +1,131 @@
1
+ {
2
+ "meta": {
3
+ "generatedAt": "2025-04-23T14:30:12.935Z",
4
+ "tasksAnalyzed": 15,
5
+ "thresholdScore": 5,
6
+ "projectName": "Your Project Name",
7
+ "usedResearch": false
8
+ },
9
+ "complexityAnalysis": [
10
+ {
11
+ "taskId": 1,
12
+ "taskTitle": "Set up project structure and basic files",
13
+ "complexityScore": 4,
14
+ "recommendedSubtasks": 5,
15
+ "expansionPrompt": "Break down the process of setting up a Ruby gem structure with specific directories, files, and dependencies into clear sequential steps",
16
+ "reasoning": "This task involves standard Ruby gem setup with a moderate directory structure. While not highly complex, it requires careful organization of files and proper gemspec configuration. Breaking it into subtasks for initialization, directory creation, file setup, gemspec configuration, and module initialization would make it more manageable."
17
+ },
18
+ {
19
+ "taskId": 2,
20
+ "taskTitle": "Implement Configuration class",
21
+ "complexityScore": 3,
22
+ "recommendedSubtasks": 4,
23
+ "expansionPrompt": "Divide the implementation of a Ruby configuration class with attribute management, validation, and module integration into logical steps",
24
+ "reasoning": "This is a relatively straightforward configuration implementation with a few attributes and standard pattern. The complexity is low to moderate, requiring attribute definition, module integration, validation logic, and documentation. Four subtasks would adequately cover the implementation needs."
25
+ },
26
+ {
27
+ "taskId": 3,
28
+ "taskTitle": "Implement base error classes",
29
+ "complexityScore": 2,
30
+ "recommendedSubtasks": 4,
31
+ "expansionPrompt": "Break down the creation of a hierarchical error class structure with proper initialization and message handling into discrete steps",
32
+ "reasoning": "Creating error classes is a relatively simple task with low complexity. The hierarchy is straightforward with a base class and several subclasses. Four subtasks would cover designing the hierarchy, implementing the base class, implementing subclasses, and adding error wrapping functionality."
33
+ },
34
+ {
35
+ "taskId": 4,
36
+ "taskTitle": "Implement Client class",
37
+ "complexityScore": 4,
38
+ "recommendedSubtasks": 5,
39
+ "expansionPrompt": "Divide the implementation of a client class that manages configuration, resource access, and validation into clear implementation steps",
40
+ "reasoning": "The client class serves as the main interface but has moderate complexity due to configuration handling, resource management, and validation requirements. Five subtasks would allow for proper separation of concerns: class structure, configuration handling, resource access methods, validation logic, and documentation."
41
+ },
42
+ {
43
+ "taskId": 5,
44
+ "taskTitle": "Implement HTTP request handling",
45
+ "complexityScore": 6,
46
+ "recommendedSubtasks": 6,
47
+ "expansionPrompt": "Break down the implementation of an HTTP client with proxy support, header management, and comprehensive error handling into specific implementation tasks",
48
+ "reasoning": "HTTP request handling has higher complexity due to proxy configuration, header management, error mapping, and response parsing. Six subtasks would cover the core HTTP client, proxy configuration, header management, response parsing, error handling, and integration with the main client."
49
+ },
50
+ {
51
+ "taskId": 6,
52
+ "taskTitle": "Implement ReturnLabelResource resource",
53
+ "complexityScore": 5,
54
+ "recommendedSubtasks": 5,
55
+ "expansionPrompt": "Divide the implementation of an API resource class for generating return labels with validation, request formatting, and response handling into clear steps",
56
+ "reasoning": "This resource implementation has moderate complexity due to API interaction, parameter validation, and response handling. Five subtasks would cover class structure, parameter validation, request building, response parsing, and error handling specific to this resource."
57
+ },
58
+ {
59
+ "taskId": 7,
60
+ "taskTitle": "Implement SFTP client",
61
+ "complexityScore": 6,
62
+ "recommendedSubtasks": 6,
63
+ "expansionPrompt": "Break down the implementation of an SFTP client with connection management, file operations, and error handling into discrete implementation tasks",
64
+ "reasoning": "SFTP client implementation has higher complexity due to connection management, file operations, and error handling for network operations. Six subtasks would cover client structure, connection management, file listing, file downloading, error handling, and integration with the main client."
65
+ },
66
+ {
67
+ "taskId": 8,
68
+ "taskTitle": "Implement tracking file parser",
69
+ "complexityScore": 5,
70
+ "recommendedSubtasks": 5,
71
+ "expansionPrompt": "Divide the implementation of a parser for specialized tracking file formats into logical parsing components and data transformation steps",
72
+ "reasoning": "File parsing has moderate complexity due to the need to understand and handle specific file formats and transform them into structured data. Five subtasks would cover parser structure, format analysis, line parsing, data transformation, and error handling for malformed content."
73
+ },
74
+ {
75
+ "taskId": 9,
76
+ "taskTitle": "Implement Tracking resource",
77
+ "complexityScore": 7,
78
+ "recommendedSubtasks": 6,
79
+ "expansionPrompt": "Break down the implementation of a tracking resource that integrates SFTP access, file parsing, and incremental processing into clear implementation steps",
80
+ "reasoning": "This task has higher complexity as it integrates multiple components (SFTP client and parser) and implements incremental file processing logic. Six subtasks would cover class structure, SFTP integration, file ordering logic, incremental processing, data aggregation, and error handling."
81
+ },
82
+ {
83
+ "taskId": 10,
84
+ "taskTitle": "Add comprehensive documentation",
85
+ "complexityScore": 4,
86
+ "recommendedSubtasks": 5,
87
+ "expansionPrompt": "Divide the process of adding YARD documentation to all classes and methods into logical documentation groups or components",
88
+ "reasoning": "Documentation has moderate complexity due to the need to cover multiple classes and methods with appropriate tags and examples. Five subtasks would allow documentation to be organized by component: core module, configuration, client, resources, and SFTP components."
89
+ },
90
+ {
91
+ "taskId": 11,
92
+ "taskTitle": "Implement RSpec test suite for configuration and client",
93
+ "complexityScore": 5,
94
+ "recommendedSubtasks": 5,
95
+ "expansionPrompt": "Break down the implementation of RSpec tests for configuration and client classes into specific test groups and scenarios",
96
+ "reasoning": "Testing configuration and client classes has moderate complexity due to the need for various test scenarios, mocks, and validation tests. Five subtasks would cover test setup, configuration tests, client initialization tests, resource access tests, and error handling tests."
97
+ },
98
+ {
99
+ "taskId": 12,
100
+ "taskTitle": "Implement RSpec tests for ReturnLabelResource resource",
101
+ "complexityScore": 6,
102
+ "recommendedSubtasks": 6,
103
+ "expansionPrompt": "Divide the implementation of RSpec tests for the ReturnLabelResource resource with API interaction testing into specific test groups and fixtures",
104
+ "reasoning": "Testing the ReturnLabelResource resource has higher complexity due to API interaction, VCR setup, fixture creation, and various test scenarios. Six subtasks would cover test setup, fixture creation, parameter validation tests, successful request tests, error handling tests, and integration tests."
105
+ },
106
+ {
107
+ "taskId": 13,
108
+ "taskTitle": "Implement RSpec tests for SFTP and Tracking",
109
+ "complexityScore": 7,
110
+ "recommendedSubtasks": 7,
111
+ "expansionPrompt": "Break down the implementation of RSpec tests for SFTP client, tracking parser, and Tracking resource into specific test components and scenarios",
112
+ "reasoning": "Testing SFTP and Tracking components has high complexity due to the need to mock SFTP interactions, create file fixtures, and test complex integration scenarios. Seven subtasks would cover test setup, SFTP client tests, parser tests, tracking resource tests, fixture creation, integration tests, and error handling tests."
113
+ },
114
+ {
115
+ "taskId": 14,
116
+ "taskTitle": "Create comprehensive README and usage examples",
117
+ "complexityScore": 3,
118
+ "recommendedSubtasks": 4,
119
+ "expansionPrompt": "Divide the creation of a comprehensive README with installation, configuration, and usage examples into logical documentation sections",
120
+ "reasoning": "Creating documentation has low to moderate complexity, primarily requiring clear organization and examples. Four subtasks would cover installation and setup documentation, configuration examples, usage examples for each feature, and development/contribution guidelines."
121
+ },
122
+ {
123
+ "taskId": 15,
124
+ "taskTitle": "Finalize gem packaging and release preparation",
125
+ "complexityScore": 3,
126
+ "recommendedSubtasks": 4,
127
+ "expansionPrompt": "Break down the process of finalizing a Ruby gem for release with proper metadata, versioning, and documentation into specific preparation steps",
128
+ "reasoning": "Finalizing the gem has low to moderate complexity, involving standard packaging steps. Four subtasks would cover gemspec updates, version setting, changelog creation, and final verification/build testing."
129
+ }
130
+ ]
131
+ }
@@ -0,0 +1,4 @@
1
+ module AnpostApi
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata ADDED
@@ -0,0 +1,302 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: an_post_return
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Andy Chong
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2025-04-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: x25519
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.7
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.7
27
+ - !ruby/object:Gem::Dependency
28
+ name: ed25519
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.2'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 1.2.4
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '1.2'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.2.4
47
+ - !ruby/object:Gem::Dependency
48
+ name: bcrypt_pbkdf
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.0'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 1.0.2
57
+ type: :runtime
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.0'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 1.0.2
67
+ - !ruby/object:Gem::Dependency
68
+ name: net-sftp
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '3.0'
74
+ type: :runtime
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '3.0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: faraday
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '2.0'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '2.0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: json
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '2.6'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '2.6'
109
+ - !ruby/object:Gem::Dependency
110
+ name: csv
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '3.2'
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '3.2'
123
+ - !ruby/object:Gem::Dependency
124
+ name: base64
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: 0.2.0
130
+ type: :runtime
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: 0.2.0
137
+ - !ruby/object:Gem::Dependency
138
+ name: activesupport
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '7.0'
144
+ type: :runtime
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '7.0'
151
+ - !ruby/object:Gem::Dependency
152
+ name: rake
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '13.0'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '13.0'
165
+ - !ruby/object:Gem::Dependency
166
+ name: rspec
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: '3.0'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: '3.0'
179
+ - !ruby/object:Gem::Dependency
180
+ name: standard
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '1.3'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '1.3'
193
+ - !ruby/object:Gem::Dependency
194
+ name: webmock
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '3.18'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - "~>"
205
+ - !ruby/object:Gem::Version
206
+ version: '3.18'
207
+ - !ruby/object:Gem::Dependency
208
+ name: pry
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: '0.14'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - "~>"
219
+ - !ruby/object:Gem::Version
220
+ version: '0.14'
221
+ - !ruby/object:Gem::Dependency
222
+ name: dotenv
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: '2.8'
228
+ type: :development
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - "~>"
233
+ - !ruby/object:Gem::Version
234
+ version: '2.8'
235
+ description: A Ruby gem that provides a simple interface to interact with An Post's
236
+ API services, specifically for return label creation and tracking information retrieval.
237
+ email:
238
+ - andygg1996personal@gmail.com
239
+ executables: []
240
+ extensions: []
241
+ extra_rdoc_files: []
242
+ files:
243
+ - ".cursor/mcp.json"
244
+ - ".cursor/rules/cursor_rules.mdc"
245
+ - ".cursor/rules/dev_workflow.mdc"
246
+ - ".cursor/rules/self_improve.mdc"
247
+ - ".cursor/rules/taskmaster.mdc"
248
+ - ".env.example"
249
+ - ".rspec"
250
+ - ".standard.yml"
251
+ - ".windsurfrules"
252
+ - CHANGELOG.md
253
+ - CODE_OF_CONDUCT.md
254
+ - LICENSE.txt
255
+ - README-task-master.md
256
+ - README.md
257
+ - Rakefile
258
+ - lib/an_post_return.rb
259
+ - lib/an_post_return/client.rb
260
+ - lib/an_post_return/configuration.rb
261
+ - lib/an_post_return/errors.rb
262
+ - lib/an_post_return/objects/base.rb
263
+ - lib/an_post_return/objects/return_label.rb
264
+ - lib/an_post_return/resources/return_label_resource.rb
265
+ - lib/an_post_return/sftp/client.rb
266
+ - lib/an_post_return/sftp/errors.rb
267
+ - lib/an_post_return/sftp/tracking_parser.rb
268
+ - lib/an_post_return/tracker.rb
269
+ - lib/an_post_return/version.rb
270
+ - scripts/example_prd.txt
271
+ - scripts/prd.txt
272
+ - scripts/sftp_test.rb
273
+ - scripts/task-complexity-report.json
274
+ - sig/anpost_api.rbs
275
+ homepage: https://github.com/PostCo/an_post_return
276
+ licenses:
277
+ - MIT
278
+ metadata:
279
+ allowed_push_host: https://rubygems.org
280
+ homepage_uri: https://github.com/PostCo/an_post_return
281
+ source_code_uri: https://github.com/PostCo/an_post_return
282
+ changelog_uri: https://github.com/PostCo/an_post_return/blob/main/CHANGELOG.md
283
+ post_install_message:
284
+ rdoc_options: []
285
+ require_paths:
286
+ - lib
287
+ required_ruby_version: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - ">="
290
+ - !ruby/object:Gem::Version
291
+ version: 3.0.0
292
+ required_rubygems_version: !ruby/object:Gem::Requirement
293
+ requirements:
294
+ - - ">="
295
+ - !ruby/object:Gem::Version
296
+ version: '0'
297
+ requirements: []
298
+ rubygems_version: 3.5.23
299
+ signing_key:
300
+ specification_version: 4
301
+ summary: Ruby wrapper for An Post's API services
302
+ test_files: []