From 0e905c15c920f648a6f2bf27af0788e545ff5b53 Mon Sep 17 00:00:00 2001 From: Charles Iliya Krempeaux Date: Thu, 15 Feb 2024 06:02:52 -0800 Subject: [PATCH] initial commits --- stringframebutton1action.go | 36 +++++++++++++++++ stringframebutton1action_test.go | 68 ++++++++++++++++++++++++++++++++ stringframebutton2action.go | 36 +++++++++++++++++ stringframebutton2action_test.go | 68 ++++++++++++++++++++++++++++++++ stringframebutton3action.go | 36 +++++++++++++++++ stringframebutton3action_test.go | 68 ++++++++++++++++++++++++++++++++ stringframebutton4action.go | 36 +++++++++++++++++ stringframebutton4action_test.go | 68 ++++++++++++++++++++++++++++++++ 8 files changed, 416 insertions(+) create mode 100644 stringframebutton1action.go create mode 100644 stringframebutton1action_test.go create mode 100644 stringframebutton2action.go create mode 100644 stringframebutton2action_test.go create mode 100644 stringframebutton3action.go create mode 100644 stringframebutton3action_test.go create mode 100644 stringframebutton4action.go create mode 100644 stringframebutton4action_test.go diff --git a/stringframebutton1action.go b/stringframebutton1action.go new file mode 100644 index 0000000..7acd3ad --- /dev/null +++ b/stringframebutton1action.go @@ -0,0 +1,36 @@ +package frameproto + +// StringFrameButton1Action will return the HTML element for the Frame-Protocol's (i.e., Farcaster Frame's) "fc:frame:button:1:action" name-value pair. +// +// For example, this call: +// +// var buttonAction string = "post" +// +// str := frameproto.StringFrameButton1Action(aspectRatio) +// +// Would return this HTML element: +// +// +// +// Note that this package provides some constants to use with StringFrameButton1Action. +// Namely: ButtonActionLink (for "link"), ButtonActionMint (for "mint"), ButtonActionPost (for "post"), and ButtonActionPostRedirect (for "post_redirect"). +// +// Which in code would be used as: +// +// str := frameproto.StringFrameButton1Action(frameproto.ButtonActionLink) +// +// And: +// +// str := frameproto.StringFrameButton1Action(frameproto.ButtonActionMint) +// +// And: +// +// str :+ frameproto.StringFrameButton1Action(frameproto.ButtonActionPost) +// +// And: +// +// str := frameproto.StringFrameButton1Action(frameproto.ButtonActionPostRedirect) +func StringFrameButton1Action(action string) string { + const property string = MetaPropertyFrameButton1Action + return stringMetaPropertyContent(property, action) +} diff --git a/stringframebutton1action_test.go b/stringframebutton1action_test.go new file mode 100644 index 0000000..6585d96 --- /dev/null +++ b/stringframebutton1action_test.go @@ -0,0 +1,68 @@ +package frameproto + +import ( + "testing" +) + +func TestStringFrameButton1Action(t *testing.T) { + + tests := []struct{ + Label string + Expected string + }{ + { + Label: "", + Expected: ``+"\n", + }, + + + + { + Label: "something", + Expected: ``+"\n", + }, + + + + { + Label: "Hello world! 🙂", + Expected: ``+"\n", + }, + + + + { + Label: "link", + Expected: ``+"\n", + }, + { + Label: "mint", + Expected: ``+"\n", + }, + { + Label: "post", + Expected: ``+"\n", + }, + { + Label: "post_redirect", + Expected: ``+"\n", + }, + } + + for testNumber, test := range tests { + + actual := StringFrameButton1Action(test.Label) + + expected := test.Expected + + if expected != actual { + t.Errorf("For test #%d, the actual written meta-tag is not what was expected." ,testNumber) + t.Logf("EXPECTED: %s", expected) + t.Logf("ACTUAL: %s", actual) + t.Logf("EXPECTED: %q", expected) + t.Logf("ACTUAL: %q", actual) + t.Logf("LABEL: %q", test.Label) + continue + } + } +} diff --git a/stringframebutton2action.go b/stringframebutton2action.go new file mode 100644 index 0000000..2f59c74 --- /dev/null +++ b/stringframebutton2action.go @@ -0,0 +1,36 @@ +package frameproto + +// StringFrameButton2Action will return the HTML element for the Frame-Protocol's (i.e., Farcaster Frame's) "fc:frame:button:2:action" name-value pair. +// +// For example, this call: +// +// var buttonAction string = "post" +// +// str := frameproto.StringFrameButton2Action(aspectRatio) +// +// Would return this HTML element: +// +// +// +// Note that this package provides some constants to use with StringFrameButton2Action. +// Namely: ButtonActionLink (for "link"), ButtonActionMint (for "mint"), ButtonActionPost (for "post"), and ButtonActionPostRedirect (for "post_redirect"). +// +// Which in code would be used as: +// +// str := frameproto.StringFrameButton2Action(frameproto.ButtonActionLink) +// +// And: +// +// str := frameproto.StringFrameButton2Action(frameproto.ButtonActionMint) +// +// And: +// +// str :+ frameproto.StringFrameButton2Action(frameproto.ButtonActionPost) +// +// And: +// +// str := frameproto.StringFrameButton2Action(frameproto.ButtonActionPostRedirect) +func StringFrameButton2Action(action string) string { + const property string = MetaPropertyFrameButton2Action + return stringMetaPropertyContent(property, action) +} diff --git a/stringframebutton2action_test.go b/stringframebutton2action_test.go new file mode 100644 index 0000000..fe88d85 --- /dev/null +++ b/stringframebutton2action_test.go @@ -0,0 +1,68 @@ +package frameproto + +import ( + "testing" +) + +func TestStringFrameButton2Action(t *testing.T) { + + tests := []struct{ + Label string + Expected string + }{ + { + Label: "", + Expected: ``+"\n", + }, + + + + { + Label: "something", + Expected: ``+"\n", + }, + + + + { + Label: "Hello world! 🙂", + Expected: ``+"\n", + }, + + + + { + Label: "link", + Expected: ``+"\n", + }, + { + Label: "mint", + Expected: ``+"\n", + }, + { + Label: "post", + Expected: ``+"\n", + }, + { + Label: "post_redirect", + Expected: ``+"\n", + }, + } + + for testNumber, test := range tests { + + actual := StringFrameButton2Action(test.Label) + + expected := test.Expected + + if expected != actual { + t.Errorf("For test #%d, the actual written meta-tag is not what was expected." ,testNumber) + t.Logf("EXPECTED: %s", expected) + t.Logf("ACTUAL: %s", actual) + t.Logf("EXPECTED: %q", expected) + t.Logf("ACTUAL: %q", actual) + t.Logf("LABEL: %q", test.Label) + continue + } + } +} diff --git a/stringframebutton3action.go b/stringframebutton3action.go new file mode 100644 index 0000000..655cd56 --- /dev/null +++ b/stringframebutton3action.go @@ -0,0 +1,36 @@ +package frameproto + +// StringFrameButton3Action will return the HTML element for the Frame-Protocol's (i.e., Farcaster Frame's) "fc:frame:button:3:action" name-value pair. +// +// For example, this call: +// +// var buttonAction string = "post" +// +// str := frameproto.StringFrameButton3Action(aspectRatio) +// +// Would return this HTML element: +// +// +// +// Note that this package provides some constants to use with StringFrameButton3Action. +// Namely: ButtonActionLink (for "link"), ButtonActionMint (for "mint"), ButtonActionPost (for "post"), and ButtonActionPostRedirect (for "post_redirect"). +// +// Which in code would be used as: +// +// str := frameproto.StringFrameButton3Action(frameproto.ButtonActionLink) +// +// And: +// +// str := frameproto.StringFrameButton3Action(frameproto.ButtonActionMint) +// +// And: +// +// str :+ frameproto.StringFrameButton3Action(frameproto.ButtonActionPost) +// +// And: +// +// str := frameproto.StringFrameButton3Action(frameproto.ButtonActionPostRedirect) +func StringFrameButton3Action(action string) string { + const property string = MetaPropertyFrameButton3Action + return stringMetaPropertyContent(property, action) +} diff --git a/stringframebutton3action_test.go b/stringframebutton3action_test.go new file mode 100644 index 0000000..c9c8653 --- /dev/null +++ b/stringframebutton3action_test.go @@ -0,0 +1,68 @@ +package frameproto + +import ( + "testing" +) + +func TestStringFrameButton3Action(t *testing.T) { + + tests := []struct{ + Label string + Expected string + }{ + { + Label: "", + Expected: ``+"\n", + }, + + + + { + Label: "something", + Expected: ``+"\n", + }, + + + + { + Label: "Hello world! 🙂", + Expected: ``+"\n", + }, + + + + { + Label: "link", + Expected: ``+"\n", + }, + { + Label: "mint", + Expected: ``+"\n", + }, + { + Label: "post", + Expected: ``+"\n", + }, + { + Label: "post_redirect", + Expected: ``+"\n", + }, + } + + for testNumber, test := range tests { + + actual := StringFrameButton3Action(test.Label) + + expected := test.Expected + + if expected != actual { + t.Errorf("For test #%d, the actual written meta-tag is not what was expected." ,testNumber) + t.Logf("EXPECTED: %s", expected) + t.Logf("ACTUAL: %s", actual) + t.Logf("EXPECTED: %q", expected) + t.Logf("ACTUAL: %q", actual) + t.Logf("LABEL: %q", test.Label) + continue + } + } +} diff --git a/stringframebutton4action.go b/stringframebutton4action.go new file mode 100644 index 0000000..0d8ad1a --- /dev/null +++ b/stringframebutton4action.go @@ -0,0 +1,36 @@ +package frameproto + +// StringFrameButton4Action will return the HTML element for the Frame-Protocol's (i.e., Farcaster Frame's) "fc:frame:button:4:action" name-value pair. +// +// For example, this call: +// +// var buttonAction string = "post" +// +// str := frameproto.StringFrameButton4Action(aspectRatio) +// +// Would return this HTML element: +// +// +// +// Note that this package provides some constants to use with StringFrameButton4Action. +// Namely: ButtonActionLink (for "link"), ButtonActionMint (for "mint"), ButtonActionPost (for "post"), and ButtonActionPostRedirect (for "post_redirect"). +// +// Which in code would be used as: +// +// str := frameproto.StringFrameButton4Action(frameproto.ButtonActionLink) +// +// And: +// +// str := frameproto.StringFrameButton4Action(frameproto.ButtonActionMint) +// +// And: +// +// str :+ frameproto.StringFrameButton4Action(frameproto.ButtonActionPost) +// +// And: +// +// str := frameproto.StringFrameButton4Action(frameproto.ButtonActionPostRedirect) +func StringFrameButton4Action(action string) string { + const property string = MetaPropertyFrameButton4Action + return stringMetaPropertyContent(property, action) +} diff --git a/stringframebutton4action_test.go b/stringframebutton4action_test.go new file mode 100644 index 0000000..93e016b --- /dev/null +++ b/stringframebutton4action_test.go @@ -0,0 +1,68 @@ +package frameproto + +import ( + "testing" +) + +func TestStringFrameButton4Action(t *testing.T) { + + tests := []struct{ + Label string + Expected string + }{ + { + Label: "", + Expected: ``+"\n", + }, + + + + { + Label: "something", + Expected: ``+"\n", + }, + + + + { + Label: "Hello world! 🙂", + Expected: ``+"\n", + }, + + + + { + Label: "link", + Expected: ``+"\n", + }, + { + Label: "mint", + Expected: ``+"\n", + }, + { + Label: "post", + Expected: ``+"\n", + }, + { + Label: "post_redirect", + Expected: ``+"\n", + }, + } + + for testNumber, test := range tests { + + actual := StringFrameButton4Action(test.Label) + + expected := test.Expected + + if expected != actual { + t.Errorf("For test #%d, the actual written meta-tag is not what was expected." ,testNumber) + t.Logf("EXPECTED: %s", expected) + t.Logf("ACTUAL: %s", actual) + t.Logf("EXPECTED: %q", expected) + t.Logf("ACTUAL: %q", actual) + t.Logf("LABEL: %q", test.Label) + continue + } + } +}