swagged-angular-resources
Version:
AngularJS $resource code generator written in CoffeeScript for Swagger v2.0 documentated endpoints.
109 lines (99 loc) • 3.01 kB
Markdown
swagged-angular-resources
=========================
AngularJS $resource code generator written in CoffeeScript for Swagger v2.0 documentated endpoints.
## Install globally through npm
```bash
$ npm install -g swagged-angular-resources
```
## Usage
```bash
$ swagged-angular-resources swagger-docs-url|swagger-docs-file <angular-module-name=moduleName> <--strip-trailing-slashes>
```
## Example
Run the following command:
```bash
$ swagged-angular-resources https://raw.githubusercontent.com/swagger-api/swagger-spec/master/examples/v2.0/json/petstore-expanded.json --angular-module-name=swaggedAngularResources --strip-trailing-slashes
```
This will output the following AngularJS code:
```javascript
(function(angular) {
'use strict';
angular
.module('swaggedAngularResources', [
require('angular-resource')
])
.config(function($resourceProvider) {
$resourceProvider.defaults.stripTrailingSlashes = false;
})
.provider('Pet', function() {
this.$get = function($resource, apiUrl) {
return $resource(null, null, {
findPets: {
method: 'GET',
url: apiUrl + '/pets',
isArray: true,
},
addPet: {
method: 'POST',
url: apiUrl + '/pets',
},
findPetById: {
method: 'GET',
url: apiUrl + '/pets/:id',
params: {
'id': '@id',
},
},
});
};
});
module.exports = 'swaggedAngularResources';
})(angular);
```
From your AngularJS application module:
```javascript
(function(angular) {
angular
.module('myAngularApp', [
require('./resources.js'
])
.value('apiUrl', 'http://petstore.swagger.io/v2/') // injecting apiUrl
.run(function(Pet) {
var pet, pets;
// use class based function to retrieve all pets
pets = Pet.findPets();
// and optionally pass url templating parameters or $resource callbacks
pet = Pet.findPetById({id: 1}, function(success) {}, function(error) {});
// create a new Pet object
pet = new Pet({name: 'Goldfishy'});
// use instance based functions on Pet object
pet.$addPet();
});
})(angular);
```
## Develop with swagged-angular-resources
Fork or clone this repository! And then run:
```bash
$ npm install
```
and then
```bash
$ npm link
```
and then
```bash
$ gulp watch
```
## Changelog
### 0.0.10
- Added @ngdoc generation argument (default: --ngdoc=false)
### 0.0.9
- Changed angular module name argument (default: --angular-module-name=swaggedAngularResources)
- Added configurable $resource strip trailing slashes configuration (default: --strip-trailing-slashes=false)
- Added yargs for easier argument parsing
### 0.0.8
- Added configurable angular module name (2nd argument)
- Added IIFE to provider template
## TODO
- Add arguments to script such as (default apiUrl value as argument or from Swagger docs)
- Add service and factory templates