Skip to content

Commit 5b53dcd

Browse files
authored
Merge branch 'main' into feature/guid
2 parents 457eba3 + 21cbd59 commit 5b53dcd

File tree

8 files changed

+57
-63
lines changed

8 files changed

+57
-63
lines changed

.github/workflows/integration-tests.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
env:
2222
CGO_CFLAGS: -mmacosx-version-min=10.15
2323
CGO_LDFLAGS: -mmacosx-version-min=10.15
24-
- uses: actions/upload-artifact@v2
24+
- uses: actions/upload-artifact@v4
2525
with:
2626
name: ipatool
2727
path: ipatool
@@ -35,7 +35,7 @@ jobs:
3535
matrix:
3636
command: [auth, download, purchase, search]
3737
steps:
38-
- uses: actions/download-artifact@v2
38+
- uses: actions/download-artifact@v4
3939
with:
4040
name: ipatool
4141
path: build

.github/workflows/issues-cleanup.yml

Lines changed: 0 additions & 18 deletions
This file was deleted.

.github/workflows/release.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,32 +71,32 @@ jobs:
7171
CGO_CFLAGS: -mmacosx-version-min=10.15
7272
CGO_LDFLAGS: -mmacosx-version-min=10.15
7373
CGO_ENABLED: 1
74-
- uses: actions/upload-artifact@v2
74+
- uses: actions/upload-artifact@v4
7575
with:
7676
name: ipatool-${{ needs.get_version.outputs.version }}-windows-arm64.exe
7777
path: ipatool-${{ needs.get_version.outputs.version }}-windows-arm64.exe
7878
if-no-files-found: error
79-
- uses: actions/upload-artifact@v2
79+
- uses: actions/upload-artifact@v4
8080
with:
8181
name: ipatool-${{ needs.get_version.outputs.version }}-windows-amd64.exe
8282
path: ipatool-${{ needs.get_version.outputs.version }}-windows-amd64.exe
8383
if-no-files-found: error
84-
- uses: actions/upload-artifact@v2
84+
- uses: actions/upload-artifact@v4
8585
with:
8686
name: ipatool-${{ needs.get_version.outputs.version }}-linux-arm64
8787
path: ipatool-${{ needs.get_version.outputs.version }}-linux-arm64
8888
if-no-files-found: error
89-
- uses: actions/upload-artifact@v2
89+
- uses: actions/upload-artifact@v4
9090
with:
9191
name: ipatool-${{ needs.get_version.outputs.version }}-linux-amd64
9292
path: ipatool-${{ needs.get_version.outputs.version }}-linux-amd64
9393
if-no-files-found: error
94-
- uses: actions/upload-artifact@v2
94+
- uses: actions/upload-artifact@v4
9595
with:
9696
name: ipatool-${{ needs.get_version.outputs.version }}-macos-arm64
9797
path: ipatool-${{ needs.get_version.outputs.version }}-macos-arm64
9898
if-no-files-found: error
99-
- uses: actions/upload-artifact@v2
99+
- uses: actions/upload-artifact@v4
100100
with:
101101
name: ipatool-${{ needs.get_version.outputs.version }}-macos-amd64
102102
path: ipatool-${{ needs.get_version.outputs.version }}-macos-amd64
@@ -111,7 +111,7 @@ jobs:
111111
arch: [ arm64, amd64 ]
112112
steps:
113113
- uses: actions/checkout@v2
114-
- uses: actions/download-artifact@v2
114+
- uses: actions/download-artifact@v4
115115
with:
116116
name: ipatool-${{ needs.get_version.outputs.version }}-windows-${{ matrix.arch }}.exe
117117
path: bin
@@ -138,7 +138,7 @@ jobs:
138138
arch: [ arm64, amd64 ]
139139
steps:
140140
- uses: actions/checkout@v2
141-
- uses: actions/download-artifact@v2
141+
- uses: actions/download-artifact@v4
142142
with:
143143
name: ipatool-${{ needs.get_version.outputs.version }}-linux-${{ matrix.arch }}
144144
path: bin
@@ -163,14 +163,14 @@ jobs:
163163
- uses: actions/checkout@v2
164164
with:
165165
path: ./ipatool
166-
- uses: actions/download-artifact@v2
166+
- uses: actions/download-artifact@v4
167167
with:
168168
name: ipatool-${{ needs.get_version.outputs.version }}-macos-arm64
169169
path: bin
170170
- run: tar -czvf $BIN.tar.gz bin/$BIN && rm -rf bin/
171171
env:
172172
BIN: ipatool-${{ needs.get_version.outputs.version }}-macos-arm64
173-
- uses: actions/download-artifact@v2
173+
- uses: actions/download-artifact@v4
174174
with:
175175
name: ipatool-${{ needs.get_version.outputs.version }}-macos-amd64
176176
path: bin

go.mod

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ require (
1313
github.com/spf13/cobra v1.6.1
1414
github.com/thediveo/enumflag/v2 v2.0.1
1515
go.uber.org/mock v0.4.0
16-
golang.org/x/net v0.23.0
17-
golang.org/x/term v0.18.0
16+
golang.org/x/net v0.33.0
17+
golang.org/x/term v0.27.0
1818
howett.net/plist v1.0.0
1919
)
2020

