mirror of
https://github.com/mrusme/neonmodem.git
synced 2024-12-04 14:46:37 -05:00
Implemented Discourse Create, moved all into api
This commit is contained in:
parent
5acfb29c3a
commit
73862a7c8f
@ -1,4 +1,4 @@
|
||||
package discourse
|
||||
package api
|
||||
|
||||
import (
|
||||
"context"
|
@ -1,4 +1,4 @@
|
||||
package discourse
|
||||
package api
|
||||
|
||||
import (
|
||||
"bytes"
|
@ -1,4 +1,4 @@
|
||||
package discourse
|
||||
package api
|
||||
|
||||
import (
|
||||
"context"
|
||||
@ -7,8 +7,16 @@ import (
|
||||
|
||||
const PostsBaseURL = "/posts"
|
||||
|
||||
type ListPostsResponse struct {
|
||||
LatestPosts []PostModel `json:"latest_posts,omitempty"`
|
||||
type CreatePostModel struct {
|
||||
Title string `json:"title,omitempty"`
|
||||
Raw string `json:"raw"`
|
||||
TopicID int `json:"topic_id,omitempty"`
|
||||
Category int `json:"category,omitempty"`
|
||||
TargetRecipients string `json:"targe_recipients,omitempty"`
|
||||
Archetype string `json:"archetype,omitempty"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
EmbedURL string `json:"embed_url,omitempty"`
|
||||
ExternalID string `json:"external_id,omitempty"`
|
||||
}
|
||||
|
||||
type PostModel struct {
|
||||
@ -65,7 +73,15 @@ type PostModel struct {
|
||||
ReviewableScorePendingCount int `json:"reviewable_score_pending_count"`
|
||||
}
|
||||
|
||||
type ListPostsResponse struct {
|
||||
LatestPosts []PostModel `json:"latest_posts,omitempty"`
|
||||
}
|
||||
|
||||
type PostsService interface {
|
||||
Create(
|
||||
ctx context.Context,
|
||||
w *CreatePostModel,
|
||||
) (PostModel, error)
|
||||
Show(
|
||||
ctx context.Context,
|
||||
id string,
|
||||
@ -79,6 +95,26 @@ type PostServiceHandler struct {
|
||||
client *Client
|
||||
}
|
||||
|
||||
// Create
|
||||
func (a *PostServiceHandler) Create(
|
||||
ctx context.Context,
|
||||
w *CreatePostModel,
|
||||
) (PostModel, error) {
|
||||
uri := PostsBaseURL + ".json"
|
||||
|
||||
req, err := a.client.NewRequest(ctx, http.MethodPost, uri, w)
|
||||
if err != nil {
|
||||
return PostModel{}, err
|
||||
}
|
||||
|
||||
response := new(Response)
|
||||
if err = a.client.Do(ctx, req, response); err != nil {
|
||||
return PostModel{}, err
|
||||
}
|
||||
|
||||
return response.Post, nil
|
||||
}
|
||||
|
||||
// Show
|
||||
func (a *PostServiceHandler) Show(
|
||||
ctx context.Context,
|
@ -1,4 +1,4 @@
|
||||
package discourse
|
||||
package api
|
||||
|
||||
import (
|
||||
"context"
|
@ -13,13 +13,14 @@ import (
|
||||
"github.com/mrusme/gobbs/models/post"
|
||||
"github.com/mrusme/gobbs/models/reply"
|
||||
"github.com/mrusme/gobbs/system/adapter"
|
||||
"github.com/mrusme/gobbs/system/discourse/api"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type System struct {
|
||||
config map[string]interface{}
|
||||
logger *zap.SugaredLogger
|
||||
client *Client
|
||||
client *api.Client
|
||||
}
|
||||
|
||||
func (sys *System) GetConfig() map[string]interface{} {
|
||||
@ -64,7 +65,7 @@ func (sys *System) Load() error {
|
||||
credentials[k] = v.(string)
|
||||
}
|
||||
|
||||
sys.client = NewClient(&ClientConfig{
|
||||
sys.client = api.NewClient(&api.ClientConfig{
|
||||
Endpoint: url.(string),
|
||||
Credentials: credentials,
|
||||
HTTPClient: http.DefaultClient,
|
||||
|
Loading…
Reference in New Issue
Block a user