- Notifications
You must be signed in to change notification settings - Fork1
A restful network interface with Codable
License
3zcurdia/AmacaPod
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Amaca is available throughCocoaPods. To installit, simply add the following line to your Podfile:
pod'Amaca'
Even when Amaca is based in convention over configuration principle, there are few things to setup.
You must implement a structure or a class conforming theAmacaConfigurable
protocol whereit will be defined the base url and the session for your connections, among with the authentication structureif needed.
publicprotocolServicesConfig{varsession:URLSession{get}varbaseURL:URL{get}}
structServicesConfig:AmacaConfigurable{letsession:URLSession=URLSession.sharedletbaseUrl:URL=URL(string:"https://example.com/api")!}
To initialize a service you must create an instance with the Codable you desireto parse a config and the path where all the RESTFUL routes reside.
Method | URI Pattern | Action |
---|---|---|
GET | /users | index |
POST | /users | create |
GET | /users/:id | show |
PUT | /users/:id | update |
DELETE | /users/:id | destroy |
Then for each method you can call the correspondent action
letconfig=ServicesConfig()letservice=CodableService<User>(config: config, path:"/users", auth:nil) service.index{ responsein // your code goes hereswitch response.status{case.success:print(response.data!.count)default:print(response.status)print(response)}}
Amaca provides authentication structs for query and header:
- QueryAuthentication
- HeaderAuthentication
letconfig=ServicesConfig()letauth=QueryAuthentication(method:.basicHeader, token:"secret-token-1234")letservice=CodableService<User>(config: config, path:"users", auth: auth) service.index{ responsein // your code goes hereswitch response.status{case.success:print(response.data!.count)default:print(response.status)print(response)}}
Note: CodableService internally implementsdataTask
other methods fromURLSession
could be supported in the future.
To contribute, just follow the next steps:
- Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
- Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
- Fork the project
- Start a feature/bugfix branch
- Commit and push until you are happy with your contribution
- It is desired to add some tests for it.
- Make a Pull Request
Amaca is available under the MIT license. See the LICENSE file for more info.
About
A restful network interface with Codable