repres-dosser 1.5 → 1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 232b89400fa5b292d47c11b04180d4189793a9f8
4
- data.tar.gz: cd9291a3e4fb5d31850ef40896c11ea30676e6aa
3
+ metadata.gz: e0b1d905f477b752c5cfcc27c1c0e88963cd14bd
4
+ data.tar.gz: fd1a3124526d4bb596371169e335acef5c07af33
5
5
  SHA512:
6
- metadata.gz: 3f04925a73b936ff5099bb3fe8c2fe046e64158dd408fc43461fa672ca1fa5958da6531672c260dede3c6793e312d28b6e104217fe7b356e60541868cc95288c
7
- data.tar.gz: 5e162d288aa1ac41e221d26cea101ee1d4844173f2b86f1b29a04a39509e32a52e083198f7c797f81404df2c31eb7cff57d8da9211424aaf5d98a995bd0e59af
6
+ metadata.gz: d500648a0b6e31a235ecf2f6901b4ed1f3382e1cc79a40bff325628b2e833f2ec2fe1aa3b14333c28c368674944aa42c6f6e186e28b96e7e3d0c4c023860a6f8
7
+ data.tar.gz: 9b743cd575964bfda3c6859777abb126f3e9d874505167887223477b586bfc583a7c884e724219f7f8e7a934733ff45f33fd61a60120d3ab023b2ab0156bfd17
data/README.md CHANGED
@@ -62,3 +62,46 @@ onIndexResourceSuccess: function(data, textStatus, jqXHR)
62
62
  console.info('The item index is from '+pagination.min_item_on_current_page+' to '+pagination.max_item_on_current_page+' on the current page.');
63
63
  }
