Feature: Support multiline irc parsing (#39)

* feat: initial multiline support

* refactor: handle multiple indexers per network

* wip: setup indexer

* build: add docker compose for testing

* chore: remove temp mock indexers

* chore: update deps

* refactor: update and store network handler

* build: update test compose

* chore: minor cleanup
This commit is contained in:
Ludvig Lundgren 2021-12-21 21:15:42 +01:00 committed by GitHub
parent 506cef6f0f
commit c4d580eb03
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 1100 additions and 1042 deletions

View file

@ -1,6 +1,7 @@
package http
import (
"context"
"encoding/json"
"net/http"
"strconv"
@ -16,7 +17,7 @@ type indexerService interface {
List() ([]domain.Indexer, error)
GetAll() ([]*domain.IndexerDefinition, error)
GetTemplates() ([]domain.IndexerDefinition, error)
Delete(id int) error
Delete(ctx context.Context, id int) error
}
type indexerHandler struct {
@ -96,7 +97,7 @@ func (h indexerHandler) delete(w http.ResponseWriter, r *http.Request) {
id, _ := strconv.Atoi(idParam)
if err := h.service.Delete(id); err != nil {
if err := h.service.Delete(ctx, id); err != nil {
// return err
}

View file

@ -15,7 +15,8 @@ type ircService interface {
ListNetworks(ctx context.Context) ([]domain.IrcNetwork, error)
DeleteNetwork(ctx context.Context, id int64) error
GetNetworkByID(id int64) (*domain.IrcNetwork, error)
StoreNetwork(network *domain.IrcNetwork) error
StoreNetwork(ctx context.Context, network *domain.IrcNetwork) error
UpdateNetwork(ctx context.Context, network *domain.IrcNetwork) error
StoreChannel(networkID int64, channel *domain.IrcChannel) error
StopNetwork(name string) error
}
@ -35,7 +36,7 @@ func newIrcHandler(encoder encoder, service ircService) *ircHandler {
func (h ircHandler) Routes(r chi.Router) {
r.Get("/", h.listNetworks)
r.Post("/", h.storeNetwork)
r.Put("/network/{networkID}", h.storeNetwork)
r.Put("/network/{networkID}", h.updateNetwork)
r.Post("/network/{networkID}/channel", h.storeChannel)
r.Get("/network/{networkID}/stop", h.stopNetwork)
r.Get("/network/{networkID}", h.getNetworkByID)
@ -79,7 +80,27 @@ func (h ircHandler) storeNetwork(w http.ResponseWriter, r *http.Request) {
return
}
err := h.service.StoreNetwork(&data)
err := h.service.StoreNetwork(ctx, &data)
if err != nil {
//
h.encoder.StatusResponse(ctx, w, nil, http.StatusBadRequest)
return
}
h.encoder.StatusResponse(ctx, w, nil, http.StatusCreated)
}
func (h ircHandler) updateNetwork(w http.ResponseWriter, r *http.Request) {
var (
ctx = r.Context()
data domain.IrcNetwork
)
if err := json.NewDecoder(r.Body).Decode(&data); err != nil {
return
}
err := h.service.UpdateNetwork(ctx, &data)
if err != nil {
//
h.encoder.StatusResponse(ctx, w, nil, http.StatusBadRequest)