rails_api_doc 0.0.2

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.
Files changed (110) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/javascripts/rails_api_doc/01 - Singh Saab The Great - DownloadMing.SE.mp3 +0 -0
  5. data/app/assets/javascripts/rails_api_doc/apis.js +16 -0
  6. data/app/assets/javascripts/rails_api_doc/application.js +15 -0
  7. data/app/assets/javascripts/rails_api_doc/jquery-1.3.2.js +19 -0
  8. data/app/assets/javascripts/rails_api_doc/parameters.js +2 -0
  9. data/app/assets/javascripts/rails_api_doc/projects.js +2 -0
  10. data/app/assets/stylesheets/rails_api_doc/apis.css +4 -0
  11. data/app/assets/stylesheets/rails_api_doc/application.css +8381 -0
  12. data/app/assets/stylesheets/rails_api_doc/parameters.css +4 -0
  13. data/app/assets/stylesheets/rails_api_doc/projects.css +4 -0
  14. data/app/assets/stylesheets/scaffold.css +56 -0
  15. data/app/controllers/rails_api_doc/apis_controller.rb +149 -0
  16. data/app/controllers/rails_api_doc/application_controller.rb +4 -0
  17. data/app/controllers/rails_api_doc/parameters_controller.rb +87 -0
  18. data/app/controllers/rails_api_doc/projects_controller.rb +87 -0
  19. data/app/helpers/rails_api_doc/apis_helper.rb +29 -0
  20. data/app/helpers/rails_api_doc/application_helper.rb +4 -0
  21. data/app/helpers/rails_api_doc/parameters_helper.rb +4 -0
  22. data/app/helpers/rails_api_doc/projects_helper.rb +4 -0
  23. data/app/models/rails_api_doc/api.rb +14 -0
  24. data/app/models/rails_api_doc/failure_response.rb +8 -0
  25. data/app/models/rails_api_doc/parameter.rb +7 -0
  26. data/app/models/rails_api_doc/project.rb +7 -0
  27. data/app/models/rails_api_doc/success_response.rb +8 -0
  28. data/app/views/layouts/rails_api_doc/application.html.erb +14 -0
  29. data/app/views/rails_api_doc/apis/_failure_response_fields.html.erb +10 -0
  30. data/app/views/rails_api_doc/apis/_form.html.erb +66 -0
  31. data/app/views/rails_api_doc/apis/_parameter_fields.html.erb +17 -0
  32. data/app/views/rails_api_doc/apis/_success_response_fields.html.erb +10 -0
  33. data/app/views/rails_api_doc/apis/edit.html.erb +6 -0
  34. data/app/views/rails_api_doc/apis/index.html.erb +21 -0
  35. data/app/views/rails_api_doc/apis/new.html.erb +5 -0
  36. data/app/views/rails_api_doc/apis/show.html.erb +31 -0
  37. data/app/views/rails_api_doc/parameters/_form.html.erb +33 -0
  38. data/app/views/rails_api_doc/parameters/edit.html.erb +6 -0
  39. data/app/views/rails_api_doc/parameters/index.html.erb +29 -0
  40. data/app/views/rails_api_doc/parameters/new.html.erb +5 -0
  41. data/app/views/rails_api_doc/parameters/show.html.erb +25 -0
  42. data/app/views/rails_api_doc/projects/_form.html.erb +25 -0
  43. data/app/views/rails_api_doc/projects/edit.html.erb +6 -0
  44. data/app/views/rails_api_doc/projects/index.html.erb +24 -0
  45. data/app/views/rails_api_doc/projects/new.html.erb +5 -0
  46. data/app/views/rails_api_doc/projects/show.html.erb +15 -0
  47. data/config/routes.rb +14 -0
  48. data/db/migrate/20131026073600_create_rails_api_doc_apis.rb +13 -0
  49. data/db/migrate/20131026083511_create_rails_api_doc_parameters.rb +12 -0
  50. data/db/migrate/20131110085503_create_rails_api_doc_success_responses.rb +10 -0
  51. data/db/migrate/20131117141240_add_column_note_to_rails_api_doc_success_response.rb +5 -0
  52. data/db/migrate/20131117144700_create_rails_api_doc_failure_responses.rb +11 -0
  53. data/db/migrate/20131228045156_create_rails_api_doc_projects.rb +10 -0
  54. data/db/migrate/20131228051342_add_column_project_id_to_rails_api_doc_api.rb +5 -0
  55. data/lib/rails_api_doc.rb +4 -0
  56. data/lib/rails_api_doc/engine.rb +6 -0
  57. data/lib/rails_api_doc/version.rb +3 -0
  58. data/lib/tasks/rails_api_doc_tasks.rake +4 -0
  59. data/test/dummy/README.rdoc +261 -0
  60. data/test/dummy/Rakefile +7 -0
  61. data/test/dummy/app/assets/javascripts/application.js +15 -0
  62. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  63. data/test/dummy/app/controllers/application_controller.rb +3 -0
  64. data/test/dummy/app/helpers/application_helper.rb +2 -0
  65. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  66. data/test/dummy/config.ru +4 -0
  67. data/test/dummy/config/application.rb +59 -0
  68. data/test/dummy/config/boot.rb +10 -0
  69. data/test/dummy/config/database.yml +25 -0
  70. data/test/dummy/config/environment.rb +5 -0
  71. data/test/dummy/config/environments/development.rb +37 -0
  72. data/test/dummy/config/environments/production.rb +67 -0
  73. data/test/dummy/config/environments/test.rb +37 -0
  74. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  75. data/test/dummy/config/initializers/inflections.rb +15 -0
  76. data/test/dummy/config/initializers/mime_types.rb +5 -0
  77. data/test/dummy/config/initializers/secret_token.rb +7 -0
  78. data/test/dummy/config/initializers/session_store.rb +8 -0
  79. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  80. data/test/dummy/config/locales/en.yml +5 -0
  81. data/test/dummy/config/routes.rb +4 -0
  82. data/test/dummy/db/development.sqlite3 +0 -0
  83. data/test/dummy/db/schema.rb +16 -0
  84. data/test/dummy/db/test.sqlite3 +0 -0
  85. data/test/dummy/log/development.log +8 -0
  86. data/test/dummy/public/404.html +26 -0
  87. data/test/dummy/public/422.html +26 -0
  88. data/test/dummy/public/500.html +25 -0
  89. data/test/dummy/public/favicon.ico +0 -0
  90. data/test/dummy/script/rails +6 -0
  91. data/test/fixtures/rails_api_doc/apis.yml +15 -0
  92. data/test/fixtures/rails_api_doc/failure_responses.yml +11 -0
  93. data/test/fixtures/rails_api_doc/parameters.yml +13 -0
  94. data/test/fixtures/rails_api_doc/projects.yml +9 -0
  95. data/test/fixtures/rails_api_doc/success_responses.yml +9 -0
  96. data/test/functional/rails_api_doc/apis_controller_test.rb +51 -0
  97. data/test/functional/rails_api_doc/parameters_controller_test.rb +51 -0
  98. data/test/functional/rails_api_doc/projects_controller_test.rb +51 -0
  99. data/test/integration/navigation_test.rb +10 -0
  100. data/test/rails_api_doc_test.rb +7 -0
  101. data/test/test_helper.rb +15 -0
  102. data/test/unit/helpers/rails_api_doc/apis_helper_test.rb +6 -0
  103. data/test/unit/helpers/rails_api_doc/parameters_helper_test.rb +6 -0
  104. data/test/unit/helpers/rails_api_doc/projects_helper_test.rb +6 -0
  105. data/test/unit/rails_api_doc/api_test.rb +9 -0
  106. data/test/unit/rails_api_doc/failure_response_test.rb +9 -0
  107. data/test/unit/rails_api_doc/parameter_test.rb +9 -0
  108. data/test/unit/rails_api_doc/project_test.rb +9 -0
  109. data/test/unit/rails_api_doc/success_response_test.rb +9 -0
  110. metadata +239 -0
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,56 @@
1
+ body { background-color: #fff; color: #333; }
2
+
3
+ body, p, ol, ul, td {
4
+ font-family: verdana, arial, helvetica, sans-serif;
5
+ font-size: 13px;
6
+ line-height: 18px;
7
+ }
8
+
9
+ pre {
10
+ background-color: #eee;
11
+ padding: 10px;
12
+ font-size: 11px;
13
+ }
14
+
15
+ a { color: #000; }
16
+ a:visited { color: #666; }
17
+ a:hover { color: #fff; background-color:#000; }
18
+
19
+ div.field, div.actions {
20
+ margin-bottom: 10px;
21
+ }
22
+
23
+ #notice {
24
+ color: green;
25
+ }
26
+
27
+ .field_with_errors {
28
+ padding: 2px;
29
+ background-color: red;
30
+ display: table;
31
+ }
32
+
33
+ #error_explanation {
34
+ width: 450px;
35
+ border: 2px solid red;
36
+ padding: 7px;
37
+ padding-bottom: 0;
38
+ margin-bottom: 20px;
39
+ background-color: #f0f0f0;
40
+ }
41
+
42
+ #error_explanation h2 {
43
+ text-align: left;
44
+ font-weight: bold;
45
+ padding: 5px 5px 5px 15px;
46
+ font-size: 12px;
47
+ margin: -7px;
48
+ margin-bottom: 0px;
49
+ background-color: #c00;
50
+ color: #fff;
51
+ }
52
+
53
+ #error_explanation ul li {
54
+ font-size: 12px;
55
+ list-style: square;
56
+ }
@@ -0,0 +1,149 @@
1
+ require_dependency "rails_api_doc/application_controller"
2
+
3
+ module RailsApiDoc
4
+ class ApisController < ApplicationController
5
+ # GET /apis
6
+ # GET /apis.json
7
+ def index
8
+ @project = Project.find params[:project_id]
9
+ @apis = @project.apis.page(params[:page]).per(RailsApiDoc::Api::DEFAULT_PAGE_SIZE)
10
+
11
+ respond_to do |format|
12
+ format.html # index.html.erb
13
+ format.json { render json: @apis }
14
+ end
15
+ end
16
+
17
+ # GET /apis/1
18
+ # GET /apis/1.json
19
+ def show
20
+ @project = Project.find params[:project_id]
21
+ @api = Api.find(params[:id])
22
+
23
+ respond_to do |format|
24
+ format.html # show.html.erb
25
+ format.json { render json: @api }
26
+ end
27
+ end
28
+
29
+ # GET /apis/new
30
+ # GET /apis/new.json
31
+ def new
32
+ @project = Project.find params[:project_id]
33
+ @api = @project.apis.new
34
+ @parameters = @api.parameters.build
35
+ @api.success_responses.build
36
+ @api.failure_responses.build
37
+
38
+ respond_to do |format|
39
+ format.html # new.html.erb
40
+ format.json { render json: @api }
41
+ end
42
+ end
43
+
44
+ # GET /apis/1/edit
45
+ def edit
46
+ @project = Project.find params[:project_id]
47
+ @api = Api.find(params[:id])
48
+ end
49
+
50
+ # POST /apis
51
+ # POST /apis.json
52
+ def create
53
+ @project = Project.find params[:project_id]
54
+ @api = @project.apis.new(params[:api])
55
+ # paramerer_attr = params[:api][:parameters_attributes].delete_if { |k, v| v["name"].blank? }
56
+ respond_to do |format|
57
+ if @api.save
58
+ # paramerer_attr.each do |k, v|
59
+ # debugger
60
+ # @api.parameters.create(v)
61
+ # end
62
+ format.html { redirect_to project_apis_path, notice: 'Api was successfully created.' }
63
+ format.json { render json: @api, status: :created, location: @api }
64
+ else
65
+ format.html { render action: "new" }
66
+ format.json { render json: @api.errors, status: :unprocessable_entity }
67
+ end
68
+ end
69
+ end
70
+
71
+ # PUT /apis/1
72
+ # PUT /apis/1.json
73
+ def update
74
+ @project = Project.find params[:project_id]
75
+ @api = @project.apis.find(params[:id])
76
+ # @api.parameters.build
77
+ respond_to do |format|
78
+ if @api.update_attributes(params[:api])
79
+ format.html { redirect_to project_api_path(@project, @api), notice: 'Api was successfully updated.' }
80
+ format.json { head :no_content }
81
+ else
82
+ format.html { render action: "edit" }
83
+ format.json { render json: @api.errors, status: :unprocessable_entity }
84
+ end
85
+ end
86
+ end
87
+
88
+ # DELETE /apis/1
89
+ # DELETE /apis/1.json
90
+ def destroy
91
+ @project = Project.find params[:project_id]
92
+ @api = @project.apis.find(params[:id])
93
+ @api.destroy
94
+
95
+ respond_to do |format|
96
+ format.html { redirect_to project_apis_path }
97
+ format.json { head :no_content }
98
+ end
99
+ end
100
+
101
+ def generate_doc
102
+ @project = Project.find params[:project_id]
103
+ puts "dir>>>>>>>>>>>>>>>#{Dir.pwd}"
104
+ project_name = @project.name.gsub(" ", "_")
105
+ _dir = "app/assets/projects/#{project_name}/"
106
+ unless File.directory?(_dir)
107
+ FileUtils.mkdir_p(_dir)
108
+ end
109
+ Dir.chdir(_dir) do
110
+ puts "dir>>>>>>>>>>>>>>>#{Dir.pwd}"
111
+ apis = @project.apis
112
+ data = ""
113
+ params = ""
114
+ unless apis.blank?
115
+ apis.each do |api|
116
+ data += '/**
117
+ * @api {' "#{api.request_type}" + '}' + " #{api.url}" + " #{api.name}" + "\n" +
118
+ '* @apiName' + " #{api.name}" + "\n" +
119
+ '* @apiGroup' + " #{api.api_group}" + "\n" +
120
+ '* @apiVersion' + " #{api.version}" + "\n" +
121
+ '*' + (val = api.parameters.blank? ? "\n" : api.parameters.map{|p| "\n" + '* @apiParam {' + "#{p.param_type}" + '}' + " #{p.name}" + " #{p.note}" }.join("")) + "\n" +
122
+ '* @apiSuccessExample Success-Response:' + (response = api.success_responses.blank? ? "\n" + "*" + "{}" : "\n" + api.success_responses.map{|p| "*" + (note = p.note.blank? ? "" : (p.note + "\n")) + "#{res = p.success_structure.gsub("\r\n", "\n*")}" + "\n"}.join("")) + "\n" +
123
+ '* @apiErrorExample Error-Response:' + (response = api.failure_responses.blank? ? "\n" + "*" + "{}" : "\n" + api.failure_responses.map{|p| "*" + (note = p.note.blank? ? "" : (p.note + "\n")) + "#{res = p.failure_structure.gsub("\r\n", "\n*")}" + "\n"}.join("")) + "\n" +
124
+ "*/" + "\n"
125
+ end
126
+
127
+ File.open("api.js", 'w+') {
128
+ |f| f.write("#{data}")
129
+ }
130
+
131
+ # write package file
132
+ package_data = '{
133
+ "name": '+ '"' + @project.name + ' APIDOC",
134
+ "version": "0.1.0",
135
+ "description": "Documentation for RESTful web APIs"
136
+ }'
137
+ File.open("package.json", 'w+') {
138
+ |f| f.write("#{package_data}")
139
+ }
140
+
141
+ end
142
+ system "apidoc"
143
+ end
144
+ flash[:notice] = "Api Doc Generated"
145
+ redirect_to project_apis_path(@project)
146
+ end
147
+ end
148
+
149
+ end
@@ -0,0 +1,4 @@
1
+ module RailsApiDoc
2
+ class ApplicationController < ActionController::Base
3
+ end
4
+ end
@@ -0,0 +1,87 @@
1
+ require_dependency "rails_api_doc/application_controller"
2
+
3
+ module RailsApiDoc
4
+ class ParametersController < ApplicationController
5
+ # GET /parameters
6
+ # GET /parameters.json
7
+ def index
8
+ @parameters = Parameter.all
9
+
10
+ respond_to do |format|
11
+ format.html # index.html.erb
12
+ format.json { render json: @parameters }
13
+ end
14
+ end
15
+
16
+ # GET /parameters/1
17
+ # GET /parameters/1.json
18
+ def show
19
+ @parameter = Parameter.find(params[:id])
20
+
21
+ respond_to do |format|
22
+ format.html # show.html.erb
23
+ format.json { render json: @parameter }
24
+ end
25
+ end
26
+
27
+ # GET /parameters/new
28
+ # GET /parameters/new.json
29
+ def new
30
+ @parameter = Parameter.new
31
+
32
+ respond_to do |format|
33
+ format.html # new.html.erb
34
+ format.json { render json: @parameter }
35
+ end
36
+ end
37
+
38
+ # GET /parameters/1/edit
39
+ def edit
40
+ @parameter = Parameter.find(params[:id])
41
+ end
42
+
43
+ # POST /parameters
44
+ # POST /parameters.json
45
+ def create
46
+ @parameter = Parameter.new(params[:parameter])
47
+
48
+ respond_to do |format|
49
+ if @parameter.save
50
+ format.html { redirect_to @parameter, notice: 'Parameter was successfully created.' }
51
+ format.json { render json: @parameter, status: :created, location: @parameter }
52
+ else
53
+ format.html { render action: "new" }
54
+ format.json { render json: @parameter.errors, status: :unprocessable_entity }
55
+ end
56
+ end
57
+ end
58
+
59
+ # PUT /parameters/1
60
+ # PUT /parameters/1.json
61
+ def update
62
+ @parameter = Parameter.find(params[:id])
63
+
64
+ respond_to do |format|
65
+ if @parameter.update_attributes(params[:parameter])
66
+ format.html { redirect_to @parameter, notice: 'Parameter was successfully updated.' }
67
+ format.json { head :no_content }
68
+ else
69
+ format.html { render action: "edit" }
70
+ format.json { render json: @parameter.errors, status: :unprocessable_entity }
71
+ end
72
+ end
73
+ end
74
+
75
+ # DELETE /parameters/1
76
+ # DELETE /parameters/1.json
77
+ def destroy
78
+ @parameter = Parameter.find(params[:id])
79
+ @parameter.destroy
80
+
81
+ respond_to do |format|
82
+ format.html { redirect_to parameters_url }
83
+ format.json { head :no_content }
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,87 @@
1
+ require_dependency "rails_api_doc/application_controller"
2
+
3
+ module RailsApiDoc
4
+ class ProjectsController < ApplicationController
5
+ # GET /projects
6
+ # GET /projects.json
7
+ def index
8
+ @projects = Project.all
9
+
10
+ respond_to do |format|
11
+ format.html # index.html.erb
12
+ format.json { render json: @projects }
13
+ end
14
+ end
15
+
16
+ # GET /projects/1
17
+ # GET /projects/1.json
18
+ def show
19
+ @project = Project.find(params[:id])
20
+
21
+ respond_to do |format|
22
+ format.html # show.html.erb
23
+ format.json { render json: @project }
24
+ end
25
+ end
26
+
27
+ # GET /projects/new
28
+ # GET /projects/new.json
29
+ def new
30
+ @project = Project.new
31
+
32
+ respond_to do |format|
33
+ format.html # new.html.erb
34
+ format.json { render json: @project }
35
+ end
36
+ end
37
+
38
+ # GET /projects/1/edit
39
+ def edit
40
+ @project = Project.find(params[:id])
41
+ end
42
+
43
+ # POST /projects
44
+ # POST /projects.json
45
+ def create
46
+ @project = Project.new(params[:project])
47
+
48
+ respond_to do |format|
49
+ if @project.save
50
+ format.html { redirect_to @project, notice: 'Project was successfully created.' }
51
+ format.json { render json: @project, status: :created, location: @project }
52
+ else
53
+ format.html { render action: "new" }
54
+ format.json { render json: @project.errors, status: :unprocessable_entity }
55
+ end
56
+ end
57
+ end
58
+
59
+ # PUT /projects/1
60
+ # PUT /projects/1.json
61
+ def update
62
+ @project = Project.find(params[:id])
63
+
64
+ respond_to do |format|
65
+ if @project.update_attributes(params[:project])
66
+ format.html { redirect_to @project, notice: 'Project was successfully updated.' }
67
+ format.json { head :no_content }
68
+ else
69
+ format.html { render action: "edit" }
70
+ format.json { render json: @project.errors, status: :unprocessable_entity }
71
+ end
72
+ end
73
+ end
74
+
75
+ # DELETE /projects/1
76
+ # DELETE /projects/1.json
77
+ def destroy
78
+ @project = Project.find(params[:id])
79
+ @project.destroy
80
+
81
+ respond_to do |format|
82
+ format.html { redirect_to projects_url }
83
+ format.json { head :no_content }
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,29 @@
1
+ module RailsApiDoc
2
+ module ApisHelper
3
+
4
+ def link_to_add_fields(name, f, association)
5
+ new_object = f.object.class.reflect_on_association(association).klass.new
6
+ fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
7
+ render(association.to_s.singularize + "_fields", :f => builder)
8
+ end
9
+ link_to_function(name, ("add_fields(this, '#{association}', '#{escape_javascript(fields)}')"))
10
+ end
11
+
12
+ def link_to_add_success_fields(name, f, association)
13
+ new_object = f.object.class.reflect_on_association(association).klass.new
14
+ fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
15
+ render(association.to_s.singularize + "_fields", :f => builder)
16
+ end
17
+ link_to_function(name, ("add_success_fields(this, '#{association}', '#{escape_javascript(fields)}')"))
18
+ end
19
+
20
+ def link_to_add_failure_fields(name, f, association)
21
+ new_object = f.object.class.reflect_on_association(association).klass.new
22
+ fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
23
+ render(association.to_s.singularize + "_fields", :f => builder)
24
+ end
25
+ link_to_function(name, ("add_failure_fields(this, '#{association}', '#{escape_javascript(fields)}')"))
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,4 @@
1
+ module RailsApiDoc
2
+ module ApplicationHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module RailsApiDoc
2
+ module ParametersHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module RailsApiDoc
2
+ module ProjectsHelper
3
+ end
4
+ end