Add Iroquois/Powow API mocking entrypoint
This commit is contained in:
@ -1,6 +1,9 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"gitlab.com/wpetit/goweb/template/html"
|
||||
|
||||
"forge.cadoles.com/Cadoles/fake-sms/internal/command"
|
||||
@ -22,6 +25,14 @@ func getServiceContainer(conf *config.Config) (*service.Container, error) {
|
||||
// Create and expose template service provider
|
||||
ctn.Provide(template.ServiceName, html.ServiceProvider(
|
||||
html.NewDirectoryLoader(conf.HTTP.TemplateDir),
|
||||
html.WithHelper("toPrettyJSON", func(data interface{}) (string, error) {
|
||||
json, err := json.MarshalIndent(data, "", " ")
|
||||
if err != nil {
|
||||
return "", errors.WithStack(err)
|
||||
}
|
||||
|
||||
return string(json), nil
|
||||
}),
|
||||
))
|
||||
|
||||
// Create and expose config service provider
|
||||
|
@ -16,8 +16,9 @@
|
||||
<table class="outbox table is-fullwidth is-striped is-hoverable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="sms-to">Recipient</th>
|
||||
<th class="sms-sentat">Date</th>
|
||||
<th class="sms-from">From</th>
|
||||
<th class="sms-recipient">Recipient</th>
|
||||
<th class="sms-sentat">Sent At</th>
|
||||
<th class="sms-actions"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@ -26,10 +27,11 @@
|
||||
<tr data-controller="inbox-entry"
|
||||
data-action="click->outbox-entry#onClick"
|
||||
data-inbox-entry-link="./sms/{{ .ID }}">
|
||||
<td class="sms-from">
|
||||
<span class="is-size-7">{{ .From }}</span>
|
||||
</td>
|
||||
<td class="sms-recipient">
|
||||
{{range .Recipient}}
|
||||
<span class="tag">{{ .Recipient }}</span>
|
||||
{{end}}
|
||||
<span class="tag">{{ .Recipient }}</span>
|
||||
</td>
|
||||
<td class="sms-sentat">
|
||||
<span class="is-size-7">{{ .SentAt.Format "02/01/2006 15:04:05"}}</span>
|
||||
|
@ -1,8 +1,8 @@
|
||||
{{define "title"}}Email - FakeSMTP{{end}}
|
||||
{{define "title"}}SMS - FakeSMTP{{end}}
|
||||
{{define "header_buttons"}}
|
||||
<button class="button is-danger"
|
||||
data-controller="restful"
|
||||
data-restful-endpoint="./{{ .Email.ID }}"
|
||||
data-restful-endpoint="./{{ .SMS.ID }}"
|
||||
data-restful-method="DELETE"
|
||||
data-restful-redirect="../">
|
||||
🗑️ Delete
|
||||
@ -16,40 +16,21 @@
|
||||
<div class="column">
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<h4 class="title is-size-4">Email</h4>
|
||||
{{template "email_head" .}}
|
||||
<h4 class="title is-size-4">SMS</h4>
|
||||
{{template "sms_head" .}}
|
||||
</div>
|
||||
{{if .Email.Attachments}}
|
||||
<div class="column is-narrow">
|
||||
<h4 class="title is-size-4">Attachments ({{len .Email.Attachments}})</h4>
|
||||
<ul>
|
||||
{{ $email := .Email }}
|
||||
{{range $i, $a := .Email.Attachments}}
|
||||
<li><a href="{{ $email.ID }}/attachments/{{ $i }}" download="{{ $a.Name }}">{{ $a.Name }}</a></li>
|
||||
{{end}}
|
||||
</ul>
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
<div data-controller="tabs">
|
||||
<div class="tabs">
|
||||
<ul>
|
||||
<li data-action="click->tabs#openTab" data-target="tabs.tab" data-tabs-name="html" {{if .Email.HTML}}class="is-active"{{end}}><a>HTML</a></li>
|
||||
<li data-action="click->tabs#openTab" data-target="tabs.tab" data-tabs-name="text" {{if not .Email.HTML}}class="is-active"{{end}}><a>Text</a></li>
|
||||
<li data-action="click->tabs#openTab" data-target="tabs.tab" data-tabs-name="headers"><a>Headers</a></li>
|
||||
<li data-action="click->tabs#openTab" data-target="tabs.tab" data-tabs-name="text" class="is-active"><a>Body</a></li>
|
||||
<li data-action="click->tabs#openTab" data-target="tabs.tab" data-tabs-name="metadata"><a>Metadata</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<iframe data-target="tabs.tabContent" data-tabs-for="html"
|
||||
frameborder="0"
|
||||
data-controller="iframe"
|
||||
data-action="load->iframe#onLoad"
|
||||
style="width:100%;{{if not .Email.HTML}}display:none;{{end}}"
|
||||
src="{{ .Email.ID }}/html">
|
||||
</iframe>
|
||||
<div data-target="tabs.tabContent" data-tabs-for="text" style="{{if .Email.HTML}}display:none;{{end}}width:100%;overflow:hidden;">
|
||||
<pre style="white-space:pre-line;">{{ .Email.Text }}</pre>
|
||||
<div data-target="tabs.tabContent" data-tabs-for="text" style="width:100%;overflow:hidden;">
|
||||
<pre style="white-space:pre-line;">{{ .SMS.Body }}</pre>
|
||||
</div>
|
||||
<div data-target="tabs.tabContent" data-tabs-for="headers" style="display:none">
|
||||
<div data-target="tabs.tabContent" data-tabs-for="metadata" style="display:none">
|
||||
<div class="table-container">
|
||||
<table class="table is-striped is-hoverable is-fullwidth">
|
||||
<thead>
|
||||
@ -59,13 +40,11 @@
|
||||
<tr>
|
||||
<thead>
|
||||
<tbody>
|
||||
{{range $k, $v := .Email.Headers}}
|
||||
{{range $k, $v := .SMS.Metadata}}
|
||||
<tr>
|
||||
<td><code>{{ $k }}</code></td>
|
||||
<td>
|
||||
{{range $v}}
|
||||
<code>{{ . }}</code>
|
||||
{{end}}
|
||||
<code>{{ toPrettyJSON . }}</code>
|
||||
</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
@ -81,61 +60,30 @@
|
||||
</div>
|
||||
</section>
|
||||
{{end}}
|
||||
{{define "email_head"}}
|
||||
{{define "sms_head"}}
|
||||
<div class="columns">
|
||||
<div class="column is-1">
|
||||
<h5 class="is-size-5">From</h5>
|
||||
</div>
|
||||
<div class="column">
|
||||
{{template "email_adresses" .Email.From}}
|
||||
<span class="tag is-large">{{.SMS.From}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columns">
|
||||
<div class="column is-1">
|
||||
<h5 class="is-size-5">To</h5>
|
||||
<h5 class="is-size-5">Recipient</h5>
|
||||
</div>
|
||||
<div class="column">
|
||||
{{template "email_adresses" .Email.To}}
|
||||
<span class="tag is-large">{{.SMS.Recipient}}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{if .Email.Cc }}
|
||||
<div class="columns">
|
||||
<div class="column is-1">
|
||||
<h5 class="is-size-5">Cc</h5>
|
||||
<h5 class="is-size-5">Sent At</h5>
|
||||
</div>
|
||||
<div class="column">
|
||||
{{template "email_adresses" .Email.Cc}}
|
||||
<p class="is-size-5">{{ .SMS.SentAt.Format "02/01/2006 15:04:05"}}</p>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
{{if .Email.Cci }}
|
||||
<div class="columns">
|
||||
<div class="column is-1">
|
||||
<h5 class="is-size-5">Cci</h5>
|
||||
</div>
|
||||
<div class="column">
|
||||
{{template "email_adresses" .Email.Cci}}
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="columns">
|
||||
<div class="column is-1">
|
||||
<h5 class="is-size-5">Subject</h5>
|
||||
</div>
|
||||
<div class="column">
|
||||
<p class="is-size-5">{{.Email.Subject}}</p>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
{{define "email_adresses"}}
|
||||
{{- range .}}
|
||||
<span class="tag">
|
||||
{{- if .Name -}}
|
||||
{{.Name}} <{{.Address}}>
|
||||
{{- else -}}
|
||||
{{.Address}}
|
||||
{{- end -}}
|
||||
</span>
|
||||
{{- end -}}
|
||||
{{end}}
|
||||
{{template "base" .}}
|
Reference in New Issue
Block a user