Native names support in Passport.
GitOrigin-RevId: 3f38ec52d8c645eb6ab529bc4968ad400949482f
This commit is contained in:
parent
b4be4da02b
commit
dcaf773152
@ -873,9 +873,11 @@ passportElementTypeEmailAddress = PassportElementType;
|
||||
//@description Represents a date according to the Gregorian calendar @day Day of the month, 1-31 @month Month, 1-12 @year Year, 1-9999
|
||||
date day:int32 month:int32 year:int32 = Date;
|
||||
|
||||
//@description Contains the user's personal details @first_name First name of the user; 1-255 characters @middle_name Middle name of the user; 0-255 characters @last_name Last name of the user; 1-255 characters @birthdate Birthdate of the user
|
||||
//@gender Gender of the user, "male" or "female" @country_code A two-letter ISO 3166-1 alpha-2 country code for the user's country @residence_country_code A two-letter ISO 3166-1 alpha-2 country code for the user's residence country
|
||||
personalDetails first_name:string middle_name:string last_name:string birthdate:date gender:string country_code:string residence_country_code:string = PersonalDetails;
|
||||
//@description Contains the user's personal details
|
||||
//@first_name First name of the user written in English; 1-255 characters @middle_name Middle name of the user written in English; 0-255 characters @last_name Last name of the user written in English; 1-255 characters
|
||||
//@native_first_name Native first name of the user; 1-255 characters @native_middle_name Native middle name of the user; 0-255 characters @native_last_name Native last name of the user; 1-255 characters
|
||||
//@birthdate Birthdate of the user @gender Gender of the user, "male" or "female" @country_code A two-letter ISO 3166-1 alpha-2 country code for the user's country @residence_country_code A two-letter ISO 3166-1 alpha-2 country code for the user's residence country
|
||||
personalDetails first_name:string middle_name:string last_name:string native_first_name:string native_middle_name:string native_last_name:string birthdate:date gender:string country_code:string residence_country_code:string = PersonalDetails;
|
||||
|
||||
//@description An identity document @number Document number; 1-24 characters @expiry_date Document expiry date; may be null @front_side Front side of the document
|
||||
//@reverse_side Reverse side of the document; only for driver license and identity card @selfie Selfie with the document; may be null @translation List of files with the document translation
|
||||
|
Binary file not shown.
@ -272,6 +272,15 @@ string get_secure_value_data_field_name(SecureValueType type, string field_name)
|
||||
field_name == "gender" || field_name == "country_code" || field_name == "residence_country_code") {
|
||||
return field_name;
|
||||
}
|
||||
if (field_name == "first_name_native") {
|
||||
return "native_first_name";
|
||||
}
|
||||
if (field_name == "middle_name_native") {
|
||||
return "native_middle_name";
|
||||
}
|
||||
if (field_name == "last_name_native") {
|
||||
return "native_last_name";
|
||||
}
|
||||
if (field_name == "birth_date") {
|
||||
return "birthdate";
|
||||
}
|
||||
@ -726,38 +735,12 @@ static Result<td_api::object_ptr<td_api::date>> get_date_object(Slice date) {
|
||||
return td_api::make_object<td_api::date>(day, month, year);
|
||||
}
|
||||
|
||||
static Status check_first_name(string &first_name) {
|
||||
if (!clean_input_string(first_name)) {
|
||||
return Status::Error(400, "First name must be encoded in UTF-8");
|
||||
static Status check_name(string &name) {
|
||||
if (!clean_input_string(name)) {
|
||||
return Status::Error(400, "Name must be encoded in UTF-8");
|
||||
}
|
||||
if (first_name.empty()) {
|
||||
return Status::Error(400, "First name must not be empty");
|
||||
}
|
||||
if (utf8_length(first_name) > 255) {
|
||||
return Status::Error(400, "First name is too long");
|
||||
}
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
static Status check_middle_name(string &middle_name) {
|
||||
if (!clean_input_string(middle_name)) {
|
||||
return Status::Error(400, "Middle name must be encoded in UTF-8");
|
||||
}
|
||||
if (utf8_length(middle_name) > 255) {
|
||||
return Status::Error(400, "Middle name is too long");
|
||||
}
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
static Status check_last_name(string &last_name) {
|
||||
if (!clean_input_string(last_name)) {
|
||||
return Status::Error(400, "Last name must be encoded in UTF-8");
|
||||
}
|
||||
if (last_name.empty()) {
|
||||
return Status::Error(400, "Last name must not be empty");
|
||||
}
|
||||
if (utf8_length(last_name) > 255) {
|
||||
return Status::Error(400, "Last name is too long");
|
||||
if (utf8_length(name) > 255) {
|
||||
return Status::Error(400, "Name is too long");
|
||||
}
|
||||
return Status::OK();
|
||||
}
|
||||
@ -773,9 +756,12 @@ static Result<string> get_personal_details(td_api::object_ptr<td_api::personalDe
|
||||
if (personal_details == nullptr) {
|
||||
return Status::Error(400, "Personal details must not be empty");
|
||||
}
|
||||
TRY_STATUS(check_first_name(personal_details->first_name_));
|
||||
TRY_STATUS(check_middle_name(personal_details->middle_name_));
|
||||
TRY_STATUS(check_last_name(personal_details->last_name_));
|
||||
TRY_STATUS(check_name(personal_details->first_name_));
|
||||
TRY_STATUS(check_name(personal_details->middle_name_));
|
||||
TRY_STATUS(check_name(personal_details->last_name_));
|
||||
TRY_STATUS(check_name(personal_details->native_first_name_));
|
||||
TRY_STATUS(check_name(personal_details->native_middle_name_));
|
||||
TRY_STATUS(check_name(personal_details->native_last_name_));
|
||||
TRY_RESULT(birthdate, get_date(std::move(personal_details->birthdate_)));
|
||||
if (birthdate.empty()) {
|
||||
return Status::Error(400, "Birthdate must not be empty");
|
||||
@ -788,6 +774,9 @@ static Result<string> get_personal_details(td_api::object_ptr<td_api::personalDe
|
||||
o("first_name", personal_details->first_name_);
|
||||
o("middle_name", personal_details->middle_name_);
|
||||
o("last_name", personal_details->last_name_);
|
||||
o("first_name_native", personal_details->native_first_name_);
|
||||
o("middle_name_native", personal_details->native_middle_name_);
|
||||
o("last_name_native", personal_details->native_last_name_);
|
||||
o("birth_date", birthdate);
|
||||
o("gender", personal_details->gender_);
|
||||
o("country_code", personal_details->country_code_);
|
||||
@ -811,6 +800,9 @@ static Result<td_api::object_ptr<td_api::personalDetails>> get_personal_details_
|
||||
TRY_RESULT(first_name, get_json_object_string_field(object, "first_name", true));
|
||||
TRY_RESULT(middle_name, get_json_object_string_field(object, "middle_name", true));
|
||||
TRY_RESULT(last_name, get_json_object_string_field(object, "last_name", true));
|
||||
TRY_RESULT(native_first_name, get_json_object_string_field(object, "first_name_native", true));
|
||||
TRY_RESULT(native_middle_name, get_json_object_string_field(object, "middle_name_native", true));
|
||||
TRY_RESULT(native_last_name, get_json_object_string_field(object, "last_name_native", true));
|
||||
TRY_RESULT(birthdate, get_json_object_string_field(object, "birth_date", true));
|
||||
if (birthdate.empty()) {
|
||||
return Status::Error(400, "Birthdate must not be empty");
|
||||
@ -819,16 +811,20 @@ static Result<td_api::object_ptr<td_api::personalDetails>> get_personal_details_
|
||||
TRY_RESULT(country_code, get_json_object_string_field(object, "country_code", true));
|
||||
TRY_RESULT(residence_country_code, get_json_object_string_field(object, "residence_country_code", true));
|
||||
|
||||
TRY_STATUS(check_first_name(first_name));
|
||||
TRY_STATUS(check_middle_name(middle_name));
|
||||
TRY_STATUS(check_last_name(last_name));
|
||||
TRY_STATUS(check_name(first_name));
|
||||
TRY_STATUS(check_name(middle_name));
|
||||
TRY_STATUS(check_name(last_name));
|
||||
TRY_STATUS(check_name(native_first_name));
|
||||
TRY_STATUS(check_name(native_middle_name));
|
||||
TRY_STATUS(check_name(native_last_name));
|
||||
TRY_RESULT(date, get_date_object(birthdate));
|
||||
TRY_STATUS(check_gender(gender));
|
||||
TRY_STATUS(check_country_code(country_code));
|
||||
TRY_STATUS(check_country_code(residence_country_code));
|
||||
|
||||
return td_api::make_object<td_api::personalDetails>(std::move(first_name), std::move(middle_name),
|
||||
std::move(last_name), std::move(date), std::move(gender),
|
||||
return td_api::make_object<td_api::personalDetails>(
|
||||
std::move(first_name), std::move(middle_name), std::move(last_name), std::move(native_first_name),
|
||||
std::move(native_middle_name), std::move(native_last_name), std::move(date), std::move(gender),
|
||||
std::move(country_code), std::move(residence_country_code));
|
||||
}
|
||||
|
||||
|
@ -1093,7 +1093,8 @@ class CliClient final : public Actor {
|
||||
return make_tl_object<td_api::inputPassportElementPhoneNumber>(arg);
|
||||
} else if (passport_element_type == "pd") {
|
||||
return make_tl_object<td_api::inputPassportElementPersonalDetails>(make_tl_object<td_api::personalDetails>(
|
||||
"Mike", "Jr", "Towers", make_tl_object<td_api::date>(29, 2, 2000), "male", "US", "GB"));
|
||||
"Mike", "Jr", "Towers", u8"Mike\u2708", u8"Jr\u26fd", u8"Towers\u2757",
|
||||
make_tl_object<td_api::date>(29, 2, 2000), "male", "US", "GB"));
|
||||
} else if (passport_element_type == "driver_license" || passport_element_type == "dl") {
|
||||
if (input_files.size() >= 2) {
|
||||
auto front_side = std::move(input_files[0]);
|
||||
|
Loading…
Reference in New Issue
Block a user