64
64
  ```
65
+
66
+
67
+
68
+ ## Generators
69
+
70
+
71
+
72
+ ### Platform generator
73
+
74
+ ```shell
75
+ rails generate repres:dosser:platform administration --version 2
76
+ ```
77
+
78
+ This will insert the following routings into the config/routes.rb file:
79
+ ```ruby
80
+ scope '/administration-api/v2', module: 'administration/dosser/v2', as: 'administration_dosser_v2' do
81
+ resources :portals, only: :show
82
+ end
83
+ ```
84
+
85
+ and create the following files:
86
+ ```shell
87
+ app/controllers/administration/dosser/v2/presentation_controller.rb
88
+ app/controllers/administration/dosser/v2/portals_controller.rb
89
+ ```
90
+
91
+
92
+
93
+ ### Swagger generator
94
+
95
+ ```shell
96
+ rails generate repres:dosser:swagger administration --version 2
97
+ ```
98
+
99
+ This will call the following command:
100
+ ```shell
101
+ rails generate repres:dosser:platform administration --version 2
102
+ ```
103
+
104
+ before insert the swagger_engine & the latest repres-dosser gem into the Gemfile file and will create the following file:
105
+ ```shell
106
+ lib/swagger/administration_api_v2.json
107
+ ```
@@ -0,0 +1,18 @@
1
+ Description:
2
+
3
+ Generates the Dosser platform scaffold.
4
+
5
+ Example:
6
+
7
+ rails generate repres:dosser:platform administration --version 2
8
+
9
+ This will insert the following routings into the config/routes.rb file:
10
+
11
+ scope '/administration-api/v2', module: 'administration/dosser/v2', as: 'administration_dosser_v2' do
12
+ resources :portals, only: :show
13
+ end
14
+
15
+ and create the following files:
16
+
17
+ app/controllers/administration/dosser/v2/presentation_controller.rb
18
+ app/controllers/administration/dosser/v2/portals_controller.rb
@@ -0,0 +1,84 @@
1
+ # rails generate repres:dosser:platform administration --version 2
2
+
3
+ class Repres::Dosser::PlatformGenerator < Rails::Generators::NamedBase
4
+
5
+ # https://github.com/erikhuda/thor/blob/master/lib/thor/base.rb#L273
6
+ class_option :version, type: :numeric, required: false, default: 1, desc: 'a positive integer, the default value is 1'
7
+
8
+ source_root File.expand_path('../templates', __FILE__)
9
+
10
+ def produce
11
+
12
+ @platform_name = file_name.downcase
13
+ @version_number = options['version'].to_i
14
+
15
+ generate_controller
16
+ generate_route
17
+
18
+ end
19
+
20
+ def define_namespace(content)
21
+ content.gsub! /PlatformModuleName/, platform_module_name
22
+ content.gsub! /VersionModuleName/, version_module_name
23
+ content.gsub! /platform_name/, platform_name
24
+ content.gsub! /version_name/, version_name
25
+ content.gsub! /version_number/, version_number.to_s
26
+ content
27
+ end
28
+
29
+ # controller
30
+ #
31
+ # app/controllers/platform/version/presentation_controller.rb
32
+ # app/controllers/platform/version/portals_controller.rb
33
+ #
34
+ def generate_controller
35
+ copy_file('app/controllers/presentation_controller.rb', "app/controllers/#{platform_name}/dosser/#{version_name}/presentation_controller.rb") { |content| define_namespace content }
36
+ copy_file('app/controllers/portals_controller.rb', "app/controllers/#{platform_name}/dosser/#{version_name}/portals_controller.rb" ) { |content| define_namespace content }
37
+ end
38
+
39
+ # route
40
+ #
41
+ # config/routes.rb
42
+ #
43
+ def generate_route
44
+ source = File.expand_path find_in_source_paths('config/routes.rb')
45
+ File.open(source, 'rb') { |f| route define_namespace(f.read.to_s.strip) }
46
+ end
47
+
48
+ # Administration
49
+ def platform_module_name
50
+ #@platform_name.capitalize
51
+ @platform_name.camelize
52
+ end
53
+
54
+ # administration
55
+ def platform_name
56
+ @platform_name
57
+ end
58
+
59
+ # Administration::V1
60
+ def platform_version_module_name
61
+ "#{platform_module_name}::Dosser::#{version_module_name}"
62
+ end
63
+
64
+ # V1
65
+ def version_module_name
66
+ "V#{version_number}"
67
+ end
68
+
69
+ # v1
70
+ def version_name
71
+ "v#{version_number}"
72
+ end
73
+
74
+ # 1
75
+ def version_number
76
+ @version_number
77
+ end
78
+
79
+ private :define_namespace,
80
+ :generate_controller, :generate_route,
81
+ :platform_module_name, :platform_name, :platform_version_module_name,
82
+ :version_module_name, :version_name, :version_number
83
+
84
+ end
@@ -0,0 +1,16 @@
1
+ class PlatformModuleName::Dosser::VersionModuleName::PortalsController < PlatformModuleName::Dosser::VersionModuleName::PresentationController
2
+
3
+ def show
4
+ render_ok collection: [
5
+ {
6
+ name: 'PlatformModuleName API version_name',
7
+ links: [
8
+ { rel: 'self', href: platform_name_dosser_version_name_portal_url(Unidom::Common::SELF, format: request.format.symbol) },
9
+ { rel: 'canonial', href: platform_name_dosser_version_name_portal_url(Unidom::Common::SELF, format: :json ) },
10
+ { rel: 'alternate', href: platform_name_dosser_version_name_portal_url(Unidom::Common::SELF, format: :xml ) }
11
+ ]
12
+ }
13
+ ]
14
+ end
15
+
16
+ end
@@ -0,0 +1,17 @@
1
+ require 'unidom'
2
+
3
+ class PlatformModuleName::Dosser::VersionModuleName::PresentationController < ActionController::Base
4
+
5
+ clear_helpers
6
+
7
+ include Repres::Dosser::Concerns::ResourcePresentation
8
+
9
+ layout nil
10
+
11
+ before_action :load_unidom
12
+
13
+ def load_unidom
14
+ initialize_unidom
15
+ end
16
+
17
+ end
@@ -0,0 +1,3 @@
1
+ scope '/platform_name-api/version_name', module: 'platform_name/dosser/version_name', as: 'platform_name_dosser_version_name' do
2
+ resources :portals, only: :show
3
+ end
@@ -0,0 +1,15 @@
1
+ Description:
2
+
3
+ Generates the Dosser Swagger scaffold.
4
+
5
+ Example:
6
+
7
+ rails generate repres:dosser:swagger administration --version 2
8
+
9
+ This will call the following command:
10
+
11
+ rails generate repres:dosser:platform administration --version 2
12
+
13
+ before insert the swagger_engine & the latest repres-dosser gem into the Gemfile file and will create the following file:
14
+
15
+ lib/swagger/administration_api_v2.json
@@ -0,0 +1,84 @@
1
+ # rails generate repres:dosser:swagger administration --version 2
2
+
3
+ class Repres::Dosser::SwaggerGenerator < Rails::Generators::NamedBase
4
+
5
+ # https://github.com/erikhuda/thor/blob/master/lib/thor/base.rb#L273
6
+ class_option :version, type: :numeric, required: false, default: 1, desc: 'a positive integer, the default value is 1'
7
+
8
+ source_root File.expand_path('../templates', __FILE__)
9
+
10
+ def produce
11
+
12
+ @platform_name = file_name.downcase
13
+ @version_number = options['version'].to_i
14
+
15
+ generate 'repres:dosser:platform', "#{@platform_name} --version #{@version_number}"
16
+
17
+ generate_gemfile
18
+ generate_swagger
19
+
20
+ end
21
+
22
+ def define_namespace(content)
23
+ content.gsub! /PlatformModuleName/, platform_module_name
24
+ content.gsub! /VersionModuleName/, version_module_name
25
+ content.gsub! /platform_name/, platform_name
26
+ content.gsub! /version_name/, version_name
27
+ content.gsub! /version_number/, version_number.to_s
28
+ content
29
+ end
30
+
31
+ # gemfile
32
+ #
33
+ # Gemfile
34
+ #
35
+ def generate_gemfile
36
+ gem 'swagger_engine'
37
+ gem 'repres-dosser', ">= #{Repres::Dosser::VERSION}"
38
+ end
39
+
40
+ # swagger
41
+ #
42
+ # lib/swagger/administration_api_v1.json
43
+ #
44
+ def generate_swagger
45
+ copy_file('lib/swagger/api.json', "lib/swagger/#{platform_name}_api_#{version_name}.json") { |content| define_namespace content }
46
+ end
47
+
48
+ # Administration
49
+ def platform_module_name
50
+ #@platform_name.capitalize
51
+ @platform_name.camelize
52
+ end
53
+
54
+ # administration
55
+ def platform_name
56
+ @platform_name
57
+ end
58
+
59
+ # Administration::V1
60
+ def platform_version_module_name
61
+ "#{platform_module_name}::Dosser::#{version_module_name}"
62
+ end
63
+
64
+ # V1
65
+ def version_module_name
66
+ "V#{version_number}"
67
+ end
68
+
69
+ # v1
70
+ def version_name
71
+ "v#{version_number}"
72
+ end
73
+
74
+ # 1
75
+ def version_number
76
+ @version_number
77
+ end
78
+
79
+ private :define_namespace,
80
+ :generate_gemfile, :generate_swagger,
81
+ :platform_module_name, :platform_name, :platform_version_module_name,
82
+ :version_module_name, :version_name, :version_number
83
+
84
+ end
@@ -0,0 +1,118 @@
1
+ {
2
+ "swagger": "2.0",
3
+ "info": {
4
+ "title": "PlatformModuleName Web API",
5
+ "description": "PlatformModuleName RESTful Web API version_name",
6
+ "contact": { "name": "Your Name", "email": "user@company.com" },
7
+ "version": "version_number"
8
+ },
9
+ "schemes": [ "https", "http" ],
10
+ "basePath": "/platform_name-api/version_name",
11
+ "produces": [ "application/json" ],
12
+ "consumes": [ "application/json" ],
13
+ "paths": {
14
+
15
+
16
+
17
+ "/portals/~": {
18
+ "get": {
19
+ "summary": "Platform Portal",
20
+ "description": "The Mobile client or Browsers should access this Web API before get the links of the other resources.",
21
+ "tags": [ "元数据" ],
22
+ "parameters": [
23
+ {
24
+ "name": "open_id",
25
+ "in": "query",
26
+ "description": "Open ID of the current user",
27
+ "required": false,
28
+ "type": "string",
29
+ "format": "uuid"
30
+ }
31
+ ],
32
+ "responses": {
33
+ "200": {
34
+ "description": "移动端应用获取其他Web API链接的返回。",
35
+ "schema": { "$ref": "#/definitions/LoadPortalResponseBody" }
36
+ },
37
+ "default": {
38
+ "description": "出现错误。",
39
+ "schema": { "$ref": "#/definitions/ErrorResponseBody" }
40
+ }
41
+ }
42
+ }
43
+ }
44
+
45
+
46
+
47
+ },
48
+
49
+ "definitions": {
50
+
51
+ "Date": { "type": "string", "format": "date" },
52
+ "Second": { "type": "integer", "format": "int64" },
53
+
54
+ "LinkList": { "type": "array", "items": { "type": "object", "properties": { "rel": { "type": "string" }, "href": { "type": "string" }, "title": { "type": "string" } } } },
55
+
56
+ "ResponseBodyCommonProperties": {
57
+ "type": "object",
58
+ "properties": {
59
+
60
+ "success": { "type": "boolean" },
61
+ "code": { "type": "string" },
62
+ "message": { "type": "string" },
63
+ "size": { "type": "integer", "format": "int32" },
64
+ "errors": { "type": "string", "additionalProperties": { "type": "array", "items": { "type": "string" } } },
65
+
66
+ "meta": {
67
+ "type": "object",
68
+ "properties": {
69
+ "timestamp": { "type": "integer", "format": "int32" },
70
+ "request_id": { "type": "string", "format": "uuid" },
71
+ "criteria": { "type": "object", "additionalProperties": { "type": "string" } },
72
+ "pagination": { "type": "object",
73
+ "properties": {
74
+ "total_items": { "type": "integer", "format": "int32" },
75
+ "per_page": { "type": "integer", "format": "int32" },
76
+ "current_page": { "type": "integer", "format": "int32" },
77
+ "total_pages": { "type": "integer", "format": "int32" },
78
+ "min_item_on_current_page": { "type": "integer", "format": "int32" },
79
+ "max_item_on_current_page": { "type": "integer", "format": "int32" },
80
+ "items_on_current_page": { "type": "integer", "format": "int32" }
81
+ }
82
+ }
83
+ }
84
+ }
85
+
86
+ }
87
+ },
88
+
89
+ "ErrorResponseBody": {
90
+ "description": "出现错误时的响应体",
91
+ "allOf": [
92
+ { "$ref": "#/definitions/ResponseBodyCommonProperties" },
93
+ { "type": "object", "properties": { "collection": { "type": "array", "items": { "type": "object", "additionalProperties": { "type": "string" } } } } }
94
+ ]
95
+ },
96
+
97
+
98
+
99
+ "LoadPortalResponseBody": {
100
+ "description": "元数据的响应体",
101
+ "allOf": [
102
+ { "$ref": "#/definitions/ResponseBodyCommonProperties" },
103
+ { "type": "object", "properties": { "collection": { "type": "array", "items": { "$ref": "#/definitions/LoadPortalResponseItem" } } } }
104
+ ]
105
+ },
106
+
107
+ "LoadPortalResponseItem": {
108
+ "type": "object",
109
+ "properties": {
110
+ "name": { "type": "string" },
111
+ "links": { "$ref": "#/definitions/LinkList" }
112
+ }
113
+ }
114
+
115
+
116
+
117
+ }
118
+ }
@@ -1,5 +1,5 @@
1
1
  module Repres
2
2
  module Dosser
3
- VERSION = '1.5'.freeze
3
+ VERSION = '1.6'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: repres-dosser
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.5'
4
+ version: '1.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Topbit Du
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-19 00:00:00.000000000 Z
11
+ date: 2016-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -44,6 +44,14 @@ files:
44
44
  - app/helpers/repres/dosser/application_helper.rb
45
45
  - app/views/layouts/repres/dosser/application.html.erb
46
46
  - config/routes.rb
47
+ - lib/generators/repres/dosser/platform/USAGE
48
+ - lib/generators/repres/dosser/platform/platform_generator.rb
49
+ - lib/generators/repres/dosser/platform/templates/app/controllers/portals_controller.rb
50
+ - lib/generators/repres/dosser/platform/templates/app/controllers/presentation_controller.rb
51
+ - lib/generators/repres/dosser/platform/templates/config/routes.rb
52
+ - lib/generators/repres/dosser/swagger/USAGE
53
+ - lib/generators/repres/dosser/swagger/swagger_generator.rb
54
+ - lib/generators/repres/dosser/swagger/templates/lib/swagger/api.json
47
55
  - lib/repres/dosser.rb
48
56
  - lib/repres/dosser/engine.rb
49
57
  - lib/repres/dosser/version.rb