Skip to content

Commit c8315f5

Browse files
committed
Add docs endpoint
1 parent 1ea0ef4 commit c8315f5

File tree

7 files changed

+187
-0
lines changed

7 files changed

+187
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
arduino-create-agent

app/controllers.go

Lines changed: 52 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/test/public_testing.go

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

design/design.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,10 @@ var _ = API("arduino-create-agent", func() {
2020
Credentials()
2121
})
2222
})
23+
24+
var _ = Resource("public", func() {
25+
Metadata("swagger:generate", "false")
26+
27+
Files("swagger.json", "swagger/swagger.json")
28+
Files("docs", "templates/docs.html")
29+
})

main.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package main
44

55
import (
6+
"github.com/arduino/arduino-create-agent/app"
67
"github.com/goadesign/goa"
78
"github.com/goadesign/goa/middleware"
89
)
@@ -17,6 +18,10 @@ func main() {
1718
service.Use(middleware.ErrorHandler(service, true))
1819
service.Use(middleware.Recover())
1920

21+
// Mount "public" controller
22+
public := NewPublicController(service)
23+
app.MountPublicController(service, public)
24+
2025
// Start service
2126
if err := service.ListenAndServe(":9000"); err != nil {
2227
service.LogError("startup", "err", err)

public.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package main
2+
3+
import (
4+
"github.com/goadesign/goa"
5+
)
6+
7+
// PublicController implements the public resource.
8+
type PublicController struct {
9+
*goa.Controller
10+
}
11+
12+
// NewPublicController creates a public controller.
13+
func NewPublicController(service *goa.Service) *PublicController {
14+
return &PublicController{Controller: service.NewController("PublicController")}
15+
}

templates/docs.html

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Auth API Documentation</title>
6+
<link rel="icon" type="image/png" href="https://www.arduino.cc/favicon.ico" sizes="32x32" />
7+
<link rel="icon" type="image/png" href="https://www.arduino.cc/favicon.ico" sizes="16x16" />
8+
<link href='https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.css' media='screen' rel='stylesheet' type='text/css'/>
9+
<link href='https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/2.2.10/css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
10+
11+
<script src='https://content.arduino.cc/swagger-ui/object-assign-pollyfill.js' type='text/javascript'></script>
12+
<script src='https://content.arduino.cc/swagger-ui/jquery-1.8.0.min.js' type='text/javascript'></script>
13+
<script src='https://content.arduino.cc/swagger-ui/jquery.slideto.min.js' type='text/javascript'></script>
14+
<script src='https://content.arduino.cc/swagger-ui/jquery.wiggle.min.js' type='text/javascript'></script>
15+
<script src='https://content.arduino.cc/swagger-ui/jquery.ba-bbq.min.js' type='text/javascript'></script>
16+
<script src='https://content.arduino.cc/swagger-ui/handlebars-4.0.5.js' type='text/javascript'></script>
17+
<script src='https://content.arduino.cc/swagger-ui/lodash.min.js' type='text/javascript'></script>
18+
<script src='https://content.arduino.cc/swagger-ui/backbone-min.js' type='text/javascript'></script>
19+
<script src='https://content.arduino.cc/swagger-ui/swagger-ui.js' type='text/javascript'></script>
20+
<script src='https://content.arduino.cc/swagger-ui/highlight.9.1.0.pack.js' type='text/javascript'></script>
21+
<script src='https://content.arduino.cc/swagger-ui/highlight.9.1.0.pack_extended.js' type='text/javascript'></script>
22+
<script src='https://content.arduino.cc/swagger-ui/jsoneditor.min.js' type='text/javascript'></script>
23+
<script src='https://content.arduino.cc/swagger-ui/marked.js' type='text/javascript'></script>
24+
<script src='https://content.arduino.cc/swagger-ui/swagger-oauth.js' type='text/javascript'></script>
25+
26+
27+
<script type="text/javascript">
28+
$(function () {
29+
var url = window.location.search.match(/url=([^&]+)/);
30+
if (url && url.length > 1) {
31+
url = decodeURIComponent(url[1]);
32+
} else {
33+
url = "/swagger.json";
34+
}
35+
36+
hljs.configure({
37+
highlightSizeThreshold: 5000
38+
});
39+
40+
// Pre load translate...
41+
if(window.SwaggerTranslator) {
42+
window.SwaggerTranslator.translate();
43+
}
44+
window.swaggerUi = new SwaggerUi({
45+
url: url,
46+
dom_id: "swagger-ui-container",
47+
supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],
48+
onComplete: function(swaggerApi, swaggerUi){
49+
if(typeof initOAuth == "function") {
50+
initOAuth({
51+
clientId: "your-client-id",
52+
clientSecret: "your-client-secret-if-required",
53+
realm: "your-realms",
54+
appName: "your-app-name",
55+
scopeSeparator: " ",
56+
additionalQueryStringParams: {}
57+
});
58+
}
59+
60+
if(window.SwaggerTranslator) {
61+
window.SwaggerTranslator.translate();
62+
}
63+
},
64+
onFailure: function(data) {
65+
log("Unable to Load SwaggerUI");
66+
},
67+
docExpansion: "none",
68+
jsonEditor: false,
69+
defaultModelRendering: 'schema',
70+
showRequestHeaders: false
71+
});
72+
73+
window.swaggerUi.load();
74+
75+
function log() {
76+
if ('console' in window) {
77+
console.log.apply(console, arguments);
78+
}
79+
}
80+
});
81+
</script>
82+
</head>
83+
84+
<body class="swagger-section">
85+
<div id='header'>
86+
<div class="swagger-ui-wrap">
87+
<a id="logo" href="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/2.2.10/images/logo_small.png"><img class="logo__img" alt="swagger" height="30" width="30" src="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/2.2.10/images/logo_small.png" /><span class="logo__title">swagger</span></a>
88+
<form id='api_selector'>
89+
<div class='input'><input placeholder="https://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div>
90+
<div id='auth_container'></div>
91+
<div class='input'><a id="explore" class="header__btn" href="assets/#" data-sw-translate>Explore</a></div>
92+
</form>
93+
</div>
94+
</div>
95+
96+
<div id="message-bar" class="swagger-ui-wrap" data-sw-translate>&nbsp;</div>
97+
<div id="swagger-ui-container" class="swagger-ui-wrap"></div>
98+
</body>
99+
</html>

0 commit comments

Comments
 (0)