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 (
|
import (
|
||||||
"context"
|
"context"
|
@ -1,4 +1,4 @@
|
|||||||
package discourse
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
@ -1,4 +1,4 @@
|
|||||||
package discourse
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@ -7,8 +7,16 @@ import (
|
|||||||
|
|
||||||
const PostsBaseURL = "/posts"
|
const PostsBaseURL = "/posts"
|
||||||
|
|
||||||
type ListPostsResponse struct {
|
type CreatePostModel struct {
|
||||||
LatestPosts []PostModel `json:"latest_posts,omitempty"`
|
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 {
|
type PostModel struct {
|
||||||
@ -65,7 +73,15 @@ type PostModel struct {
|
|||||||
ReviewableScorePendingCount int `json:"reviewable_score_pending_count"`
|
ReviewableScorePendingCount int `json:"reviewable_score_pending_count"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ListPostsResponse struct {
|
||||||
|
LatestPosts []PostModel `json:"latest_posts,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
type PostsService interface {
|
type PostsService interface {
|
||||||
|
Create(
|
||||||
|
ctx context.Context,
|
||||||
|
w *CreatePostModel,
|
||||||
|
) (PostModel, error)
|
||||||
Show(
|
Show(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
id string,
|
id string,
|
||||||
@ -79,6 +95,26 @@ type PostServiceHandler struct {
|
|||||||
client *Client
|
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
|
// Show
|
||||||
func (a *PostServiceHandler) Show(
|
func (a *PostServiceHandler) Show(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
@ -1,4 +1,4 @@
|
|||||||
package discourse
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
@ -13,13 +13,14 @@ import (
|
|||||||
"github.com/mrusme/gobbs/models/post"
|
"github.com/mrusme/gobbs/models/post"
|
||||||
"github.com/mrusme/gobbs/models/reply"
|
"github.com/mrusme/gobbs/models/reply"
|
||||||
"github.com/mrusme/gobbs/system/adapter"
|
"github.com/mrusme/gobbs/system/adapter"
|
||||||
|
"github.com/mrusme/gobbs/system/discourse/api"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
type System struct {
|
type System struct {
|
||||||
config map[string]interface{}
|
config map[string]interface{}
|
||||||
logger *zap.SugaredLogger
|
logger *zap.SugaredLogger
|
||||||
client *Client
|
client *api.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sys *System) GetConfig() map[string]interface{} {
|
func (sys *System) GetConfig() map[string]interface{} {
|
||||||
@ -64,7 +65,7 @@ func (sys *System) Load() error {
|
|||||||
credentials[k] = v.(string)
|
credentials[k] = v.(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
sys.client = NewClient(&ClientConfig{
|
sys.client = api.NewClient(&api.ClientConfig{
|
||||||
Endpoint: url.(string),
|
Endpoint: url.(string),
|
||||||
Credentials: credentials,
|
Credentials: credentials,
|
||||||
HTTPClient: http.DefaultClient,
|
HTTPClient: http.DefaultClient,
|
||||||
|
Loading…
Reference in New Issue
Block a user