@@ -24,7 +24,7 @@ require (
2424
github.com/dvsekhvalnov/jose2go v1.6.0 // indirect
2525
github.com/go-logr/logr v1.2.3 // indirect
2626
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
27-
github.com/google/go-cmp v0.5.9 // indirect
27+
github.com/google/go-cmp v0.6.0 // indirect
2828
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
2929
github.com/inconshreveable/mousetrap v1.0.1 // indirect
3030
github.com/juju/go4 v0.0.0-20160222163258-40d72ab9641a // indirect
@@ -37,10 +37,10 @@ require (
3737
github.com/rivo/uniseg v0.2.0 // indirect
3838
github.com/spf13/pflag v1.0.5 // indirect
3939
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
40-
golang.org/x/mod v0.14.0 // indirect
41-
golang.org/x/sys v0.18.0 // indirect
42-
golang.org/x/text v0.14.0 // indirect
43-
golang.org/x/tools v0.17.0 // indirect
40+
golang.org/x/mod v0.17.0 // indirect
41+
golang.org/x/sys v0.28.0 // indirect
42+
golang.org/x/text v0.21.0 // indirect
43+
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
4444
gopkg.in/errgo.v1 v1.0.1 // indirect
4545
gopkg.in/retry.v1 v1.0.3 // indirect
4646
gopkg.in/yaml.v3 v3.0.1 // indirect

go.sum

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6
2222
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
2323
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
2424
github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
25-
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
26-
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
25+
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
26+
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
2727
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU=
2828
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0=
2929
github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc=
@@ -88,24 +88,25 @@ go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
8888
go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
8989
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
9090
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
91-
golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
92-
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
93-
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
94-
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
91+
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
92+
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
93+
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
94+
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
95+
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
9596
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
9697
golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
9798
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
9899
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
99100
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
100-
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
101-
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
101+
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
102+
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
102103
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
103-
golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
104-
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
105-
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
106-
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
107-
golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc=
108-
golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps=
104+
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
105+
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
106+
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
107+
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
108+
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
109+
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
109110
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
110111
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
111112
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U=

pkg/appstore/appstore_login.go

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"encoding/json"
55
"errors"
66
"fmt"
7+
gohttp "net/http"
78
"strconv"
89
"strings"
910

@@ -61,18 +62,19 @@ type loginResult struct {
6162

6263
func (t *appstore) login(email, password, authCode, guid string) (Account, error) {
6364
redirect := ""
64-
var err error
65+
66+
var (
67+
err error
68+
res http.Result[loginResult]
69+
)
70+
6571
retry := true
66-
var res http.Result[loginResult]
6772

6873
for attempt := 1; retry && attempt <= 4; attempt++ {
69-
ac := authCode
70-
if attempt == 1 {
71-
ac = ""
72-
}
73-
request := t.loginRequest(email, password, ac, guid, attempt)
74-
request.URL, redirect = util.IfEmpty(redirect, request.URL), ""
74+
request := t.loginRequest(email, password, authCode, guid, attempt)
75+
request.URL, _ = util.IfEmpty(redirect, request.URL), ""
7576
res, err = t.loginClient.Send(request)
77+
7678
if err != nil {
7779
return Account{}, fmt.Errorf("request failed: %w", err)
7880
}
@@ -114,8 +116,14 @@ func (t *appstore) login(email, password, authCode, guid string) (Account, error
114116
return acc, nil
115117
}
116118

117-
func (t *appstore) parseLoginResponse(res *http.Result[loginResult], attempt int, authCode string) (retry bool, redirect string, err error) {
118-
if res.StatusCode == 302 {
119+
func (t *appstore) parseLoginResponse(res *http.Result[loginResult], attempt int, authCode string) (bool, string, error) {
120+
var (
121+
retry bool
122+
redirect string
123+
err error
124+
)
125+
126+
if res.StatusCode == gohttp.StatusFound {
119127
if redirect, err = res.GetHeader("location"); err != nil {
120128
err = fmt.Errorf("failed to retrieve redirect location: %w", err)
121129
} else {
@@ -131,10 +139,11 @@ func (t *appstore) parseLoginResponse(res *http.Result[loginResult], attempt int
131139
} else {
132140
err = NewErrorWithMetadata(errors.New("something went wrong"), res)
133141
}
134-
} else if res.StatusCode != 200 || res.Data.PasswordToken == "" || res.Data.DirectoryServicesID == "" {
142+
} else if res.StatusCode != gohttp.StatusOK || res.Data.PasswordToken == "" || res.Data.DirectoryServicesID == "" {
135143
err = NewErrorWithMetadata(errors.New("something went wrong"), res)
136144
}
137-
return
145+
146+
return retry, redirect, err
138147
}
139148

140149
func (t *appstore) loginRequest(email, password, authCode, guid string, attempt int) http.Request {

pkg/http/client.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ func NewClient[R interface{}](args Args) Client[R] {
5757
if req.Referer() == appStoreAuthURL {
5858
return http.ErrUseLastResponse
5959
}
60+
6061
return nil
6162
},
6263
Transport: &AddHeaderTransport{http.DefaultTransport},

pkg/http/result.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,6 @@ func (c *Result[R]) GetHeader(key string) (string, error) {
2222
return v, nil
2323
}
2424
}
25+
2526
return "", ErrHeaderNotFound
2627
}

0 commit comments

Comments
 (0)