diff --git a/delegates/blogDelegate.go b/delegates/blogDelegate.go
index 8b3c516..9d0fb40 100644
--- a/delegates/blogDelegate.go
+++ b/delegates/blogDelegate.go
@@ -84,6 +84,20 @@ func (d *MCDelegate) GetBlogByName(name string, start int64, end int64) *[]Blog
return &rtn
}
+// GetAdminBlogByName GetAdminBlogByName
+func (d *MCDelegate) GetAdminBlogByName(name string, start int64, end int64) *[]Blog {
+ var artn []Blog
+ astartStr := strconv.FormatInt(start, 10)
+ aendStr := strconv.FormatInt(end, 10)
+ abrq, err := d.buildRequest(http.MethodGet, "/rs/blog/admin/get/name/"+name+"/"+astartStr+"/"+aendStr, nil, adminKey)
+ if err == nil {
+ gsuc, stat := d.proxy.Do(abrq, &artn)
+ d.Log.Debug("suc: ", gsuc)
+ d.Log.Debug("stat: ", stat)
+ }
+ return &artn
+}
+
// GetBlogList GetBlogList
func (d *MCDelegate) GetBlogList(start int64, end int64) *[]Blog {
var rtn []Blog
diff --git a/delegates/blogDelegate_test.go b/delegates/blogDelegate_test.go
index 53e37cd..b0f7cb7 100644
--- a/delegates/blogDelegate_test.go
+++ b/delegates/blogDelegate_test.go
@@ -300,6 +300,83 @@ func TestMCDelegate_GetBlogByName(t *testing.T) {
}
}
+
+
+func TestMCDelegate_GetAdminBlogByName(t *testing.T) {
+
+ // var proxy px.GoProxy
+
+ var proxy px.MockGoProxy
+ proxy.MockDoSuccess1 = true
+ proxy.MockResp = &http.Response{
+ Status: "200",
+ StatusCode: 200,
+ Body: ioutil.NopCloser(bytes.NewBufferString(`[{"id":5, "name":"test blog 12345--------"}]`)),
+ }
+ proxy.MockRespCode = 200
+
+ var l lg.Logger
+ log := l.New()
+ log.SetLogLevel(lg.AllLevel)
+
+ type fields struct {
+ proxy px.Proxy
+ Log lg.Log
+ RestURL string
+ APIKey string
+ APIAdminKey string
+ }
+ type args struct {
+ name string
+ start int64
+ end int64
+ }
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ want *Blog
+ wantID int64
+ wantName string
+ wantLen int
+ }{
+ // TODO: Add test cases.
+ {
+ name: "test 1",
+ fields: fields{
+ proxy: proxy.New(),
+ Log: log,
+ RestURL: "http://localhost:3000",
+ APIAdminKey: "54211789991515",
+ APIKey: "557444414141",
+ },
+ args: args{
+ name: "test blog 12345--------",
+ start: 0,
+ end: 100,
+ },
+ wantID: 5,
+ wantName: "test blog 12345--------",
+ wantLen: 1,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ d := &MCDelegate{
+ proxy: tt.fields.proxy,
+ Log: tt.fields.Log,
+ RestURL: tt.fields.RestURL,
+ APIKey: tt.fields.APIKey,
+ APIAdminKey: tt.fields.APIAdminKey,
+ }
+ if got := d.GetAdminBlogByName(tt.args.name, tt.args.start, tt.args.end); len(*got) != tt.wantLen ||
+ (*got)[0].ID != tt.wantID || (*got)[0].Name != tt.wantName {
+ t.Errorf("MCDelegate.GetBlogByName() = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}
+
func TestMCDelegate_GetBlogList(t *testing.T) {
// var proxy px.GoProxy
diff --git a/delegates/delegate.go b/delegates/delegate.go
index f48c556..25d491b 100644
--- a/delegates/delegate.go
+++ b/delegates/delegate.go
@@ -49,6 +49,7 @@ type Delegate interface {
UpdateBlog(b *Blog) *Response
GetBlog(bid int64) *Blog
GetBlogByName(name string, start int64, end int64) *[]Blog
+ GetAdminBlogByName(name string, start int64, end int64) *[]Blog
GetBlogList(start int64, end int64) *[]Blog
GetAdminBlogList(start int64, end int64) *[]Blog
ActivateBlog(b *Blog) *Response
@@ -72,4 +73,7 @@ type Delegate interface {
UpdateConfig(c *Config) *Response // UpdateConfig()
GetConfig() *Config // GetConfig()
+ AddRule(r *Rule) *ResponseID
+ UpdateRule(r *Rule) *Response
+ GetRule() *Rule
}
diff --git a/delegates/mockDelegate.go b/delegates/mockDelegate.go
index bde2f2b..44e6c76 100644
--- a/delegates/mockDelegate.go
+++ b/delegates/mockDelegate.go
@@ -83,6 +83,12 @@ type MockDelegate struct {
MockConfig *Config
MockUpdateConfigRes *Response
+
+ MockAddRuleResp *ResponseID
+
+ MockUpdateRuleResp *Response
+
+ MockRule *Rule
}
// New New
@@ -194,6 +200,11 @@ func (d *MockDelegate) GetBlogByName(name string, start int64, end int64) *[]Blo
return d.MockBlogList
}
+// GetAdminBlogByName GetAdminBlogByName
+func (d *MockDelegate) GetAdminBlogByName(name string, start int64, end int64) *[]Blog {
+ return d.MockBlogList
+}
+
// GetBlogList GetBlogList
func (d *MockDelegate) GetBlogList(start int64, end int64) *[]Blog {
return d.MockBlogList
@@ -283,3 +294,18 @@ func (d *MockDelegate) UpdateConfig(c *Config) *Response {
func (d *MockDelegate) GetConfig() *Config {
return d.MockConfig
}
+
+// AddRule AddRule
+func (d *MockDelegate) AddRule(r *Rule) *ResponseID {
+ return d.MockAddRuleResp
+}
+
+// UpdateRule UpdateRule
+func (d *MockDelegate) UpdateRule(r *Rule) *Response {
+ return d.MockUpdateRuleResp
+}
+
+// GetRule GetRule
+func (d *MockDelegate) GetRule() *Rule {
+ return d.MockRule
+}
diff --git a/delegates/mockDelegate_test.go b/delegates/mockDelegate_test.go
index 8a75da3..8c460b6 100644
--- a/delegates/mockDelegate_test.go
+++ b/delegates/mockDelegate_test.go
@@ -1855,6 +1855,116 @@ func TestMockDelegate_GetBlogByName(t *testing.T) {
}
}
+func TestMockDelegate_GetAdminBlogByName(t *testing.T) {
+ type fields struct {
+ MockAddUserResp *ResponseID
+ MockUpdateUserResp *Response
+ MockRole *Role
+ MockAddRoleResp *ResponseID
+ MockRoleList *[]Role
+ MockDeleteRoleResp *Response
+ MockAddUserAuthResp *ResponseID
+ MockUserAuthList *[]UserAuth
+ MockUser *User
+ MockBlogList *[]Blog
+ MockBlog *Blog
+ MockCommentList *[]Comment
+ MockLikeList *[]Like
+ MockAddBlogRes *ResponseID
+ MockUpdateBlogRes *Response
+ MockAddCommentRes *ResponseID
+ MockUpdateCommentRes *Response
+ MockAddLikeRes *ResponseID
+ MockRemoveLikeResp *Response
+ MockActivateRes *Response
+ MockDeActivateRes *Response
+ MockActivateCommentRes *Response
+ MockDeActivateCommentRes *Response
+ MockUserList *[]User
+ MockUnactivatedUserList *[]User
+ MockBannedUserList *[]User
+ MockEnableUser *Response
+ MockReactivateBannedUser *Response
+ MockDisableUser *Response
+ MockDisableUserForCause *Response
+ MockConfig *Config
+ MockUpdateConfigRes *Response
+ }
+ type args struct {
+ name string
+ start int64
+ end int64
+ }
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ want *[]Blog
+ }{
+ // TODO: Add test cases.
+ {
+ name: "test 1",
+ fields: fields{
+ MockBlogList: &[]Blog{
+ {ID: 5},
+ {ID: 6},
+ },
+ },
+ args: args{
+ name: "test",
+ start: 0,
+ end: 10,
+ },
+
+ want: &[]Blog{
+ {ID: 5},
+ {ID: 6},
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ d := &MockDelegate{
+ MockAddUserResp: tt.fields.MockAddUserResp,
+ MockUpdateUserResp: tt.fields.MockUpdateUserResp,
+ MockRole: tt.fields.MockRole,
+ MockAddRoleResp: tt.fields.MockAddRoleResp,
+ MockRoleList: tt.fields.MockRoleList,
+ MockDeleteRoleResp: tt.fields.MockDeleteRoleResp,
+ MockAddUserAuthResp: tt.fields.MockAddUserAuthResp,
+ MockUserAuthList: tt.fields.MockUserAuthList,
+ MockUser: tt.fields.MockUser,
+ MockBlogList: tt.fields.MockBlogList,
+ MockBlog: tt.fields.MockBlog,
+ MockCommentList: tt.fields.MockCommentList,
+ MockLikeList: tt.fields.MockLikeList,
+ MockAddBlogRes: tt.fields.MockAddBlogRes,
+ MockUpdateBlogRes: tt.fields.MockUpdateBlogRes,
+ MockAddCommentRes: tt.fields.MockAddCommentRes,
+ MockUpdateCommentRes: tt.fields.MockUpdateCommentRes,
+ MockAddLikeRes: tt.fields.MockAddLikeRes,
+ MockRemoveLikeResp: tt.fields.MockRemoveLikeResp,
+ MockActivateRes: tt.fields.MockActivateRes,
+ MockDeActivateRes: tt.fields.MockDeActivateRes,
+ MockActivateCommentRes: tt.fields.MockActivateCommentRes,
+ MockDeActivateCommentRes: tt.fields.MockDeActivateCommentRes,
+ MockUserList: tt.fields.MockUserList,
+ MockUnactivatedUserList: tt.fields.MockUnactivatedUserList,
+ MockBannedUserList: tt.fields.MockBannedUserList,
+ MockEnableUser: tt.fields.MockEnableUser,
+ MockReactivateBannedUser: tt.fields.MockReactivateBannedUser,
+ MockDisableUser: tt.fields.MockDisableUser,
+ MockDisableUserForCause: tt.fields.MockDisableUserForCause,
+ MockConfig: tt.fields.MockConfig,
+ MockUpdateConfigRes: tt.fields.MockUpdateConfigRes,
+ }
+ if got := d.GetAdminBlogByName(tt.args.name, tt.args.start, tt.args.end); !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("MockDelegate.GetBlogByName() = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}
+
func TestMockDelegate_GetBlogList(t *testing.T) {
type fields struct {
MockAddUserResp *ResponseID
@@ -3743,3 +3853,328 @@ func TestMockDelegate_DeleteBlog(t *testing.T) {
})
}
}
+
+func TestMockDelegate_AddRule(t *testing.T) {
+ type fields struct {
+ MockAddUserResp *ResponseID
+ MockUpdateUserResp *Response
+ MockRole *Role
+ MockAddRoleResp *ResponseID
+ MockRoleList *[]Role
+ MockDeleteRoleResp *Response
+ MockAddUserAuthResp *ResponseID
+ MockUserAuthList *[]UserAuth
+ MockUser *User
+ MockBlogList *[]Blog
+ MockBlog *Blog
+ MockCommentList *[]Comment
+ MockLikeList *[]Like
+ MockAddBlogRes *ResponseID
+ MockUpdateBlogRes *Response
+ MockAddCommentRes *ResponseID
+ MockUpdateCommentRes *Response
+ MockAddLikeRes *ResponseID
+ MockRemoveLikeResp *Response
+ MockActivateRes *Response
+ MockDeActivateRes *Response
+ MockDeleteBlogRes *Response
+ MockActivateCommentRes *Response
+ MockDeActivateCommentRes *Response
+ MockUserList *[]User
+ MockUnactivatedUserList *[]User
+ MockBannedUserList *[]User
+ MockEnableUser *Response
+ MockReactivateBannedUser *Response
+ MockDisableUser *Response
+ MockDisableUserForCause *Response
+ MockConfig *Config
+ MockUpdateConfigRes *Response
+ MockAddRuleResp *ResponseID
+ }
+ type args struct {
+ r *Rule
+ }
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ want *ResponseID
+ }{
+ // TODO: Add test cases.
+ {
+ name: "test 1",
+ fields: fields{
+ MockAddRuleResp: &ResponseID{
+ ID: 4,
+ Success: true,
+ },
+ },
+ args: args{
+ r: &Rule{},
+ },
+ want: &ResponseID{
+ ID: 4,
+ Success: true,
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ d := &MockDelegate{
+ MockAddUserResp: tt.fields.MockAddUserResp,
+ MockUpdateUserResp: tt.fields.MockUpdateUserResp,
+ MockRole: tt.fields.MockRole,
+ MockAddRoleResp: tt.fields.MockAddRoleResp,
+ MockRoleList: tt.fields.MockRoleList,
+ MockDeleteRoleResp: tt.fields.MockDeleteRoleResp,
+ MockAddUserAuthResp: tt.fields.MockAddUserAuthResp,
+ MockUserAuthList: tt.fields.MockUserAuthList,
+ MockUser: tt.fields.MockUser,
+ MockBlogList: tt.fields.MockBlogList,
+ MockBlog: tt.fields.MockBlog,
+ MockCommentList: tt.fields.MockCommentList,
+ MockLikeList: tt.fields.MockLikeList,
+ MockAddBlogRes: tt.fields.MockAddBlogRes,
+ MockUpdateBlogRes: tt.fields.MockUpdateBlogRes,
+ MockAddCommentRes: tt.fields.MockAddCommentRes,
+ MockUpdateCommentRes: tt.fields.MockUpdateCommentRes,
+ MockAddLikeRes: tt.fields.MockAddLikeRes,
+ MockRemoveLikeResp: tt.fields.MockRemoveLikeResp,
+ MockActivateRes: tt.fields.MockActivateRes,
+ MockDeActivateRes: tt.fields.MockDeActivateRes,
+ MockDeleteBlogRes: tt.fields.MockDeleteBlogRes,
+ MockActivateCommentRes: tt.fields.MockActivateCommentRes,
+ MockDeActivateCommentRes: tt.fields.MockDeActivateCommentRes,
+ MockUserList: tt.fields.MockUserList,
+ MockUnactivatedUserList: tt.fields.MockUnactivatedUserList,
+ MockBannedUserList: tt.fields.MockBannedUserList,
+ MockEnableUser: tt.fields.MockEnableUser,
+ MockReactivateBannedUser: tt.fields.MockReactivateBannedUser,
+ MockDisableUser: tt.fields.MockDisableUser,
+ MockDisableUserForCause: tt.fields.MockDisableUserForCause,
+ MockConfig: tt.fields.MockConfig,
+ MockUpdateConfigRes: tt.fields.MockUpdateConfigRes,
+ MockAddRuleResp: tt.fields.MockAddRuleResp,
+ }
+ if got := d.AddRule(tt.args.r); !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("MockDelegate.AddRule() = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}
+
+func TestMockDelegate_UpdateRule(t *testing.T) {
+ type fields struct {
+ MockAddUserResp *ResponseID
+ MockUpdateUserResp *Response
+ MockRole *Role
+ MockAddRoleResp *ResponseID
+ MockRoleList *[]Role
+ MockDeleteRoleResp *Response
+ MockAddUserAuthResp *ResponseID
+ MockUserAuthList *[]UserAuth
+ MockUser *User
+ MockBlogList *[]Blog
+ MockBlog *Blog
+ MockCommentList *[]Comment
+ MockLikeList *[]Like
+ MockAddBlogRes *ResponseID
+ MockUpdateBlogRes *Response
+ MockAddCommentRes *ResponseID
+ MockUpdateCommentRes *Response
+ MockAddLikeRes *ResponseID
+ MockRemoveLikeResp *Response
+ MockActivateRes *Response
+ MockDeActivateRes *Response
+ MockDeleteBlogRes *Response
+ MockActivateCommentRes *Response
+ MockDeActivateCommentRes *Response
+ MockUserList *[]User
+ MockUnactivatedUserList *[]User
+ MockBannedUserList *[]User
+ MockEnableUser *Response
+ MockReactivateBannedUser *Response
+ MockDisableUser *Response
+ MockDisableUserForCause *Response
+ MockConfig *Config
+ MockUpdateConfigRes *Response
+ MockAddRuleResp *ResponseID
+ MockUpdateRuleResp *Response
+ }
+ type args struct {
+ r *Rule
+ }
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ want *Response
+ }{
+ // TODO: Add test cases.
+ {
+ name: "test 1",
+ fields: fields{
+ MockUpdateRuleResp: &Response{
+ Success: true,
+ },
+ },
+ args: args{
+ r: &Rule{},
+ },
+ want: &Response{
+ Success: true,
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ d := &MockDelegate{
+ MockAddUserResp: tt.fields.MockAddUserResp,
+ MockUpdateUserResp: tt.fields.MockUpdateUserResp,
+ MockRole: tt.fields.MockRole,
+ MockAddRoleResp: tt.fields.MockAddRoleResp,
+ MockRoleList: tt.fields.MockRoleList,
+ MockDeleteRoleResp: tt.fields.MockDeleteRoleResp,
+ MockAddUserAuthResp: tt.fields.MockAddUserAuthResp,
+ MockUserAuthList: tt.fields.MockUserAuthList,
+ MockUser: tt.fields.MockUser,
+ MockBlogList: tt.fields.MockBlogList,
+ MockBlog: tt.fields.MockBlog,
+ MockCommentList: tt.fields.MockCommentList,
+ MockLikeList: tt.fields.MockLikeList,
+ MockAddBlogRes: tt.fields.MockAddBlogRes,
+ MockUpdateBlogRes: tt.fields.MockUpdateBlogRes,
+ MockAddCommentRes: tt.fields.MockAddCommentRes,
+ MockUpdateCommentRes: tt.fields.MockUpdateCommentRes,
+ MockAddLikeRes: tt.fields.MockAddLikeRes,
+ MockRemoveLikeResp: tt.fields.MockRemoveLikeResp,
+ MockActivateRes: tt.fields.MockActivateRes,
+ MockDeActivateRes: tt.fields.MockDeActivateRes,
+ MockDeleteBlogRes: tt.fields.MockDeleteBlogRes,
+ MockActivateCommentRes: tt.fields.MockActivateCommentRes,
+ MockDeActivateCommentRes: tt.fields.MockDeActivateCommentRes,
+ MockUserList: tt.fields.MockUserList,
+ MockUnactivatedUserList: tt.fields.MockUnactivatedUserList,
+ MockBannedUserList: tt.fields.MockBannedUserList,
+ MockEnableUser: tt.fields.MockEnableUser,
+ MockReactivateBannedUser: tt.fields.MockReactivateBannedUser,
+ MockDisableUser: tt.fields.MockDisableUser,
+ MockDisableUserForCause: tt.fields.MockDisableUserForCause,
+ MockConfig: tt.fields.MockConfig,
+ MockUpdateConfigRes: tt.fields.MockUpdateConfigRes,
+ MockAddRuleResp: tt.fields.MockAddRuleResp,
+ MockUpdateRuleResp: tt.fields.MockUpdateRuleResp,
+ }
+ if got := d.UpdateRule(tt.args.r); !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("MockDelegate.UpdateRule() = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}
+
+func TestMockDelegate_GetRule(t *testing.T) {
+ type fields struct {
+ MockAddUserResp *ResponseID
+ MockUpdateUserResp *Response
+ MockRole *Role
+ MockAddRoleResp *ResponseID
+ MockRoleList *[]Role
+ MockDeleteRoleResp *Response
+ MockAddUserAuthResp *ResponseID
+ MockUserAuthList *[]UserAuth
+ MockUser *User
+ MockBlogList *[]Blog
+ MockBlog *Blog
+ MockCommentList *[]Comment
+ MockLikeList *[]Like
+ MockAddBlogRes *ResponseID
+ MockUpdateBlogRes *Response
+ MockAddCommentRes *ResponseID
+ MockUpdateCommentRes *Response
+ MockAddLikeRes *ResponseID
+ MockRemoveLikeResp *Response
+ MockActivateRes *Response
+ MockDeActivateRes *Response
+ MockDeleteBlogRes *Response
+ MockActivateCommentRes *Response
+ MockDeActivateCommentRes *Response
+ MockUserList *[]User
+ MockUnactivatedUserList *[]User
+ MockBannedUserList *[]User
+ MockEnableUser *Response
+ MockReactivateBannedUser *Response
+ MockDisableUser *Response
+ MockDisableUserForCause *Response
+ MockConfig *Config
+ MockUpdateConfigRes *Response
+ MockAddRuleResp *ResponseID
+ MockUpdateRuleResp *Response
+ MockRule *Rule
+ }
+ tests := []struct {
+ name string
+ fields fields
+ want *Rule
+ }{
+ // TODO: Add test cases.
+ {
+ name: "test 1",
+ fields: fields{
+ MockRule: &Rule{
+ ID: 4,
+ Content: "test",
+ },
+ },
+
+ want: &Rule{
+ ID: 4,
+ Content: "test",
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ d := &MockDelegate{
+ MockAddUserResp: tt.fields.MockAddUserResp,
+ MockUpdateUserResp: tt.fields.MockUpdateUserResp,
+ MockRole: tt.fields.MockRole,
+ MockAddRoleResp: tt.fields.MockAddRoleResp,
+ MockRoleList: tt.fields.MockRoleList,
+ MockDeleteRoleResp: tt.fields.MockDeleteRoleResp,
+ MockAddUserAuthResp: tt.fields.MockAddUserAuthResp,
+ MockUserAuthList: tt.fields.MockUserAuthList,
+ MockUser: tt.fields.MockUser,
+ MockBlogList: tt.fields.MockBlogList,
+ MockBlog: tt.fields.MockBlog,
+ MockCommentList: tt.fields.MockCommentList,
+ MockLikeList: tt.fields.MockLikeList,
+ MockAddBlogRes: tt.fields.MockAddBlogRes,
+ MockUpdateBlogRes: tt.fields.MockUpdateBlogRes,
+ MockAddCommentRes: tt.fields.MockAddCommentRes,
+ MockUpdateCommentRes: tt.fields.MockUpdateCommentRes,
+ MockAddLikeRes: tt.fields.MockAddLikeRes,
+ MockRemoveLikeResp: tt.fields.MockRemoveLikeResp,
+ MockActivateRes: tt.fields.MockActivateRes,
+ MockDeActivateRes: tt.fields.MockDeActivateRes,
+ MockDeleteBlogRes: tt.fields.MockDeleteBlogRes,
+ MockActivateCommentRes: tt.fields.MockActivateCommentRes,
+ MockDeActivateCommentRes: tt.fields.MockDeActivateCommentRes,
+ MockUserList: tt.fields.MockUserList,
+ MockUnactivatedUserList: tt.fields.MockUnactivatedUserList,
+ MockBannedUserList: tt.fields.MockBannedUserList,
+ MockEnableUser: tt.fields.MockEnableUser,
+ MockReactivateBannedUser: tt.fields.MockReactivateBannedUser,
+ MockDisableUser: tt.fields.MockDisableUser,
+ MockDisableUserForCause: tt.fields.MockDisableUserForCause,
+ MockConfig: tt.fields.MockConfig,
+ MockUpdateConfigRes: tt.fields.MockUpdateConfigRes,
+ MockAddRuleResp: tt.fields.MockAddRuleResp,
+ MockUpdateRuleResp: tt.fields.MockUpdateRuleResp,
+ MockRule: tt.fields.MockRule,
+ }
+ if got := d.GetRule(); !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("MockDelegate.GetRule() = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}
diff --git a/delegates/model.go b/delegates/model.go
index 72386f1..04f2745 100644
--- a/delegates/model.go
+++ b/delegates/model.go
@@ -78,3 +78,9 @@ type Config struct {
AllowAutoPost bool `json:"allowAutoPost"`
AllowAutoComment bool `json:"allowAutoComment"`
}
+
+// Rule Rule
+type Rule struct {
+ ID int64 `json:"id"`
+ Content string `json:"content"`
+}
diff --git a/delegates/ruleDelegate.go b/delegates/ruleDelegate.go
new file mode 100644
index 0000000..e880af1
--- /dev/null
+++ b/delegates/ruleDelegate.go
@@ -0,0 +1,69 @@
+package delegates
+
+import (
+ "encoding/json"
+ "net/http"
+)
+
+/*
+ Copyright (C) 2023 Ulbora Labs LLC. (www.ulboralabs.com)
+ All rights reserved.
+ Copyright (C) 2023 Ken Williamson
+ All rights reserved.
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see