Skip to content

Commit 14d46d6

Browse files
authored
Merge pull request #48 from TuTarea/develop
Ft/In the memory of strip option (#47)
2 parents fb9ed36 + 0b1d03c commit 14d46d6

File tree

6 files changed

+56
-41
lines changed

6 files changed

+56
-41
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## 0.4.0 (2023-07-27) [#47](https://github.com/TuTarea/vinted-rs/pull/47/)
4+
5+
## Improved
6+
- Remove `strip_option` in `Filter` struct for compatilbility.
7+
38
## 0.3.3 (2023-07-26) [#45](https://github.com/TuTarea/vinted-rs/pull/45/)
49

510
## Added

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "vinted-rs"
3-
version = "0.3.3"
3+
version = "0.4.0"
44
edition = "2021"
55
repository = "https://github.com/TuTarea/vinted-rs"
66
authors = ["Pepe Márquez <pepe.marquezromero@gmail.com>" , "Álvaro Cabo <alvarocaboac2@gmail.com>"]

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Via `cargo` you can add the library to your project's `Cargo.toml`
2424

2525
```toml
2626
[dependencies]
27-
vinted-rs = "0.3.3"
27+
vinted-rs = "0.4.0"
2828
```
2929

3030
## DB setup

examples/filter_example/src/main.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use bb8_postgres::tokio_postgres::NoTls;
33
use std::env;
44
use vinted_rs::{db::DbController, queries::Host, Filter, VintedWrapper};
55

6-
76
#[tokio::main]
87
async fn main() {
98
let args: Vec<String> = env::args().collect();
@@ -26,9 +25,9 @@ async fn main() {
2625
let brands = format!("{},{}", adidas.id, nike.id);
2726

2827
let filter = Filter::builder()
29-
.brand_ids(brands)
30-
.price_from(15)
31-
.price_to(20)
28+
.brand_ids(Some(brands))
29+
.price_from(Some(15))
30+
.price_to(Some(20))
3231
.build();
3332

3433
let vinted = VintedWrapper::new_with_host(host);
@@ -38,7 +37,6 @@ async fn main() {
3837
let items = vinted.get_items(&filter, 10).await.unwrap();
3938

4039
if items.items.is_empty() {
41-
4240
println!("No items found");
4341
}
4442
println!("{}", items);

src/model/filter.rs

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ pub mod size;
3232
/// use vinted_rs::Filter;
3333
///
3434
/// let filter: Filter = Filter::builder()
35-
/// .catalog_ids(String::from("4,16"))
36-
/// .brand_ids(String::from("14,53"))
37-
/// .build();
35+
/// .catalog_ids(Some(String::from("4,16"))
36+
/// .brand_ids(Some(String::from("14,53"))
37+
/// ).build();
3838
///
3939
/// // Women shoes and Women clothes that are only from brands Adidas and Nike.
4040
///
@@ -51,11 +51,11 @@ pub struct Filter {
5151
///```rust
5252
/// use vinted_rs::Filter;
5353
///
54-
///let filter: Filter = Filter::builder().search_text(String::from("shoes")).build();
54+
///let filter: Filter = Filter::builder().search_text(Some(String::from("shoes"))).build();
5555
///```
5656
///
5757
///
58-
#[builder(default, setter(strip_option))]
58+
#[builder(default)]
5959
pub search_text: Option<String>,
6060
///
6161
///
@@ -74,14 +74,13 @@ pub struct Filter {
7474
/// use vinted_rs::Filter;
7575
///
7676
///
77-
/// let filter: Filter = Filter::builder().catalog_ids(String::from("4,16")).build();
77+
/// let filter: Filter = Filter::builder().catalog_ids(Some(String::from("4,16"))).build();
7878
/// // Where 4 and 16 are catalog_ids from Vinted
7979
/// // 4 is catalog_id for Women clothes
8080
/// // 16 is catalog_id for Women Shoes
8181
///```
82-
#[builder(default, setter(strip_option))]
82+
#[builder(default)]
8383
pub catalog_ids: Option<String>,
84-
#[builder(default, setter(strip_option))]
8584
///The color IDs to filter items by. Must be formatted as `^[\d+,]*\d+$` regex.
8685
///
8786
///If not formated with the specified regex, undefined behaviour. (Input will not be checked).
@@ -96,12 +95,13 @@ pub struct Filter {
9695
/// use vinted_rs::Filter;
9796
///
9897
///
99-
/// let filter: Filter = Filter::builder().color_ids(String::from("1,5")).build();
98+
/// let filter: Filter = Filter::builder().color_ids(Some(String::from("1,5"))).build();
10099
/// // Where 1 and 5 are color_ids from Vinted
101100
/// // 1 is color_id for Black
102101
/// // 5 is color_id for Pink
103102
///```
104103
///
104+
#[builder(default)]
105105
pub color_ids: Option<String>,
106106
/// The brand IDs to filter items by. Must be formatted as `^[\d+,]*\d+$` regex.
107107
///
@@ -115,13 +115,13 @@ pub struct Filter {
115115
/// use vinted_rs::Filter;
116116
///
117117
///
118-
/// let filter: Filter = Filter::builder().brand_ids(String::from("14,53")).build();
118+
/// let filter: Filter = Filter::builder().brand_ids(Some(String::from("14,53"))).build();
119119
/// // Where 14 and 53 are brand_ids from Vinted
120120
/// // 14 is brand_id for Adidas
121121
/// // 53 is brand_id for Nike
122122
///```
123123
///
124-
#[builder(default, setter(strip_option))]
124+
#[builder(default)]
125125
pub brand_ids: Option<String>,
126126
/// The country IDs to filter items by. Must be formatted as `^[\d+,]*\d+$` regex.
127127
///
@@ -135,13 +135,13 @@ pub struct Filter {
135135
/// use vinted_rs::Filter;
136136
///
137137
///
138-
/// let filter: Filter = Filter::builder().countries_ids(String::from("7,16")).build();
138+
/// let filter: Filter = Filter::builder().countries_ids(Some(String::from("7,16"))).build();
139139
/// // Where 7 and 16 are country_ids from Vinted
140140
/// // 7 is country_id for Spain
141141
/// // 16 is country_id for France
142142
///```
143143
///
144-
#[builder(default, setter(strip_option))]
144+
#[builder(default)]
145145
pub countries_ids: Option<String>,
146146
/// The size IDs to filter items by. Must be formatted as `^[\d+,]*\d+$` regex.
147147
///
@@ -155,13 +155,13 @@ pub struct Filter {
155155
/// use vinted_rs::Filter;
156156
///
157157
///
158-
/// let filter: Filter = Filter::builder().size_ids(String::from("1226,102")).build();
158+
/// let filter: Filter = Filter::builder().size_ids(Some(String::from("1226,102"))).build();
159159
/// // Where 7 and 16 are country_ids from Vinted
160160
/// // 1226 is size_id for XXXS / 30 / 2
161161
/// // 102 is size_id for XXS / 32 / 4
162162
///```
163163
///
164-
#[builder(default, setter(strip_option))]
164+
#[builder(default)]
165165
pub material_ids: Option<String>,
166166
/// The material IDs to filter items by. Must be formatted as `^[\d+,]*\d+$` regex.
167167
///
@@ -175,15 +175,15 @@ pub struct Filter {
175175
/// use vinted_rs::Filter;
176176
///
177177
///
178-
/// let filter: Filter = Filter::builder().material_ids(String::from("44,102")).build();
178+
/// let filter: Filter = Filter::builder().material_ids(Some(String::from("44,102"))).build();
179179
/// // Where 7 and 16 are country_ids from Vinted
180180
/// // 44 is material_id for coton
181181
/// // 49 is material_id for silk
182182
///```
183183
///
184-
#[builder(default, setter(strip_option))]
184+
#[builder(default)]
185185
pub size_ids: Option<String>,
186-
#[builder(default, setter(strip_option))]
186+
187187
/// The article statuses to filter items by.
188188
///
189189
///### Example
@@ -192,9 +192,10 @@ pub struct Filter {
192192
/// use vinted_rs::model::filter::ArticleStatus;
193193
///
194194
/// let filter: Filter = Filter::builder().article_status(vec![ArticleStatus::NewTags ,
195-
/// ArticleStatus::NewNoTags]).build();
195+
/// ArticleStatus::NewNoTags])).build();
196196
///```
197197
///
198+
#[builder(default)]
198199
pub article_status: Option<Vec<ArticleStatus>>,
199200
/// The sort order for the retrieved items.
200201
@@ -204,10 +205,10 @@ pub struct Filter {
204205
/// use vinted_rs::model::filter::SortBy;
205206
206207
///
207-
/// let filter: Filter = Filter::builder().sort_by(SortBy::PriceAscendant).build();
208+
/// let filter: Filter = Filter::builder().sort_by(SortBy::PriceAscendant)).build();
208209
///```
209210
///
210-
#[builder(default, setter(strip_option))]
211+
#[builder(default)]
211212
pub sort_by: Option<SortBy>,
212213
/// The minimum price of the article
213214
///
@@ -216,10 +217,10 @@ pub struct Filter {
216217
/// use vinted_rs::Filter;
217218
///
218219
///
219-
/// let filter: Filter = Filter::builder().price_from(10u32).build();
220+
/// let filter: Filter = Filter::builder().price_from(10u32)).build();
220221
///```
221222
///
222-
#[builder(default, setter(strip_option))]
223+
#[builder(default)]
223224
pub price_from: Option<u32>,
224225
/// The max price of the article
225226
///
@@ -228,10 +229,10 @@ pub struct Filter {
228229
/// use vinted_rs::Filter;
229230
///
230231
///
231-
/// let filter: Filter = Filter::builder().price_from(20u32).build();
232+
/// let filter: Filter = Filter::builder().price_from(20u32)).build();
232233
///```
233234
///
234-
#[builder(default, setter(strip_option))]
235+
#[builder(default)]
235236
pub price_to: Option<u32>,
236237
}
237238
/**

src/tests/queries.rs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ fn _hex_to_rgb(hex_color: &str) -> (u8, u8, u8) {
3131
async fn test_get_item_query_text() {
3232
let vinted = VintedWrapper::new();
3333

34-
let filter: Filter = Filter::builder().search_text(String::from("shoes")).build();
34+
let filter: Filter = Filter::builder()
35+
.search_text(Some(String::from("shoes")))
36+
.build();
3537

3638
match vinted.get_items(&filter, 1).await {
3739
// Limitado el numero de elementos a 1
@@ -51,7 +53,9 @@ async fn test_get_item_brands() {
5153
let db: DbController<NoTls> = DbController::new(DB_URL, POOL_SIZE, NoTls).await.unwrap();
5254
let brand = db.get_brand_by_name(&String::from("Adidas")).await.unwrap();
5355

54-
let filter: Filter = Filter::builder().brand_ids(brand.id.to_string()).build();
56+
let filter: Filter = Filter::builder()
57+
.brand_ids(Some(brand.id.to_string()))
58+
.build();
5559

5660
match vinted.get_items(&filter, 1).await {
5761
// Limitado el numero de elementos a 1
@@ -71,7 +75,9 @@ async fn test_get_items_brands() {
7175
let db: DbController<NoTls> = DbController::new(DB_URL, POOL_SIZE, NoTls).await.unwrap();
7276
let brand = db.get_brand_by_name(&String::from("Adidas")).await.unwrap();
7377

74-
let filter: Filter = Filter::builder().brand_ids(brand.id.to_string()).build();
78+
let filter: Filter = Filter::builder()
79+
.brand_ids(Some(brand.id.to_string()))
80+
.build();
7581

7682
match vinted.get_items(&filter, 10).await {
7783
Ok(items) => {
@@ -91,15 +97,17 @@ async fn test_get_items_brands() {
9197
async fn test_get_items_catalogs_no_db() {
9298
let vinted = VintedWrapper::new();
9399
//Woman elements
94-
let filter: Filter = Filter::builder().catalog_ids(String::from("1904")).build();
100+
let filter: Filter = Filter::builder()
101+
.catalog_ids(Some(String::from("1904")))
102+
.build();
95103
let substrings = vec![
96104
"women", "mujer", "femme", "kobiety", "donna", "moterims", "noi", "dames", "zeny", "damen",
97105
"femei", "mulher", "beauty", "femmes", "dam",
98106
];
99107

100108
match vinted.get_items(&filter, 10).await {
101109
Ok(items) => {
102-
assert!(items.items.len() < 10);
110+
assert!(items.items.len() <= 10);
103111
items.items.iter().for_each(|item| {
104112
let url_item: &str = &item.url;
105113
let category = url_item.split('/').nth(3).unwrap();
@@ -124,7 +132,10 @@ async fn test_get_items_by_price() {
124132
let min = 50;
125133
let max = 100;
126134

127-
let filter: Filter = Filter::builder().price_from(min).price_to(max).build();
135+
let filter: Filter = Filter::builder()
136+
.price_from(Some(min))
137+
.price_to(Some(max))
138+
.build();
128139

129140
match vinted.get_items(&filter, 10).await {
130141
Ok(items) => {
@@ -149,7 +160,7 @@ async fn test_get_items_by_size() {
149160
let size_id = String::from("1568");
150161
let size_title = String::from("XS");
151162

152-
let filter: Filter = Filter::builder().size_ids(size_id).build();
163+
let filter: Filter = Filter::builder().size_ids(Some(size_id)).build();
153164

154165
match vinted.get_items(&filter, 20).await {
155166
Ok(items) => {
@@ -170,7 +181,7 @@ async fn test_get_items_by_material() {
170181
let vinted = VintedWrapper::new();
171182
let id = 49; // Silk
172183

173-
let filter: Filter = Filter::builder().material_ids(id.to_string()).build();
184+
let filter: Filter = Filter::builder().material_ids(Some(id.to_string())).build();
174185
let num: usize = 15;
175186

176187
match vinted.get_items(&filter, num as u32).await {
@@ -192,7 +203,7 @@ async fn test_get_items_by_color() {
192203

193204
//let props = calculate_color_props(hex);
194205

195-
let filter: Filter = Filter::builder().color_ids(id.to_string()).build();
206+
let filter: Filter = Filter::builder().color_ids(Some(id.to_string())).build();
196207

197208
let num: usize = 20;
198209

0 commit comments

Comments
 (0)