Skip to content

Commit 266c00e

Browse files
authored
List /media endpoint (#383)
* impl FromStr for PluginStatus * Implement `/media` list * Derive Serialize & Deserialize for JsonValue * Update MediaStatus type, MediaListParams & implement more integration tests
1 parent 53e97af commit 266c00e

File tree

10 files changed

+1072
-17
lines changed

10 files changed

+1072
-17
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package rs.wordpress.api.kotlin
2+
3+
import kotlinx.coroutines.test.runTest
4+
import org.junit.jupiter.api.Test
5+
import uniffi.wp_api.MediaListParams
6+
import uniffi.wp_api.wpAuthenticationFromUsernameAndPassword
7+
8+
class MediaEndpointTest {
9+
private val testCredentials = TestCredentials.INSTANCE
10+
private val siteUrl = testCredentials.parsedSiteUrl
11+
private val authentication = wpAuthenticationFromUsernameAndPassword(
12+
username = testCredentials.adminUsername, password = testCredentials.adminPassword
13+
)
14+
private val client = WpApiClient(siteUrl, authentication)
15+
16+
@Test
17+
fun testMediaListRequest() = runTest {
18+
val mediaList = client.request { requestBuilder ->
19+
requestBuilder.media().listWithEditContext(params = MediaListParams())
20+
}.assertSuccessAndRetrieveData().data
21+
assert(mediaList.isNotEmpty())
22+
}
23+
}

Diff for: wp_api/src/api_client.rs

+6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use crate::request::{
33
application_passwords_endpoint::{
44
ApplicationPasswordsRequestBuilder, ApplicationPasswordsRequestExecutor,
55
},
6+
media_endpoint::{MediaRequestBuilder, MediaRequestExecutor},
67
plugins_endpoint::{PluginsRequestBuilder, PluginsRequestExecutor},
78
post_types_endpoint::{PostTypesRequestBuilder, PostTypesRequestExecutor},
89
posts_endpoint::{PostsRequestBuilder, PostsRequestExecutor},
@@ -39,6 +40,7 @@ impl UniffiWpApiRequestBuilder {
3940
#[derive(Debug)]
4041
pub struct WpApiRequestBuilder {
4142
application_passwords: Arc<ApplicationPasswordsRequestBuilder>,
43+
media: Arc<MediaRequestBuilder>,
4244
plugins: Arc<PluginsRequestBuilder>,
4345
post_types: Arc<PostTypesRequestBuilder>,
4446
posts: Arc<PostsRequestBuilder>,
@@ -54,6 +56,7 @@ impl WpApiRequestBuilder {
5456
api_base_url,
5557
authentication;
5658
application_passwords,
59+
media,
5760
plugins,
5861
post_types,
5962
posts,
@@ -86,6 +89,7 @@ impl UniffiWpApiClient {
8689
#[derive(Debug)]
8790
pub struct WpApiClient {
8891
application_passwords: Arc<ApplicationPasswordsRequestExecutor>,
92+
media: Arc<MediaRequestExecutor>,
8993
plugins: Arc<PluginsRequestExecutor>,
9094
post_types: Arc<PostTypesRequestExecutor>,
9195
posts: Arc<PostsRequestExecutor>,
@@ -107,6 +111,7 @@ impl WpApiClient {
107111
authentication,
108112
request_executor;
109113
application_passwords,
114+
media,
110115
plugins,
111116
post_types,
112117
posts,
@@ -118,6 +123,7 @@ impl WpApiClient {
118123
}
119124

120125
api_client_generate_endpoint_impl!(WpApi, application_passwords);
126+
api_client_generate_endpoint_impl!(WpApi, media);
121127
api_client_generate_endpoint_impl!(WpApi, plugins);
122128
api_client_generate_endpoint_impl!(WpApi, post_types);
123129
api_client_generate_endpoint_impl!(WpApi, posts);

Diff for: wp_api/src/lib.rs

+15-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ pub use api_client::{WpApiClient, WpApiRequestBuilder};
44
pub use api_error::{ParsedRequestError, RequestExecutionError, WpApiError, WpError, WpErrorCode};
55
pub use parsed_url::{ParseUrlError, ParsedUrl};
66
use plugins::*;
7-
use std::str::FromStr;
7+
use serde::{Deserialize, Serialize};
8+
use std::{collections::HashMap, str::FromStr};
89
use url_query::AsQueryValue;
910
use users::*;
1011
pub use uuid::{WpUuid, WpUuidParseError};
@@ -16,6 +17,7 @@ mod uuid; // re-exported relevant types
1617

1718
pub mod application_passwords;
1819
pub mod login;
20+
pub mod media;
1921
pub mod plugins;
2022
pub mod post_types;
2123
pub mod posts;
@@ -119,6 +121,18 @@ pub enum EnumFromStrParsingError {
119121
UnknownVariant { value: String },
120122
}
121123

124+
#[derive(Debug, Serialize, Deserialize, uniffi::Enum)]
125+
#[serde(untagged)]
126+
pub enum JsonValue {
127+
Null,
128+
Bool(bool),
129+
Int(i64),
130+
Float(f64),
131+
String(String),
132+
Array(Vec<JsonValue>),
133+
Object(HashMap<String, JsonValue>),
134+
}
135+
122136
#[macro_export]
123137
macro_rules! generate {
124138
($type_name:ident) => {

0 commit comments

Comments
 (0)