Skip to content

Commit 2e56f80

Browse files
authored
Upd/lc fix (#2)
* upd/lc-fix [v0.3.0] fix * upd/lc-fix [v0.3.1] nmx
1 parent 61bda69 commit 2e56f80

9 files changed

Lines changed: 62 additions & 28 deletions

File tree

README.md

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ A release asset implements:
129129
* `Name() string`
130130
* `URL() *url.URL`
131131
* `ContentType() string`
132-
* `Size() uint32`
132+
* `Size() uint32` — maximum representable size is ~4.29 GB (`math.MaxUint32` bytes). Assets larger than this will have
133+
their size truncated.
133134
134135
## Working with tags
135136
@@ -175,9 +176,8 @@ fmt.Println(tag.String())
175176
176177
### Stream tags
177178
178-
`TagsStream` writes tags into a channel you provide.
179-
180-
A safe consumption pattern is to run streaming in a goroutine and close the channel after it returns:
179+
`TagsStream` writes tags into a channel you provide. The caller is responsible for closing the channel after the stream
180+
returns:
181181
182182
```go
183183
package main
@@ -201,7 +201,7 @@ func main() {
201201
ch := make(chan lightweigit.ProviderTagInterface, 32)
202202
203203
go func() {
204-
defer close(ch)
204+
defer close(ch)
205205
_ = obj.TagsStream(ctx, ch, 0) // limit=0 means provider-defined/default behavior
206206
}()
207207
@@ -268,7 +268,7 @@ func main() {
268268
ch := make(chan lightweigit.ProviderReleaseInterface, 16)
269269
270270
go func() {
271-
defer close(ch)
271+
defer close(ch)
272272
_ = obj.ReleasesStream(ctx, ch, 0)
273273
}()
274274
@@ -352,13 +352,15 @@ The library provides a shared HTTP client with a short timeout:
352352
* `lightweigit.HttpClient` defaults to 4 seconds
353353
* `lightweigit.ErrNotFound` is returned when the provider responds with HTTP 404
354354
355-
If you need different networking settings (proxy, timeout, transport tuning), you can override the client:
355+
If you need different networking settings (timeout, proxy, custom TLS, transport tuning), you can replace the client
356+
before making any calls:
356357
357358
```go
358359
package main
359360
360361
import (
361362
"net/http"
363+
"net/url"
362364
"time"
363365
364366
lightweigit "github.com/voluminor/lightweigit-loader"
@@ -371,6 +373,35 @@ func main() {
371373
}
372374
```
373375
376+
Example with HTTP proxy:
377+
378+
```go
379+
proxyURL, _ := url.Parse("http://proxy.example.com:8080")
380+
lightweigit.HttpClient = &http.Client{
381+
Timeout: 10 * time.Second,
382+
Transport: &http.Transport{
383+
Proxy: http.ProxyURL(proxyURL),
384+
},
385+
}
386+
```
387+
388+
Example with SOCKS5 proxy (requires `golang.org/x/net/proxy`):
389+
390+
```go
391+
lightweigit.HttpClient = &http.Client{
392+
Timeout: 10 * time.Second,
393+
Transport: &http.Transport{
394+
Proxy: http.ProxyURL(&url.URL{
395+
Scheme: "socks5",
396+
Host: "127.0.0.1:1080",
397+
}),
398+
},
399+
}
400+
```
401+
402+
> **Note:** `lightweigit.HttpClient` is a shared global variable. Changing it affects all providers and all goroutines
403+
> in the process. Set it once during initialization before making any API calls.
404+
374405
## Design notes
375406
376407
* Dependency-free (standard library only)

_generate/build_func/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,9 @@ func main() {
121121

122122
data.ImportsArr = make([]string, 0)
123123
data.ImportsArr = append(data.ImportsArr, "errors")
124+
data.ImportsArr = append(data.ImportsArr, "fmt")
124125
data.ImportsArr = append(data.ImportsArr, "github.com/voluminor/lightweigit-loader")
126+
data.ImportsArr = append(data.ImportsArr, "github.com/voluminor/lightweigit-loader/target")
125127

126128
data.Dirs = dirs
127129
for _, dir := range dirs {

_generate/build_func/template.tmpl

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,29 +55,27 @@ if len(data) < 5 {
5555
return nil, errors.New("not enough data")
5656
}
5757

58+
switch target.ModType(data[0]) {
5859
{{- range $i, $dir := .Dirs }}
59-
60-
m{{$i}}, err := {{$dir}}.UnmarshalTag(data)
61-
if err == nil {
62-
return m{{$i}}, nil
63-
}
60+
case target.Mod{{title $dir}}Tag:
61+
return {{$dir}}.UnmarshalTag(data)
6462
{{- end }}
65-
66-
return nil, err
63+
default:
64+
return nil, fmt.Errorf("unknown tag mod type: %d", data[0])
65+
}
6766
}
6867

6968
func UnmarshalRelease(data []byte) (lightweigit.ProviderReleaseInterface, error) {
7069
if len(data) < 5 {
7170
return nil, errors.New("not enough data")
7271
}
7372

73+
switch target.ModType(data[0]) {
7474
{{- range $i, $dir := .Dirs }}
75-
76-
m{{$i}}, err := {{$dir}}.UnmarshalRelease(data)
77-
if err == nil {
78-
return m{{$i}}, nil
79-
}
75+
case target.Mod{{title $dir}}Release:
76+
return {{$dir}}.UnmarshalRelease(data)
8077
{{- end }}
81-
82-
return nil, err
78+
default:
79+
return nil, fmt.Errorf("unknown release mod type: %d", data[0])
80+
}
8381
}

_generate/func.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ func WriteFileFromTemplate(pathToFile string, textTemplate string, dataTemplate
2020
tmpl := template.New("cli-template").Funcs(template.FuncMap{
2121
"split": strings.Split,
2222
"mod": func(a, b int) int { return a % b },
23+
"title": strings.Title,
2324
})
2425

2526
t, err := tmpl.New(fileName).Parse(textTemplate)

_run/values/ver.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v0.3.0
1+
v0.3.1

bitbucket/func_release.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ func (obj *Obj) ReleasesStream(ctx context.Context, out chan lightweigit.Provide
208208
assets = nil
209209
}
210210

211-
u := fmt.Sprintf("refs/tags?pagelen=%d&sort=-name", perPage)
211+
u := fmt.Sprintf("refs/tags?pagelen=%d&sort=-target.date", perPage)
212212
sent := 0
213213
for {
214214
if ctx.Err() != nil {

bitbucket/func_tag.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ type tagsRespObj struct {
6666

6767
// //
6868

69-
// TagLatest бере ПЕРШИЙ тег зі /refs/tags?pagelen=1&sort=-name (natural sorting по імені)
69+
// TagLatest бере ПЕРШИЙ тег зі /refs/tags?pagelen=1&sort=-target.date (сортування за датою коміта)
7070
func (obj *Obj) TagLatest() (lightweigit.ProviderTagInterface, error) {
7171
var tr tagsRespObj
72-
if err := obj.getJSON("refs/tags?pagelen=1&sort=-name", &tr); err != nil {
72+
if err := obj.getJSON("refs/tags?pagelen=1&sort=-target.date", &tr); err != nil {
7373
return nil, err
7474
}
7575
if len(tr.Values) == 0 {
@@ -106,7 +106,7 @@ func (obj *Obj) TagsStream(ctx context.Context, out chan lightweigit.ProviderTag
106106
perPage = limit
107107
}
108108

109-
u := fmt.Sprintf("refs/tags?pagelen=%d&sort=-name", perPage)
109+
u := fmt.Sprintf("refs/tags?pagelen=%d&sort=-target.date", perPage)
110110
sent := 0
111111
for {
112112
if ctx.Err() != nil {

github/func_release.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package github
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"net/url"
78
"path"
@@ -162,7 +163,7 @@ func (obj *Obj) ReleaseFind(findRelease string) (lightweigit.ProviderReleaseInte
162163
if err == nil {
163164
return buildReleaseObj(obj, li), nil
164165
}
165-
if err != nil && err.Error() != "not found" {
166+
if !errors.Is(err, lightweigit.ErrNotFound) {
166167
return nil, err
167168
}
168169

gitlab/func_release.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package gitlab
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"net/url"
78
"path"
@@ -181,7 +182,7 @@ func (obj *Obj) ReleaseFind(findRelease string) (lightweigit.ProviderReleaseInte
181182
if err == nil {
182183
return buildReleaseObj(obj, li), nil
183184
}
184-
if err != nil && err.Error() != "not found" {
185+
if !errors.Is(err, lightweigit.ErrNotFound) {
185186
return nil, err
186187
}
187188

0 commit comments

Comments
 (0)