mhoppa commented on a change in pull request #3989: Rewrote 
/deliveryservices/request to Go
URL: https://github.com/apache/trafficcontrol/pull/3989#discussion_r335215132
 
 

 ##########
 File path: lib/go-tc/deliveryservice_requests.go
 ##########
 @@ -20,15 +20,264 @@ import (
        "encoding/json"
        "errors"
        "fmt"
+       "html/template"
        "strconv"
        "strings"
 
        log "github.com/apache/trafficcontrol/lib/go-log"
 )
 
+// EmailTemplate is an html/template.Template for formatting 
DeliveryServiceRequestRequests into
+// text/html email bodies. Its direct use is discouraged, instead use
+// DeliveryServiceRequestRequest.Format.
+var EmailTemplate = template.Must(template.New("Email 
Template").Parse(`<!DOCTYPE html>
+<html lang="en-US">
+<head>
+<meta charset="utf-8"/>
+<title>Delivery Service Request for {{.Customer}}</title>
+<style>
+aside {
+       padding: 0 1em;
+       color: #6A737D;
+       border-left: .25em solid #DFE2E5;
+}
+body {
+       font-family: sans;
+       background-color: white;
+}
+pre {
+       padding: 5px;
+       background-color: lightgray;
+}
+</style>
+</head>
+<body>
+<h1>Delivery Service Request for {{.Customer}}</h1>
+<p>{{.ServiceDesc}}</p>
+<section>
+       <details>
+               <summary><h2>Service Description</h2></summary>
+               <h3>Content Type</h3>
+               <p>{{.ContentType}}</p>
+               <h3>Delivery Protocol</h3>
+               <p>{{.DeliveryProtocol.String}}</p>
+               <h3>Routing Type</h3>
+               <p>{{.RoutingType.String}}</p>
+       </details>
+</section>
+<section>
+       <details>
+               <summary><h2>Traffic &amp; Library Estimates</h2></summary>
+               <h3>Peak Bandwidth Estimate</h3>
+               <p>{{.PeakBPSEstimate}}Bps</p>
+               <h3>Peak Transactions per Second Estimate</h3>
+               <p>{{.PeakTPSEstimate}}Tps</p>
+               <h3>Max Library Size Estimate</h3>
+               <p>{{.MaxLibrarySizeEstimate}}GB</p>
+       </details>
+</section>
+<section>
+       <details>
+               <summary><h2>Origin Security</h2></summary>
+               <h3>Origin Server URL</h3>
+               <p><a href="{{.OriginURL}}">{{.OriginURL}}</a></p>
+               <h3>Origin Dynamic Remap</h3>
+               <p>{{.HasOriginDynamicRemap}}</p>
+               <h3>Origin Test File</h3>
+               <p>{{.OriginTestFile}}</p>
+               <h3>ACL/Whitelist to Access Origin</h3>
+               <p>{{.HasOriginACLWhitelist}}</p>
+               {{if .OriginHeaders}}<h3>Header(s) to Access Origin</h3>
+               <ul>{{range .OriginHeaders}}
+                       <li>{{.}}</li>{{end}}
+               </ul>{{end}}
+               <h3>Other Origin Security</h3>
+               <p>{{if 
.OtherOriginSecurity}}{{.OtherOriginSecurity}}{{else}}None{{end}}</p>
+       </details>
+</section>
+<section>
+       <details>
+               <summary><h2>Core Features</h2></summary>
+               <h3>Query String Handling</h3>
+               <p>{{.QueryStringHandling}}</p>
+               <h3>Range Request Handling</h3>
+               <p>{{.RangeRequestHandling}}</p>
+               <h3>Signed URLs / URL Tokenization</h3>
+               <p>{{.HasSignedURLs}}</p>
+               <h3>Negative Caching Customization</h3>
+               <p>{{.HasNegativeCachingCustomization}}</p>
+               {{if or .HasNegativeCachingCustomization 
.NegativeCachingCustomizationNote }}<aside>
+                       <p>{{.NegativeCachingCustomizationNote}}</p>
+               </aside>{{else if .HasNegativeCachingCustomization}}<aside>
+                       <p><b>No instructions given!</b></p>
+               </aside>{{end}}
+               {{if .ServiceAliases}}<h3>Service Aliases</h3>
+               <ul>{{range .ServiceAliases}}
+                       <li>{{.}}</li>{{end}}
+               </ul>{{end}}
+       </details>
+</section>
+{{if or .RateLimitingGBPS .RateLimitingTPS .OverflowService}}<section>
+       <details>
+               <summary><h2>Service Limits</h2></summary>
+               {{if .RateLimitingGBPS}}<h3>Bandwidth Limit</h3>
+               <p>{{.RateLimitingGBPS}}GBps</p>{{end}}
+               {{if .RateLimitingTPS}}<h3>Transactions per Second Limit</h3>
+               <p>{{.RateLimitingTPS}}Tps</p>{{end}}
+               {{if .OverflowService}}<h3>Overflow Service</h3>
+               <p>{{.OverflowService}}</p>{{end}}
+       </details>
+</section>{{end}}
+{{if or .HeaderRewriteEdge .HeaderRewriteMid 
.HeaderRewriteRedirectRouter}}<section>
+       <details>
+               <summary><h2>Header Customization</h2></summary>
+               {{if .HeaderRewriteEdge}}<h3>Header Rewrite - Edge Tier</h3>
+               <pre>{{.HeaderRewriteEdge}}</pre>{{end}}
+               {{if .HeaderRewriteMid}}<h3>Header Rewrite - Mid Tier</h3>
+               <pre>{{.HeaderRewriteMid}}</pre>{{end}}
+               {{if .HeaderRewriteRedirectRouter}}<h3>Header Rewrite - 
Router</h3>
+               <pre>{{.HeaderRewriteRedirectRouter}}</pre>{{end}}
+       </details>
+</section>{{end}}
+{{if .Notes}}<section>
+       <details>
+               <summary><h2>Additional Notes</h2></summary>
+               <p>{{.Notes}}</p>
+       </details>
+</section>{{end}}
+</body>
+</html>
+`))
+
 // IDNoMod type is used to suppress JSON unmarshalling
 type IDNoMod int
 
+// DeliveryServiceRequestRequest is a literal request to make a Delivery 
Service.
+type DeliveryServiceRequestRequest struct {
+       // EmailTo is the email address that is ultimately the destination of a 
formatted DeliveryServiceRequestRequest.
+       EmailTo string `json:"emailTo"`
+       // Details holds the actual request in a data structure.
+       Details DeliveryServiceRequestDetails `json:"details"`
+}
+
+// DeliveryServiceRequestDetails
+type DeliveryServiceRequestDetails struct {
+       // ContentType is the type of content to be delivered, e.g. "static", 
"VOD" etc.
+       ContentType string `json:"contentType"`
+       // Customer is the requesting customer - typically this is a Tenant.
+       Customer string `json:"customer"`
 
 Review comment:
   Nah no need I won’t block it. 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to