Commit 8802f2ff authored by Erhan's avatar Erhan
Browse files

Update

parent 65d395a1
package main
import(
//Local Packages
"log"
//This Project Packages
db "bulkmail/packages/DataAccess/MongoDb"
"bulkmail/packages/Data/Models"
//Git Packages
amqp "github.com/rabbitmq/amqp091-go"
//"go.mongodb.org/mongo-driver/mongo"
)
func failOnError(err error, msg string) {
if err != nil {
log.Panicf("%s: %s", msg, err)
}
}
func main() {
//Rabbit Connection
conn, err := amqp.Dial("amqp://root:root@localhost:5672/")
failOnError(err, "Failed to connect to RabbitMQ")
defer conn.Close()
//Rabbit Channel
ch, err := conn.Channel()
failOnError(err, "Failed to open a channel")
defer ch.Close()
//Rabbit Queue
q, err := ch.QueueDeclare(
"BulkMail", // name
false, // durable
false, // delete when unused
false, // exclusive
false, // no-wait
nil, // arguments
)
failOnError(err, "Failed to declare a queue")
msgs, err := ch.Consume(
q.Name, // queue
"", // consumer
true, // auto-ack
false, // exclusive
false, // no-local
false, // no-wait
nil, // args
)
failOnError(err, "Failed to register a consumer")
var forever chan struct{}
var mail Models.Mail
go func() {
for d := range msgs {
log.Printf("Received a message: %s", d.Body)
}
}()
//var clnt *mongo.Client
clnt:= db.GetConnection()
mongodb:=db.CreateDatabase(*clnt)
col:=db.CreateCollection(*mongodb)
log.Printf(" [*] Waiting for messages. To exit press CTRL+C")
<-forever
}
\ No newline at end of file
package Business
import(
//Local Packages
"net/http"
"encoding/json"
//ThisProject Packages
models "bulkmail/packages/Data/Models"
myLog "bulkmail/packages/Utils/Logger"
rabbit "bulkmail/packages/Utils/RabbitMQ"
)
func AddToQueue(w http.ResponseWriter, r *http.Request){
var mail models.Mail
json.NewDecoder(r.Body).Decode(&mail)
body, err := json.Marshal(mail)
if err != nil{
myLog.FailOnError(err, "Failed data can't converting")
}
rabbit.AddToQueue(body)
}
\ No newline at end of file
package Models
type Mail struct {
Id string `json:"id"`
MailSubject string `json:"mailSubject"`
MailText string `json:"mailText"`
SenderEmail string `json:"senderEmail"`
SenderEmailPsw string `json:"senderEmailPsw`
ArriveEmails []string `json:"arriveEmails"`
}
\ No newline at end of file
package MongoDb
import(
//Local Packages
"context"
//This Project Packages
myLogger "bulkmail/packages/Utils/Logger"
//Online Packages
//bson "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
var client *mongo.Client
var database *mongo.Database
var collection *mongo.Collection
var ctx=context.TODO()
var err error
func GetClient(databaseName string, collectionName string){
connectionOptions := options.Client().ApplyURI("mongodb://root:root@localhost:27017/")
client,err = mongo.Connect(ctx, connectionOptions)
if err != nil {
myLogger.FailOnError(err, "MONGO CONNECTION FAILED")
}
collection = client.Database(databaseName).Collection(collectionName)
}
func InsertOne(data string){
_, er := collection.InsertOne(ctx, data)
if er != nil {
myLogger.FailOnError(err, "INSERT ONE FAILED")
}
myLogger.Print("inserted")//!!
}
\ No newline at end of file
package Controllers
import(
//Local Packages
"net/http"
//This Project Packages
bsns "bulkmail/packages/Business"
)
func SendMail() {
http.HandleFunc("/SendMail", bsns.AddToQueue)
}
package WebAPI
import(
//Local Packages
"net/http"
"log"
"sync"
//This Project Packages
"bulkmail/packages/Presentation/WebAPI/Controllers"
myLogger "bulkmail/packages/Utils/Logger"
)
func WebAPI(wg *sync.WaitGroup) {
defer wg.Done()
Controllers.SendMail()
myLogger.Print("Server Started")
log.Fatal(http.ListenAndServe(":10000", nil))
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment