Skip to content

Instantly share code, notes, and snippets.

@Jimeux
Jimeux / main.go
Last active February 10, 2021 02:52
Extract Chi routing from main.go with handlers struct
func main() {
...
mux := handler(conf)
...
}
func handler(conf config.Config) chi.Router {
db, err := gorm.Open(mysql.Open(conf.Database.String), &gorm.Config{
SkipDefaultTransaction: true,
})
type DomainError struct {
prefix string
code int
msg string
}
func NewError(prefix string, code int, msg string) error {
return &DomainError{prefix: prefix, code: code, msg: msg}
}
@Jimeux
Jimeux / e6_upload_client_async.go
Created February 3, 2019 06:42
io.Pipeによるファイルのアップロード
package main
import (
"io"
"log"
"mime/multipart"
"net/http"
"os"
)
package main
import (
"fmt"
"io"
"log"
"net/http"
"net/http/httputil"
"os"
"time"
package main
import (
"bytes"
"io"
"log"
"mime/multipart"
"net/http"
"os"
)
snsMessage, _ := ReceiveMessage()
message, _ := ParseMessageJSON(snsMessage)
_, err := sqsClient.DeleteMessage(&sqs.DeleteMessageInput{
QueueUrl: &queueURL,
ReceiptHandle: snsMessage.ReceiptHandle,
})
if err != nil {
fmt.Errorf("メッセージを削除できませんでした:" + *snsMessage.ReceiptHandle)
snsMessage, _ := ReceiveMessage()
var message SnsMessage
json.Unmarshal([]byte(*snsMessage.Body), &message)
fmt.Println(message.Message) // "Test Message"
import "time"
type SnsMessage struct {
Type string
MessageId string
TopicArn string
Subject string
Message string
Timestamp time.Time
SignatureVersion int `json:",string"`
sqsClient := sqs.New(awsSession)
result, err := sqsClient.ReceiveMessage(&sqs.ReceiveMessageInput{
QueueUrl: &queueURL,
AttributeNames: aws.StringSlice([]string{
sqs.MessageSystemAttributeNameSentTimestamp,
}),
MaxNumberOfMessages: aws.Int64(1),
MessageAttributeNames: aws.StringSlice([]string{
sqs.QueueAttributeNameAll,
snsClient := sns.New(awsSession)
subject := "Test Subject"
message := "Test Message"
_, err := snsClient.Publish(&sns.PublishInput{
Subject: &subject,
Message: &message,
TopicArn: &topicARN,
})