Skip to content

Commit

Permalink
Merge pull request #1 from carsdotcom/initial-commit
Browse files Browse the repository at this point in the history
Initial commit
  • Loading branch information
jwadhams authored Jul 6, 2023
2 parents cf3ca73 + fe1e079 commit 74e5804
Show file tree
Hide file tree
Showing 40 changed files with 11,591 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
node_modules/
npm-debug.log
yarn-error.log
.idea/
.ackrc

# Laravel 4 specific
bootstrap/compiled.php
Expand Down
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,19 @@
# php-request-class
Structure the logic around Guzzle API requests into object-oriented classes

## What?
We maintain an application that is reliant on dozens of REST APIs, most of which do not have SDKs.

We love [Guzzle](https://github.com/guzzle/guzzle)! But most of the documentation assumes that making a request is "easy," just a few lines of code.

But we've discovered in our own use that the structure around that Guzzle request can run into hundreds of lines,
managing pre-requisites like authentication, converting data between our internal types and our partners' types, etc.

So we created `AbstractRequest` as a standardized way to:
1. Organize logic into classes.
2. Provide swappable traits for encoding and decoding (XML, JSON, forms, even simplified GraphQL!)
3. Log *everything* using Laravel's File facade
4. Cache using Laravel's Cache facade (with a simple automatic cache key generator)
5. Provide a structure for chainable prerequisites (like authentication)
6. Provide a structure for catching exceptions and parsing responses back into your internal logic
7. Let you defer decisions about call order or synchronous/asynchronous processing to the user of the request class
Loading

0 comments on commit 74e5804

Please sign in to comment.