Skip to content

Commit 436d58a

Browse files
committed
Client構造体を利用する形にリファクタリング
1 parent 0dc78fd commit 436d58a

5 files changed

Lines changed: 44 additions & 32 deletions

File tree

contents.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,32 +10,32 @@ import (
1010
"os"
1111
)
1212

13-
func backupContents(option Config, baseDir string) error {
13+
func (c *Client) backupContents(baseDir string) error {
1414
log.Println("コンテンツのバックアップを開始します")
1515

16-
for _, endpoint := range option.Endpoints {
16+
for _, endpoint := range c.Config.Endpoints {
1717
log.Printf("%sのバックアップを開始します\n", endpoint)
1818

19-
totalCount, err := getContentsTotalCount(option, endpoint)
19+
totalCount, err := c.getContentsTotalCount(endpoint)
2020
if err != nil {
2121
return fmt.Errorf("コンテンツの合計件数の取得でエラーが発生しました: %w", err)
2222
}
23-
requiredRequestCount := (totalCount/option.RequestUnit + 1)
23+
requiredRequestCount := (totalCount/c.Config.RequestUnit + 1)
2424

25-
err = saveContents(option, endpoint, requiredRequestCount, baseDir)
25+
err = c.saveContents(endpoint, requiredRequestCount, baseDir)
2626
if err != nil {
2727
return fmt.Errorf("コンテンツの保存でエラーが発生しました: %w", err)
2828
}
2929
}
3030
return nil
3131
}
3232

33-
func getContentsTotalCount(option Config, endpoint string) (int, error) {
33+
func (c *Client) getContentsTotalCount(endpoint string) (int, error) {
3434
req, _ := http.NewRequest(
3535
"GET",
36-
fmt.Sprintf("https://%s.microcms.io/api/v1/%s?limit=0", option.ServiceID, endpoint),
36+
fmt.Sprintf("https://%s.microcms.io/api/v1/%s?limit=0", c.Config.ServiceID, endpoint),
3737
nil)
38-
req.Header.Set("X-MICROCMS-API-KEY", option.APIKey)
38+
req.Header.Set("X-MICROCMS-API-KEY", c.Config.APIKey)
3939

4040
client := new(http.Client)
4141
resp, err := client.Do(req)
@@ -63,12 +63,12 @@ func getContentsTotalCount(option Config, endpoint string) (int, error) {
6363
return response.TotalCount, err
6464
}
6565

66-
func saveContents(option Config, endpoint string, requiredRequestCount int, baseDir string) error {
66+
func (c *Client) saveContents(endpoint string, requiredRequestCount int, baseDir string) error {
6767
for i := 0; i < requiredRequestCount; i++ {
6868
client := new(http.Client)
69-
requestURL := fmt.Sprintf("https://%s.microcms.io/api/v1/%s?limit=%d&offset=%d", option.ServiceID, endpoint, option.RequestUnit, option.RequestUnit*i)
69+
requestURL := fmt.Sprintf("https://%s.microcms.io/api/v1/%s?limit=%d&offset=%d", c.Config.ServiceID, endpoint, c.Config.RequestUnit, c.Config.RequestUnit*i)
7070
req, _ := http.NewRequest("GET", requestURL, nil)
71-
req.Header.Set("X-MICROCMS-API-KEY", option.APIKey)
71+
req.Header.Set("X-MICROCMS-API-KEY", c.Config.APIKey)
7272
resp, err := client.Do(req)
7373
if err != nil {
7474
return err

entitiy.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,7 @@ type Config struct {
2727
Endpoints []string `json:"endpoints"`
2828
RequestUnit int `json:"requestUnit"`
2929
}
30+
31+
type Client struct {
32+
Config *Config
33+
}

main.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -133,19 +133,21 @@ func initOption(modeFlag string) (*Config, error) {
133133
}
134134

135135
func main() {
136+
client := &Client{}
136137
// コマンドライン因数の取得
137138
modeFlag := flag.String("mode", "", "mode value")
138139
flag.Parse()
139140

140-
option, err := initOption(*modeFlag)
141+
var err error
142+
client.Config, err = initOption(*modeFlag)
141143
if err != nil {
142144
log.Fatal("正常にオプションをセットできませんでした")
143145
}
144146

145147
// バックアップのディレクトリ作成
146148
t := time.Now()
147149
timeDir := t.Format("2006_01_02_15_04_05")
148-
baseDir := "backup/" + option.ServiceID + "/" + timeDir + "/"
150+
baseDir := "backup/" + client.Config.ServiceID + "/" + timeDir + "/"
149151

150152
err = os.MkdirAll(baseDir, os.ModePerm)
151153
if err != nil {
@@ -154,23 +156,23 @@ func main() {
154156
log.Println("バックアップディレクトリを作成しました")
155157
log.Println("バックアップを開始します")
156158

157-
switch option.Target {
159+
switch client.Config.Target {
158160
case "all":
159-
err = backupContents(*option, baseDir)
161+
err = client.backupContents(baseDir)
160162
if err != nil {
161163
log.Fatal(err)
162164
}
163-
err = backupMedia(*option, baseDir)
165+
err = client.backupMedia(baseDir)
164166
if err != nil {
165167
log.Fatal(err)
166168
}
167169
case "contents":
168-
err = backupContents(*option, baseDir)
170+
err = client.backupContents(baseDir)
169171
if err != nil {
170172
log.Fatal(err)
171173
}
172174
case "media":
173-
err = backupMedia(*option, baseDir)
175+
err = client.backupMedia(baseDir)
174176
if err != nil {
175177
log.Fatal(err)
176178
}

main_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ func TestBackupMedia(t *testing.T) {
4242
}
4343
for _, tt := range tests {
4444
t.Run(tt.name, func(t *testing.T) {
45-
err := backupMedia(*tt.args.config, tt.args.baseDir)
45+
client := &Client{}
46+
client.Config = tt.args.config
47+
48+
err := client.backupMedia(tt.args.baseDir)
4649
got := err == nil
4750
if got != tt.want {
4851
t.Errorf("backupMedia() = %v, want %v", got, tt.want)
@@ -93,7 +96,10 @@ func TestBackupContents(t *testing.T) {
9396
}
9497
for _, tt := range tests {
9598
t.Run(tt.name, func(t *testing.T) {
96-
err := backupContents(*tt.args.config, tt.args.baseDir)
99+
client := &Client{}
100+
client.Config = tt.args.config
101+
102+
err := client.backupContents(tt.args.baseDir)
97103
got := err == nil
98104
if got != tt.want {
99105
t.Errorf("backupContents() = %v, want %v", got, tt.want)

media.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,32 @@ import (
1111
"strings"
1212
)
1313

14-
func backupMedia(option Config, baseDir string) error {
14+
func (c *Client) backupMedia(baseDir string) error {
1515
log.Println("メディアのバックアップを開始します")
1616
const requestUnit = 50
17-
totalCount, err := getTotalCount(option)
17+
totalCount, err := c.getTotalCount()
1818
if err != nil {
1919
return fmt.Errorf("合計件数の取得でエラーが発生しました: %w", err)
2020
}
2121
requiredRequestCount := (totalCount/requestUnit + 1)
2222

23-
mediaAry, err := getMediaAry(option, requiredRequestCount, requestUnit)
23+
mediaAry, err := c.getMediaAry(requiredRequestCount, requestUnit)
2424
if err != nil {
2525
return fmt.Errorf("メディア一覧の取得でエラーが発生しました: %w", err)
2626
}
27-
err = saveMedia(mediaAry, option, totalCount, baseDir)
27+
err = c.saveMedia(mediaAry, totalCount, baseDir)
2828
if err != nil {
2929
return fmt.Errorf("メディアの保存でエラーが発生しました: %w", err)
3030
}
3131
return nil
3232
}
3333

34-
func getTotalCount(option Config) (int, error) {
34+
func (c *Client) getTotalCount() (int, error) {
3535
req, _ := http.NewRequest(
3636
"GET",
37-
fmt.Sprintf("https://%s.microcms-management.io/api/v2/media?limit=0", option.ServiceID),
37+
fmt.Sprintf("https://%s.microcms-management.io/api/v2/media?limit=0", c.Config.ServiceID),
3838
nil)
39-
req.Header.Set("X-MICROCMS-API-KEY", option.APIKey)
39+
req.Header.Set("X-MICROCMS-API-KEY", c.Config.APIKey)
4040

4141
client := new(http.Client)
4242
resp, err := client.Do(req)
@@ -64,18 +64,18 @@ func getTotalCount(option Config) (int, error) {
6464
return response.TotalCount, err
6565
}
6666

67-
func getMediaAry(option Config, requiredRequestCount int, requestUnit int) ([]Media, error) {
67+
func (c *Client) getMediaAry(requiredRequestCount int, requestUnit int) ([]Media, error) {
6868
var ary []Media
6969
var token string
7070

7171
for i := 0; i < requiredRequestCount; i++ {
7272
client := new(http.Client)
7373
req, _ := http.NewRequest(
7474
"GET",
75-
fmt.Sprintf("https://%s.microcms-management.io/api/v2/media?limit=%d&token=%s", option.ServiceID, requestUnit, token),
75+
fmt.Sprintf("https://%s.microcms-management.io/api/v2/media?limit=%d&token=%s", c.Config.ServiceID, requestUnit, token),
7676
nil,
7777
)
78-
req.Header.Set("X-MICROCMS-API-KEY", option.APIKey)
78+
req.Header.Set("X-MICROCMS-API-KEY", c.Config.APIKey)
7979
resp, err := client.Do(req)
8080
if err != nil {
8181
return nil, err
@@ -103,11 +103,11 @@ func getMediaAry(option Config, requiredRequestCount int, requestUnit int) ([]Me
103103
return ary, nil
104104
}
105105

106-
func saveMedia(mediaAry []Media, option Config, totalCount int, baseDir string) error {
106+
func (c *Client) saveMedia(mediaAry []Media, totalCount int, baseDir string) error {
107107
for i, media := range mediaAry {
108108
client := new(http.Client)
109109
req, _ := http.NewRequest("GET", media.Url, nil)
110-
req.Header.Set("X-MICROCMS-API-KEY", option.APIKey)
110+
req.Header.Set("X-MICROCMS-API-KEY", c.Config.APIKey)
111111

112112
resp, err := client.Do(req)
113113
if err != nil {

0 commit comments

Comments
 (0)