initial commits
parent
6cbe8f2b35
commit
fa4898e9e6
|
@ -0,0 +1,9 @@
|
||||||
|
package frameproto
|
||||||
|
|
||||||
|
import (
|
||||||
|
"sourcecode.social/reiver/go-erorr"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
errNilWriter = erorr.Error("frameproto: nil writer")
|
||||||
|
)
|
|
@ -0,0 +1,69 @@
|
||||||
|
package frameproto
|
||||||
|
|
||||||
|
//
|
||||||
|
type FrameWriter interface {
|
||||||
|
// <meta property="fc:frame" content="{{version}}" />
|
||||||
|
WriteFrame(version string) error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// <meta property="fc:frame:button:1" content="{{label}}" />
|
||||||
|
WriteFrameButton1(label string) error
|
||||||
|
|
||||||
|
// <meta property="fc:frame:button:1:action" content="{{action}}" />
|
||||||
|
WriteFrameButton1Action(action string) error
|
||||||
|
|
||||||
|
// <meta property="fc:frame:button:1:target" content="{{target}}" />
|
||||||
|
WriteFrameButton1Target(buttonTarget string) error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// <meta property="fc:frame:button:2" content="{{label}}" />
|
||||||
|
WriteFrameButton2(label string) error
|
||||||
|
|
||||||
|
// <meta property="fc:frame:button:2:action" content="{{action}}" />
|
||||||
|
WriteFrameButton2Action(action string) error
|
||||||
|
|
||||||
|
// <meta property="fc:frame:button:2:target" content="{{target}}" />
|
||||||
|
WriteFrameButton2Target(target string) error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// <meta property="fc:frame:button:3" content="{{label}}" />
|
||||||
|
WriteFrameButton3(label string) error
|
||||||
|
|
||||||
|
// <meta property="fc:frame:button:3:action" content="{{action}}" />
|
||||||
|
WriteFrameButton3Action(buttonAction string) error
|
||||||
|
|
||||||
|
// <meta property="fc:frame:button:3:target" content="{{target}}" />
|
||||||
|
WriteFrameButton3Target(buttonTarget string) error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// <meta property="fc:frame:button:4" content="{{label}}" />
|
||||||
|
WriteFrameButton4(label string) error
|
||||||
|
|
||||||
|
// <meta property="fc:frame:button:4:action" content="{{action}}" />
|
||||||
|
WriteFrameButton4Action(action string) error
|
||||||
|
|
||||||
|
// <meta property="fc:frame:button:4:target" content="{{target}}" />
|
||||||
|
WriteFrameButton4Target(target string) error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// <meta property="fc:frame:image" content="{{url}}" />
|
||||||
|
WriteFrameImage(url string) error
|
||||||
|
|
||||||
|
// <meta property="fc:frame:image:aspect_ratio" content="{{aspectRatio}}" />
|
||||||
|
WriteFrameImageAspectRatio(aspectRatio string) error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// <meta property="fc:frame:input:text" content="{{label}}" />
|
||||||
|
WriteFrameInputText(label string) error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// <meta property="fc:frame:post_url" content="{{url}}" />
|
||||||
|
WriteFramePostURL(url string) error
|
||||||
|
}
|
|
@ -0,0 +1,101 @@
|
||||||
|
package frameproto
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
)
|
||||||
|
|
||||||
|
type internalFrameWriter struct {
|
||||||
|
writer io.Writer
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ FrameWriter = internalFrameWriter{}
|
||||||
|
|
||||||
|
func CreateFrameWriter(writer io.Writer) FrameWriter {
|
||||||
|
return internalFrameWriter{
|
||||||
|
writer:writer,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrame(version string) error {
|
||||||
|
return WriteFrame(receiver.writer, version)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameButton1(label string) error {
|
||||||
|
return WriteFrameButton1(receiver.writer, label)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameButton1Action(label string) error {
|
||||||
|
return WriteFrameButton1Action(receiver.writer, label)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameButton1Target(target string) error {
|
||||||
|
return WriteFrameButton1Target(receiver.writer, target)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameButton2(label string) error {
|
||||||
|
return WriteFrameButton2(receiver.writer, label)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameButton2Action(label string) error {
|
||||||
|
return WriteFrameButton2Action(receiver.writer, label)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameButton2Target(target string) error {
|
||||||
|
return WriteFrameButton2Target(receiver.writer, target)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameButton3(label string) error {
|
||||||
|
return WriteFrameButton3(receiver.writer, label)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameButton3Action(label string) error {
|
||||||
|
return WriteFrameButton3Action(receiver.writer, label)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameButton3Target(target string) error {
|
||||||
|
return WriteFrameButton3Target(receiver.writer, target)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameButton4(label string) error {
|
||||||
|
return WriteFrameButton4(receiver.writer, label)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameButton4Action(label string) error {
|
||||||
|
return WriteFrameButton4Action(receiver.writer, label)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameButton4Target(target string) error {
|
||||||
|
return WriteFrameButton4Target(receiver.writer, target)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameImage(url string) error {
|
||||||
|
return WriteFrameImage(receiver.writer, url)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameImageAspectRatio(aspectRatio string) error {
|
||||||
|
return WriteFrameImageAspectRatio(receiver.writer, aspectRatio)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFrameInputText(label string) error {
|
||||||
|
return WriteFrameInputText(receiver.writer, label)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func (receiver internalFrameWriter) WriteFramePostURL(url string) error {
|
||||||
|
return WriteFramePostURL(receiver.writer, url)
|
||||||
|
}
|
|
@ -22,7 +22,7 @@ import (
|
||||||
// Which in code would be used as:
|
// Which in code would be used as:
|
||||||
//
|
//
|
||||||
// str := frameproto.WriteFrame(writer, frameproto.VersionVNext)
|
// str := frameproto.WriteFrame(writer, frameproto.VersionVNext)
|
||||||
func WriteFrame(writer io.Writer, version string) {
|
func WriteFrame(writer io.Writer, version string) error {
|
||||||
const property string = MetaPropertyFrame
|
const property string = MetaPropertyFrame
|
||||||
writeMetaPropertyContent(writer, property, version)
|
return writeMetaPropertyContent(writer, property, version)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
// Would write this HTML <meta/> element:
|
// Would write this HTML <meta/> element:
|
||||||
//
|
//
|
||||||
// <meta property="fc:frame:button:1" content="go forward" />
|
// <meta property="fc:frame:button:1" content="go forward" />
|
||||||
func WriteFrameButton1(writer io.Writer, label string) {
|
func WriteFrameButton1(writer io.Writer, label string) error {
|
||||||
const property string = MetaPropertyFrameButton1
|
const property string = MetaPropertyFrameButton1
|
||||||
writeMetaPropertyContent(writer, property, label)
|
return writeMetaPropertyContent(writer, property, label)
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ import (
|
||||||
//
|
//
|
||||||
// // <meta property="fc:frame:button:1:action" content="post_redirect" />
|
// // <meta property="fc:frame:button:1:action" content="post_redirect" />
|
||||||
// frameproto.WriteFrameButton1Action(writer, frameproto.ButtonActionPostRedirect)
|
// frameproto.WriteFrameButton1Action(writer, frameproto.ButtonActionPostRedirect)
|
||||||
func WriteFrameButton1Action(writer io.Writer, action string) {
|
func WriteFrameButton1Action(writer io.Writer, action string) error {
|
||||||
const property string = MetaPropertyFrameButton1Action
|
const property string = MetaPropertyFrameButton1Action
|
||||||
writeMetaPropertyContent(writer, property, action)
|
return writeMetaPropertyContent(writer, property, action)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
// Would write this HTML <meta/> element:
|
// Would write this HTML <meta/> element:
|
||||||
//
|
//
|
||||||
// <meta property="fc:frame:button:1:target" content="https://example.com/thing/do-it" />
|
// <meta property="fc:frame:button:1:target" content="https://example.com/thing/do-it" />
|
||||||
func WriteFrameButton1Target(writer io.Writer, target string) {
|
func WriteFrameButton1Target(writer io.Writer, target string) error {
|
||||||
const property string = MetaPropertyFrameButton1Target
|
const property string = MetaPropertyFrameButton1Target
|
||||||
writeMetaPropertyContent(writer, property, target)
|
return writeMetaPropertyContent(writer, property, target)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
// Would write this HTML <meta/> element:
|
// Would write this HTML <meta/> element:
|
||||||
//
|
//
|
||||||
// <meta property="fc:frame:button:2" content="go forward" />
|
// <meta property="fc:frame:button:2" content="go forward" />
|
||||||
func WriteFrameButton2(writer io.Writer, label string) {
|
func WriteFrameButton2(writer io.Writer, label string) error {
|
||||||
const property string = MetaPropertyFrameButton2
|
const property string = MetaPropertyFrameButton2
|
||||||
writeMetaPropertyContent(writer, property, label)
|
return writeMetaPropertyContent(writer, property, label)
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ import (
|
||||||
//
|
//
|
||||||
// // <meta property="fc:frame:button:2:action" content="post_redirect" />
|
// // <meta property="fc:frame:button:2:action" content="post_redirect" />
|
||||||
// frameproto.WriteFrameButton2Action(writer, frameproto.ButtonActionPostRedirect)
|
// frameproto.WriteFrameButton2Action(writer, frameproto.ButtonActionPostRedirect)
|
||||||
func WriteFrameButton2Action(writer io.Writer, action string) {
|
func WriteFrameButton2Action(writer io.Writer, action string) error {
|
||||||
const property string = MetaPropertyFrameButton2Action
|
const property string = MetaPropertyFrameButton2Action
|
||||||
writeMetaPropertyContent(writer, property, action)
|
return writeMetaPropertyContent(writer, property, action)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
// Would write this HTML <meta/> element:
|
// Would write this HTML <meta/> element:
|
||||||
//
|
//
|
||||||
// <meta property="fc:frame:button:2:target" content="https://example.com/thing/do-it" />
|
// <meta property="fc:frame:button:2:target" content="https://example.com/thing/do-it" />
|
||||||
func WriteFrameButton2Target(writer io.Writer, target string) {
|
func WriteFrameButton2Target(writer io.Writer, target string) error {
|
||||||
const property string = MetaPropertyFrameButton2Target
|
const property string = MetaPropertyFrameButton2Target
|
||||||
writeMetaPropertyContent(writer, property, target)
|
return writeMetaPropertyContent(writer, property, target)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
// Would write this HTML <meta/> element:
|
// Would write this HTML <meta/> element:
|
||||||
//
|
//
|
||||||
// <meta property="fc:frame:button:3" content="go forward" />
|
// <meta property="fc:frame:button:3" content="go forward" />
|
||||||
func WriteFrameButton3(writer io.Writer, label string) {
|
func WriteFrameButton3(writer io.Writer, label string) error {
|
||||||
const property string = MetaPropertyFrameButton3
|
const property string = MetaPropertyFrameButton3
|
||||||
writeMetaPropertyContent(writer, property, label)
|
return writeMetaPropertyContent(writer, property, label)
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ import (
|
||||||
//
|
//
|
||||||
// // <meta property="fc:frame:button:3:action" content="post_redirect" />
|
// // <meta property="fc:frame:button:3:action" content="post_redirect" />
|
||||||
// frameproto.WriteFrameButton3Action(writer, frameproto.ButtonActionPostRedirect)
|
// frameproto.WriteFrameButton3Action(writer, frameproto.ButtonActionPostRedirect)
|
||||||
func WriteFrameButton3Action(writer io.Writer, action string) {
|
func WriteFrameButton3Action(writer io.Writer, action string) error {
|
||||||
const property string = MetaPropertyFrameButton3Action
|
const property string = MetaPropertyFrameButton3Action
|
||||||
writeMetaPropertyContent(writer, property, action)
|
return writeMetaPropertyContent(writer, property, action)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
// Would write this HTML <meta/> element:
|
// Would write this HTML <meta/> element:
|
||||||
//
|
//
|
||||||
// <meta property="fc:frame:button:3:target" content="https://example.com/thing/do-it" />
|
// <meta property="fc:frame:button:3:target" content="https://example.com/thing/do-it" />
|
||||||
func WriteFrameButton3Target(writer io.Writer, target string) {
|
func WriteFrameButton3Target(writer io.Writer, target string) error {
|
||||||
const property string = MetaPropertyFrameButton3Target
|
const property string = MetaPropertyFrameButton3Target
|
||||||
writeMetaPropertyContent(writer, property, target)
|
return writeMetaPropertyContent(writer, property, target)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
// Would write this HTML <meta/> element:
|
// Would write this HTML <meta/> element:
|
||||||
//
|
//
|
||||||
// <meta property="fc:frame:button:4" content="go forward" />
|
// <meta property="fc:frame:button:4" content="go forward" />
|
||||||
func WriteFrameButton4(writer io.Writer, label string) {
|
func WriteFrameButton4(writer io.Writer, label string) error {
|
||||||
const property string = MetaPropertyFrameButton4
|
const property string = MetaPropertyFrameButton4
|
||||||
writeMetaPropertyContent(writer, property, label)
|
return writeMetaPropertyContent(writer, property, label)
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ import (
|
||||||
//
|
//
|
||||||
// // <meta property="fc:frame:button:4:action" content="post_redirect" />
|
// // <meta property="fc:frame:button:4:action" content="post_redirect" />
|
||||||
// frameproto.WriteFrameButton4Action(writer, frameproto.ButtonActionPostRedirect)
|
// frameproto.WriteFrameButton4Action(writer, frameproto.ButtonActionPostRedirect)
|
||||||
func WriteFrameButton4Action(writer io.Writer, action string) {
|
func WriteFrameButton4Action(writer io.Writer, action string) error {
|
||||||
const property string = MetaPropertyFrameButton4Action
|
const property string = MetaPropertyFrameButton4Action
|
||||||
writeMetaPropertyContent(writer, property, action)
|
return writeMetaPropertyContent(writer, property, action)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
// Would write this HTML <meta/> element:
|
// Would write this HTML <meta/> element:
|
||||||
//
|
//
|
||||||
// <meta property="fc:frame:button:4:target" content="https://example.com/thing/do-it" />
|
// <meta property="fc:frame:button:4:target" content="https://example.com/thing/do-it" />
|
||||||
func WriteFrameButton4Target(writer io.Writer, target string) {
|
func WriteFrameButton4Target(writer io.Writer, target string) error {
|
||||||
const property string = MetaPropertyFrameButton4Target
|
const property string = MetaPropertyFrameButton4Target
|
||||||
writeMetaPropertyContent(writer, property, target)
|
return writeMetaPropertyContent(writer, property, target)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,8 +15,8 @@ import (
|
||||||
// Would write this HTML <meta/> element:
|
// Would write this HTML <meta/> element:
|
||||||
//
|
//
|
||||||
// <meta property="fc:frame:image" content="https://example.com/images/screen.png" />
|
// <meta property="fc:frame:image" content="https://example.com/images/screen.png" />
|
||||||
func WriteFrameImage(writer io.Writer, url string) {
|
func WriteFrameImage(writer io.Writer, url string) error {
|
||||||
const property string = MetaPropertyFrameImage
|
const property string = MetaPropertyFrameImage
|
||||||
writeMetaPropertyContent(writer, property, url)
|
return writeMetaPropertyContent(writer, property, url)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ import (
|
||||||
// And:
|
// And:
|
||||||
//
|
//
|
||||||
// frameproto.WriteFrameImageAspectRatio(writer, frameproto.AspectRatioOneToOne)
|
// frameproto.WriteFrameImageAspectRatio(writer, frameproto.AspectRatioOneToOne)
|
||||||
func WriteFrameImageAspectRatio(writer io.Writer, label string) {
|
func WriteFrameImageAspectRatio(writer io.Writer, label string) error {
|
||||||
const property string = MetaPropertyFrameImageAspectRatio
|
const property string = MetaPropertyFrameImageAspectRatio
|
||||||
writeMetaPropertyContent(writer, property, label)
|
return writeMetaPropertyContent(writer, property, label)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
// Would write this HTML <meta/> element:
|
// Would write this HTML <meta/> element:
|
||||||
//
|
//
|
||||||
// <meta property="fc:frame:input:text" content="enter your username" />
|
// <meta property="fc:frame:input:text" content="enter your username" />
|
||||||
func WriteFrameInputText(writer io.Writer, label string) {
|
func WriteFrameInputText(writer io.Writer, label string) error {
|
||||||
const property string = MetaPropertyFrameInputText
|
const property string = MetaPropertyFrameInputText
|
||||||
writeMetaPropertyContent(writer, property, label)
|
return writeMetaPropertyContent(writer, property, label)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import (
|
||||||
// Would write this HTML <meta/> element:
|
// Would write this HTML <meta/> element:
|
||||||
//
|
//
|
||||||
// <meta property="fc:frame:post_url" content="https://example.com/my/post/path.php" />
|
// <meta property="fc:frame:post_url" content="https://example.com/my/post/path.php" />
|
||||||
func WriteFramePostURL(writer io.Writer, url string) {
|
func WriteFramePostURL(writer io.Writer, url string) error {
|
||||||
const property string = MetaPropertyFramePostURL
|
const property string = MetaPropertyFramePostURL
|
||||||
writeMetaPropertyContent(writer, property, url)
|
return writeMetaPropertyContent(writer, property, url)
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,10 +4,10 @@ import (
|
||||||
"io"
|
"io"
|
||||||
)
|
)
|
||||||
|
|
||||||
func writeMetaPropertyContent(writer io.Writer, property string, content string) {
|
func writeMetaPropertyContent(writer io.Writer, property string, content string) error {
|
||||||
|
|
||||||
if nil == writer {
|
if nil == writer {
|
||||||
return
|
return errNilWriter
|
||||||
}
|
}
|
||||||
|
|
||||||
var buffer [bufferSize]byte
|
var buffer [bufferSize]byte
|
||||||
|
@ -15,5 +15,6 @@ func writeMetaPropertyContent(writer io.Writer, property string, content string)
|
||||||
|
|
||||||
p = appendMetaPropertyContent(p, property, content)
|
p = appendMetaPropertyContent(p, property, content)
|
||||||
|
|
||||||
writer.Write(p)
|
_, err := writer.Write(p)
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,14 @@ func TestWriteMetaPropertyContent(t *testing.T) {
|
||||||
|
|
||||||
var buffer strings.Builder
|
var buffer strings.Builder
|
||||||
|
|
||||||
writeMetaPropertyContent(&buffer, test.Property, test.Content)
|
err := writeMetaPropertyContent(&buffer, test.Property, test.Content)
|
||||||
|
if nil != err {
|
||||||
|
t.Errorf("For test #%d, did not expect an error but actually got one." , testNumber)
|
||||||
|
t.Logf("ERROR: (%T) %s", err, err)
|
||||||
|
t.Logf("PROPERTY: %s", test.Property)
|
||||||
|
t.Logf("CONTENT: %s", test.Content)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
expected := test.Expected
|
expected := test.Expected
|
||||||
actual := buffer.String()
|
actual := buffer.String()
|
||||||
|
|
Loading…
Reference in New Issue