Skip to content

Commit 309c516

Browse files
authored
feat: Updated fields for SlackUserProfile (#325)
1 parent 6c8d495 commit 309c516

5 files changed

Lines changed: 39 additions & 5 deletions

File tree

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "slack-morphism"
3-
version = "2.12.0"
3+
version = "2.14.0"
44
authors = ["Abdulla Abdurakhmanov <me@abdolence.dev>"]
55
edition = "2021"
66
license = "Apache-2.0"

src/models/blocks/kit.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1094,7 +1094,7 @@ mod test {
10941094
let payload = include_str!("./fixtures/slack_image_blocks.json");
10951095
let content: SlackMessageContent = serde_json::from_str(payload)?;
10961096
let blocks = content.blocks.expect("Blocks should not be empty");
1097-
match blocks.get(0) {
1097+
match blocks.first() {
10981098
Some(SlackBlock::Section(section)) => match &section.accessory {
10991099
Some(SlackSectionBlockElement::Image(image)) => {
11001100
assert_eq!(image.alt_text, "alt text for image");

src/models/common/emoji.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ mod test {
118118
fn test_deserialize_emoji_url_with_escaped_slashes() {
119119
let emoji_url = r#""https:\/\/emoji.slack-edge.com\/test_emoji.png""#;
120120

121-
let r = serde_json::from_str::<SlackEmojiRef>(&emoji_url).unwrap();
121+
let r = serde_json::from_str::<SlackEmojiRef>(emoji_url).unwrap();
122122
assert_eq!(
123123
r,
124124
SlackEmojiRef::Url(

src/models/common/mod.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use chrono::serde::ts_seconds;
2-
use chrono::{DateTime, TimeZone, Utc};
2+
use chrono::{DateTime, NaiveDate, TimeZone, Utc};
33
use rsb_derive::Builder;
44
use rvstruct::ValueStruct;
55
use serde::{Deserialize, Serialize};
@@ -124,6 +124,15 @@ pub struct SlackBotId(pub String);
124124
#[derive(Debug, Eq, PartialEq, Hash, Clone, Serialize, Deserialize, ValueStruct)]
125125
pub struct SlackDateTime(#[serde(with = "ts_seconds")] pub DateTime<Utc>);
126126

127+
#[derive(Debug, Eq, PartialEq, Hash, Clone, Serialize, Deserialize, ValueStruct)]
128+
pub struct SlackDate(pub String);
129+
130+
impl SlackDate {
131+
pub fn to_naive_date(&self) -> Option<NaiveDate> {
132+
NaiveDate::parse_from_str(self.value(), "%Y-%m-%d").ok()
133+
}
134+
}
135+
127136
#[derive(Debug, Eq, PartialEq, Hash, Clone, Serialize, Deserialize, ValueStruct)]
128137
pub struct SlackLocale(pub String);
129138

@@ -181,6 +190,9 @@ impl fmt::Debug for SlackSigningSecret {
181190
#[derive(Debug, Eq, PartialEq, Hash, Clone, Serialize, Deserialize, ValueStruct)]
182191
pub struct EmailAddress(pub String);
183192

193+
#[derive(Debug, Eq, PartialEq, Hash, Clone, Serialize, Deserialize, ValueStruct)]
194+
pub struct PhoneNumber(pub String);
195+
184196
#[serde_as]
185197
#[skip_serializing_none]
186198
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]

src/models/common/user.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
use crate::*;
2+
use std::collections::HashMap;
23

34
use crate::SlackUserId;
45
use rsb_derive::Builder;
56
use rvstruct::*;
67
use serde::{Deserialize, Serialize};
7-
use serde_with::{serde_as, skip_serializing_none, DisplayFromStr};
8+
use serde_with::{serde_as, skip_serializing_none, DisplayFromStr, NoneAsEmptyString};
89

910
#[skip_serializing_none]
1011
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
@@ -26,6 +27,7 @@ pub struct SlackUser {
2627
pub enterprise_user: Option<SlackEnterpriseUser>,
2728
}
2829

30+
#[serde_as]
2931
#[skip_serializing_none]
3032
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
3133
pub struct SlackUserProfile {
@@ -42,6 +44,15 @@ pub struct SlackUserProfile {
4244
#[serde(flatten)]
4345
pub icon: Option<SlackIcon>,
4446
pub team: Option<SlackTeamId>,
47+
pub start_date: Option<SlackDate>,
48+
pub first_name: Option<String>,
49+
pub last_name: Option<String>,
50+
#[serde_as(as = "NoneAsEmptyString")]
51+
pub phone: Option<PhoneNumber>,
52+
pub pronouns: Option<String>,
53+
pub title: Option<String>,
54+
55+
pub fields: Option<HashMap<SlackUserProfileFieldId, SlackUserProfileFieldValue>>,
4556
}
4657

4758
#[skip_serializing_none]
@@ -123,3 +134,14 @@ pub struct SlackEnterpriseUser {
123134
pub flags: SlackUserFlags,
124135
pub teams: Option<Vec<SlackTeamId>>,
125136
}
137+
138+
#[derive(Debug, Eq, PartialEq, Hash, Clone, Serialize, Deserialize, ValueStruct)]
139+
pub struct SlackUserProfileFieldId(pub String);
140+
141+
#[serde_as]
142+
#[derive(Debug, Eq, PartialEq, Clone, Serialize, Deserialize)]
143+
pub struct SlackUserProfileFieldValue {
144+
pub value: String,
145+
#[serde_as(as = "NoneAsEmptyString")]
146+
pub alt: Option<String>,
147+
}

0 commit comments

Comments
 (0)