azure_cognitiveservices_face 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/lib/1.0/generated/azure_cognitiveservices_face.rb +78 -0
  4. data/lib/1.0/generated/azure_cognitiveservices_face/face.rb +955 -0
  5. data/lib/1.0/generated/azure_cognitiveservices_face/face_client.rb +145 -0
  6. data/lib/1.0/generated/azure_cognitiveservices_face/face_list_operations.rb +857 -0
  7. data/lib/1.0/generated/azure_cognitiveservices_face/models/accessory.rb +59 -0
  8. data/lib/1.0/generated/azure_cognitiveservices_face/models/accessory_type.rb +17 -0
  9. data/lib/1.0/generated/azure_cognitiveservices_face/models/apierror.rb +47 -0
  10. data/lib/1.0/generated/azure_cognitiveservices_face/models/azure_regions.rb +26 -0
  11. data/lib/1.0/generated/azure_cognitiveservices_face/models/blur.rb +60 -0
  12. data/lib/1.0/generated/azure_cognitiveservices_face/models/blur_level.rb +17 -0
  13. data/lib/1.0/generated/azure_cognitiveservices_face/models/coordinate.rb +57 -0
  14. data/lib/1.0/generated/azure_cognitiveservices_face/models/detected_face.rb +82 -0
  15. data/lib/1.0/generated/azure_cognitiveservices_face/models/emotion.rb +124 -0
  16. data/lib/1.0/generated/azure_cognitiveservices_face/models/error.rb +57 -0
  17. data/lib/1.0/generated/azure_cognitiveservices_face/models/exposure.rb +62 -0
  18. data/lib/1.0/generated/azure_cognitiveservices_face/models/exposure_level.rb +17 -0
  19. data/lib/1.0/generated/azure_cognitiveservices_face/models/face_attribute_type.rb +28 -0
  20. data/lib/1.0/generated/azure_cognitiveservices_face/models/face_attributes.rb +214 -0
  21. data/lib/1.0/generated/azure_cognitiveservices_face/models/face_landmarks.rb +360 -0
  22. data/lib/1.0/generated/azure_cognitiveservices_face/models/face_list.rb +92 -0
  23. data/lib/1.0/generated/azure_cognitiveservices_face/models/face_rectangle.rb +81 -0
  24. data/lib/1.0/generated/azure_cognitiveservices_face/models/facial_hair.rb +68 -0
  25. data/lib/1.0/generated/azure_cognitiveservices_face/models/find_similar_match_mode.rb +16 -0
  26. data/lib/1.0/generated/azure_cognitiveservices_face/models/find_similar_request.rb +121 -0
  27. data/lib/1.0/generated/azure_cognitiveservices_face/models/gender.rb +17 -0
  28. data/lib/1.0/generated/azure_cognitiveservices_face/models/glasses_type.rb +18 -0
  29. data/lib/1.0/generated/azure_cognitiveservices_face/models/group_request.rb +58 -0
  30. data/lib/1.0/generated/azure_cognitiveservices_face/models/group_result.rb +83 -0
  31. data/lib/1.0/generated/azure_cognitiveservices_face/models/hair.rb +80 -0
  32. data/lib/1.0/generated/azure_cognitiveservices_face/models/hair_color.rb +60 -0
  33. data/lib/1.0/generated/azure_cognitiveservices_face/models/hair_color_type.rb +22 -0
  34. data/lib/1.0/generated/azure_cognitiveservices_face/models/head_pose.rb +68 -0
  35. data/lib/1.0/generated/azure_cognitiveservices_face/models/identify_candidate.rb +59 -0
  36. data/lib/1.0/generated/azure_cognitiveservices_face/models/identify_request.rb +105 -0
  37. data/lib/1.0/generated/azure_cognitiveservices_face/models/identify_result.rb +69 -0
  38. data/lib/1.0/generated/azure_cognitiveservices_face/models/image_url.rb +47 -0
  39. data/lib/1.0/generated/azure_cognitiveservices_face/models/makeup.rb +59 -0
  40. data/lib/1.0/generated/azure_cognitiveservices_face/models/name_and_user_data_contract.rb +64 -0
  41. data/lib/1.0/generated/azure_cognitiveservices_face/models/noise.rb +62 -0
  42. data/lib/1.0/generated/azure_cognitiveservices_face/models/noise_level.rb +17 -0
  43. data/lib/1.0/generated/azure_cognitiveservices_face/models/occlusion.rb +70 -0
  44. data/lib/1.0/generated/azure_cognitiveservices_face/models/persisted_face.rb +63 -0
  45. data/lib/1.0/generated/azure_cognitiveservices_face/models/person.rb +89 -0
  46. data/lib/1.0/generated/azure_cognitiveservices_face/models/person_group.rb +72 -0
  47. data/lib/1.0/generated/azure_cognitiveservices_face/models/similar_face.rb +73 -0
  48. data/lib/1.0/generated/azure_cognitiveservices_face/models/training_status.rb +89 -0
  49. data/lib/1.0/generated/azure_cognitiveservices_face/models/training_status_type.rb +18 -0
  50. data/lib/1.0/generated/azure_cognitiveservices_face/models/update_person_face_request.rb +50 -0
  51. data/lib/1.0/generated/azure_cognitiveservices_face/models/verify_face_to_face_request.rb +57 -0
  52. data/lib/1.0/generated/azure_cognitiveservices_face/models/verify_face_to_person_request.rb +75 -0
  53. data/lib/1.0/generated/azure_cognitiveservices_face/models/verify_result.rb +62 -0
  54. data/lib/1.0/generated/azure_cognitiveservices_face/module_definition.rb +9 -0
  55. data/lib/1.0/generated/azure_cognitiveservices_face/person_group_operations.rb +678 -0
  56. data/lib/1.0/generated/azure_cognitiveservices_face/person_group_person.rb +1121 -0
  57. data/lib/azure_cognitiveservices_face.rb +6 -0
  58. data/lib/module_definition.rb +7 -0
  59. data/lib/profiles/latest/face_latest_profile_client.rb +38 -0
  60. data/lib/profiles/latest/face_module_definition.rb +8 -0
  61. data/lib/profiles/latest/modules/face_profile_module.rb +253 -0
  62. data/lib/version.rb +7 -0
  63. metadata +180 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6648bdf2512575046c982df50d07e0127e54b459
4
+ data.tar.gz: ec848ceb96afb3fde854043a9651e0b36051f91c
5
+ SHA512:
6
+ metadata.gz: 1013d4549baea2255821fb82845e491ec86750de8f1ec35ba312f8db91e9461bc11861fe821d7f0044e9ea637fa4d41ef13135ec102d4f12fb04541457ec3e38
7
+ data.tar.gz: b6fd153ddf17767e212dc5f14bf9aca2d01efed4dd87994264f66d51a60de51594276bebad42cdb8f064daba3f31c2c582bc7ef7a58626788e256a2a59ba44eb
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Microsoft Corporation
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,78 @@
1
+ # encoding: utf-8
2
+ # Code generated by Microsoft (R) AutoRest Code Generator.
3
+ # Changes may cause incorrect behavior and will be lost if the code is
4
+ # regenerated.
5
+
6
+ require 'uri'
7
+ require 'cgi'
8
+ require 'date'
9
+ require 'json'
10
+ require 'base64'
11
+ require 'erb'
12
+ require 'securerandom'
13
+ require 'time'
14
+ require 'timeliness'
15
+ require 'faraday'
16
+ require 'faraday-cookie_jar'
17
+ require 'concurrent'
18
+ require 'ms_rest'
19
+ require '1.0/generated/azure_cognitiveservices_face/module_definition'
20
+ require 'ms_rest_azure'
21
+
22
+ module Azure::CognitiveServices::Face::V1_0
23
+ autoload :Face, '1.0/generated/azure_cognitiveservices_face/face.rb'
24
+ autoload :PersonGroupPerson, '1.0/generated/azure_cognitiveservices_face/person_group_person.rb'
25
+ autoload :PersonGroupOperations, '1.0/generated/azure_cognitiveservices_face/person_group_operations.rb'
26
+ autoload :FaceListOperations, '1.0/generated/azure_cognitiveservices_face/face_list_operations.rb'
27
+ autoload :FaceClient, '1.0/generated/azure_cognitiveservices_face/face_client.rb'
28
+
29
+ module Models
30
+ autoload :FindSimilarRequest, '1.0/generated/azure_cognitiveservices_face/models/find_similar_request.rb'
31
+ autoload :Error, '1.0/generated/azure_cognitiveservices_face/models/error.rb'
32
+ autoload :SimilarFace, '1.0/generated/azure_cognitiveservices_face/models/similar_face.rb'
33
+ autoload :FaceRectangle, '1.0/generated/azure_cognitiveservices_face/models/face_rectangle.rb'
34
+ autoload :GroupRequest, '1.0/generated/azure_cognitiveservices_face/models/group_request.rb'
35
+ autoload :FaceLandmarks, '1.0/generated/azure_cognitiveservices_face/models/face_landmarks.rb'
36
+ autoload :GroupResult, '1.0/generated/azure_cognitiveservices_face/models/group_result.rb'
37
+ autoload :HeadPose, '1.0/generated/azure_cognitiveservices_face/models/head_pose.rb'
38
+ autoload :IdentifyRequest, '1.0/generated/azure_cognitiveservices_face/models/identify_request.rb'
39
+ autoload :HairColor, '1.0/generated/azure_cognitiveservices_face/models/hair_color.rb'
40
+ autoload :IdentifyCandidate, '1.0/generated/azure_cognitiveservices_face/models/identify_candidate.rb'
41
+ autoload :Makeup, '1.0/generated/azure_cognitiveservices_face/models/makeup.rb'
42
+ autoload :IdentifyResult, '1.0/generated/azure_cognitiveservices_face/models/identify_result.rb'
43
+ autoload :Accessory, '1.0/generated/azure_cognitiveservices_face/models/accessory.rb'
44
+ autoload :VerifyFaceToPersonRequest, '1.0/generated/azure_cognitiveservices_face/models/verify_face_to_person_request.rb'
45
+ autoload :Exposure, '1.0/generated/azure_cognitiveservices_face/models/exposure.rb'
46
+ autoload :VerifyFaceToFaceRequest, '1.0/generated/azure_cognitiveservices_face/models/verify_face_to_face_request.rb'
47
+ autoload :FaceAttributes, '1.0/generated/azure_cognitiveservices_face/models/face_attributes.rb'
48
+ autoload :VerifyResult, '1.0/generated/azure_cognitiveservices_face/models/verify_result.rb'
49
+ autoload :APIError, '1.0/generated/azure_cognitiveservices_face/models/apierror.rb'
50
+ autoload :PersistedFace, '1.0/generated/azure_cognitiveservices_face/models/persisted_face.rb'
51
+ autoload :FacialHair, '1.0/generated/azure_cognitiveservices_face/models/facial_hair.rb'
52
+ autoload :Coordinate, '1.0/generated/azure_cognitiveservices_face/models/coordinate.rb'
53
+ autoload :Emotion, '1.0/generated/azure_cognitiveservices_face/models/emotion.rb'
54
+ autoload :Occlusion, '1.0/generated/azure_cognitiveservices_face/models/occlusion.rb'
55
+ autoload :Noise, '1.0/generated/azure_cognitiveservices_face/models/noise.rb'
56
+ autoload :ImageUrl, '1.0/generated/azure_cognitiveservices_face/models/image_url.rb'
57
+ autoload :Hair, '1.0/generated/azure_cognitiveservices_face/models/hair.rb'
58
+ autoload :NameAndUserDataContract, '1.0/generated/azure_cognitiveservices_face/models/name_and_user_data_contract.rb'
59
+ autoload :DetectedFace, '1.0/generated/azure_cognitiveservices_face/models/detected_face.rb'
60
+ autoload :UpdatePersonFaceRequest, '1.0/generated/azure_cognitiveservices_face/models/update_person_face_request.rb'
61
+ autoload :Blur, '1.0/generated/azure_cognitiveservices_face/models/blur.rb'
62
+ autoload :TrainingStatus, '1.0/generated/azure_cognitiveservices_face/models/training_status.rb'
63
+ autoload :FaceList, '1.0/generated/azure_cognitiveservices_face/models/face_list.rb'
64
+ autoload :PersonGroup, '1.0/generated/azure_cognitiveservices_face/models/person_group.rb'
65
+ autoload :Person, '1.0/generated/azure_cognitiveservices_face/models/person.rb'
66
+ autoload :Gender, '1.0/generated/azure_cognitiveservices_face/models/gender.rb'
67
+ autoload :GlassesType, '1.0/generated/azure_cognitiveservices_face/models/glasses_type.rb'
68
+ autoload :HairColorType, '1.0/generated/azure_cognitiveservices_face/models/hair_color_type.rb'
69
+ autoload :AccessoryType, '1.0/generated/azure_cognitiveservices_face/models/accessory_type.rb'
70
+ autoload :BlurLevel, '1.0/generated/azure_cognitiveservices_face/models/blur_level.rb'
71
+ autoload :ExposureLevel, '1.0/generated/azure_cognitiveservices_face/models/exposure_level.rb'
72
+ autoload :NoiseLevel, '1.0/generated/azure_cognitiveservices_face/models/noise_level.rb'
73
+ autoload :FindSimilarMatchMode, '1.0/generated/azure_cognitiveservices_face/models/find_similar_match_mode.rb'
74
+ autoload :TrainingStatusType, '1.0/generated/azure_cognitiveservices_face/models/training_status_type.rb'
75
+ autoload :FaceAttributeType, '1.0/generated/azure_cognitiveservices_face/models/face_attribute_type.rb'
76
+ autoload :AzureRegions, '1.0/generated/azure_cognitiveservices_face/models/azure_regions.rb'
77
+ end
78
+ end
@@ -0,0 +1,955 @@
1
+ # encoding: utf-8
2
+ # Code generated by Microsoft (R) AutoRest Code Generator.
3
+ # Changes may cause incorrect behavior and will be lost if the code is
4
+ # regenerated.
5
+
6
+ module Azure::CognitiveServices::Face::V1_0
7
+ #
8
+ # An API for face detection, verification, and identification.
9
+ #
10
+ class Face
11
+ include MsRestAzure
12
+
13
+ #
14
+ # Creates and initializes a new instance of the Face class.
15
+ # @param client service class for accessing basic functionality.
16
+ #
17
+ def initialize(client)
18
+ @client = client
19
+ end
20
+
21
+ # @return [FaceClient] reference to the FaceClient
22
+ attr_reader :client
23
+
24
+ #
25
+ # Given query face's faceId, find the similar-looking faces from a faceId array
26
+ # or a faceListId.
27
+ #
28
+ # @param face_id FaceId of the query face. User needs to call Face - Detect
29
+ # first to get a valid faceId. Note that this faceId is not persisted and will
30
+ # expire 24 hours after the detection call
31
+ # @param face_list_id [String] An existing user-specified unique candidate face
32
+ # list, created in Face List - Create a Face List. Face list contains a set of
33
+ # persistedFaceIds which are persisted and will never expire. Parameter
34
+ # faceListId and faceIds should not be provided at the same time
35
+ # @param face_ids An array of candidate faceIds. All of them are created by
36
+ # Face - Detect and the faceIds will expire 24 hours after the detection call.
37
+ # @param max_num_of_candidates_returned [Integer] The number of top similar
38
+ # faces returned. The valid range is [1, 1000].
39
+ # @param mode [FindSimilarMatchMode] Similar face searching mode. It can be
40
+ # "matchPerson" or "matchFace". Possible values include: 'matchPerson',
41
+ # 'matchFace'
42
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
43
+ # will be added to the HTTP request.
44
+ #
45
+ # @return [Array] operation results.
46
+ #
47
+ def find_similar(face_id, face_list_id:nil, face_ids:nil, max_num_of_candidates_returned:20, mode:nil, custom_headers:nil)
48
+ response = find_similar_async(face_id, face_list_id:face_list_id, face_ids:face_ids, max_num_of_candidates_returned:max_num_of_candidates_returned, mode:mode, custom_headers:custom_headers).value!
49
+ response.body unless response.nil?
50
+ end
51
+
52
+ #
53
+ # Given query face's faceId, find the similar-looking faces from a faceId array
54
+ # or a faceListId.
55
+ #
56
+ # @param face_id FaceId of the query face. User needs to call Face - Detect
57
+ # first to get a valid faceId. Note that this faceId is not persisted and will
58
+ # expire 24 hours after the detection call
59
+ # @param face_list_id [String] An existing user-specified unique candidate face
60
+ # list, created in Face List - Create a Face List. Face list contains a set of
61
+ # persistedFaceIds which are persisted and will never expire. Parameter
62
+ # faceListId and faceIds should not be provided at the same time
63
+ # @param face_ids An array of candidate faceIds. All of them are created by
64
+ # Face - Detect and the faceIds will expire 24 hours after the detection call.
65
+ # @param max_num_of_candidates_returned [Integer] The number of top similar
66
+ # faces returned. The valid range is [1, 1000].
67
+ # @param mode [FindSimilarMatchMode] Similar face searching mode. It can be
68
+ # "matchPerson" or "matchFace". Possible values include: 'matchPerson',
69
+ # 'matchFace'
70
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
71
+ # will be added to the HTTP request.
72
+ #
73
+ # @return [MsRestAzure::AzureOperationResponse] HTTP response information.
74
+ #
75
+ def find_similar_with_http_info(face_id, face_list_id:nil, face_ids:nil, max_num_of_candidates_returned:20, mode:nil, custom_headers:nil)
76
+ find_similar_async(face_id, face_list_id:face_list_id, face_ids:face_ids, max_num_of_candidates_returned:max_num_of_candidates_returned, mode:mode, custom_headers:custom_headers).value!
77
+ end
78
+
79
+ #
80
+ # Given query face's faceId, find the similar-looking faces from a faceId array
81
+ # or a faceListId.
82
+ #
83
+ # @param face_id FaceId of the query face. User needs to call Face - Detect
84
+ # first to get a valid faceId. Note that this faceId is not persisted and will
85
+ # expire 24 hours after the detection call
86
+ # @param face_list_id [String] An existing user-specified unique candidate face
87
+ # list, created in Face List - Create a Face List. Face list contains a set of
88
+ # persistedFaceIds which are persisted and will never expire. Parameter
89
+ # faceListId and faceIds should not be provided at the same time
90
+ # @param face_ids An array of candidate faceIds. All of them are created by
91
+ # Face - Detect and the faceIds will expire 24 hours after the detection call.
92
+ # @param max_num_of_candidates_returned [Integer] The number of top similar
93
+ # faces returned. The valid range is [1, 1000].
94
+ # @param mode [FindSimilarMatchMode] Similar face searching mode. It can be
95
+ # "matchPerson" or "matchFace". Possible values include: 'matchPerson',
96
+ # 'matchFace'
97
+ # @param [Hash{String => String}] A hash of custom headers that will be added
98
+ # to the HTTP request.
99
+ #
100
+ # @return [Concurrent::Promise] Promise object which holds the HTTP response.
101
+ #
102
+ def find_similar_async(face_id, face_list_id:nil, face_ids:nil, max_num_of_candidates_returned:20, mode:nil, custom_headers:nil)
103
+ fail ArgumentError, '@client.azure_region is nil' if @client.azure_region.nil?
104
+ fail ArgumentError, 'face_id is nil' if face_id.nil?
105
+ fail ArgumentError, "'face_list_id' should satisfy the constraint - 'MaxLength': '64'" if !face_list_id.nil? && face_list_id.length > 64
106
+ fail ArgumentError, "'face_list_id' should satisfy the constraint - 'Pattern': '^[a-z0-9-_]+$'" if !face_list_id.nil? && face_list_id.match(Regexp.new('^^[a-z0-9-_]+$$')).nil?
107
+ fail ArgumentError, "'face_ids' should satisfy the constraint - 'MaxItems': '1000'" if !face_ids.nil? && face_ids.length > 1000
108
+ fail ArgumentError, "'max_num_of_candidates_returned' should satisfy the constraint - 'InclusiveMaximum': '1000'" if !max_num_of_candidates_returned.nil? && max_num_of_candidates_returned > 1000
109
+ fail ArgumentError, "'max_num_of_candidates_returned' should satisfy the constraint - 'InclusiveMinimum': '1'" if !max_num_of_candidates_returned.nil? && max_num_of_candidates_returned < 1
110
+
111
+ body = FindSimilarRequest.new
112
+ unless face_id.nil? && face_list_id.nil? && face_ids.nil? && max_num_of_candidates_returned.nil? && mode.nil?
113
+ body.face_id = face_id
114
+ body.face_list_id = face_list_id
115
+ body.face_ids = face_ids
116
+ body.max_num_of_candidates_returned = max_num_of_candidates_returned
117
+ body.mode = mode
118
+ end
119
+
120
+ request_headers = {}
121
+ request_headers['Content-Type'] = 'application/json; charset=utf-8'
122
+
123
+ # Set Headers
124
+ request_headers['x-ms-client-request-id'] = SecureRandom.uuid
125
+ request_headers['accept-language'] = @client.accept_language unless @client.accept_language.nil?
126
+
127
+ # Serialize Request
128
+ request_mapper = Azure::CognitiveServices::Face::V1_0::Models::FindSimilarRequest.mapper()
129
+ request_content = @client.serialize(request_mapper, body)
130
+ request_content = request_content != nil ? JSON.generate(request_content, quirks_mode: true) : nil
131
+
132
+ path_template = 'findsimilars'
133
+
134
+ request_url = @base_url || @client.base_url
135
+ request_url = request_url.gsub('{AzureRegion}', @client.azure_region)
136
+
137
+ options = {
138
+ middlewares: [[MsRest::RetryPolicyMiddleware, times: 3, retry: 0.02], [:cookie_jar]],
139
+ body: request_content,
140
+ headers: request_headers.merge(custom_headers || {}),
141
+ base_url: request_url
142
+ }
143
+ promise = @client.make_request_async(:post, path_template, options)
144
+
145
+ promise = promise.then do |result|
146
+ http_response = result.response
147
+ status_code = http_response.status
148
+ response_content = http_response.body
149
+ unless status_code == 200
150
+ error_model = JSON.load(response_content)
151
+ fail MsRest::HttpOperationError.new(result.request, http_response, error_model)
152
+ end
153
+
154
+ result.request_id = http_response['x-ms-request-id'] unless http_response['x-ms-request-id'].nil?
155
+ # Deserialize Response
156
+ if status_code == 200
157
+ begin
158
+ parsed_response = response_content.to_s.empty? ? nil : JSON.load(response_content)
159
+ result_mapper = {
160
+ client_side_validation: true,
161
+ required: false,
162
+ serialized_name: 'parsed_response',
163
+ type: {
164
+ name: 'Sequence',
165
+ element: {
166
+ client_side_validation: true,
167
+ required: false,
168
+ serialized_name: 'SimilarFaceElementType',
169
+ type: {
170
+ name: 'Composite',
171
+ class_name: 'SimilarFace'
172
+ }
173
+ }
174
+ }
175
+ }
176
+ result.body = @client.deserialize(result_mapper, parsed_response)
177
+ rescue Exception => e
178
+ fail MsRest::DeserializationError.new('Error occurred in deserializing the response', e.message, e.backtrace, result)
179
+ end
180
+ end
181
+
182
+ result
183
+ end
184
+
185
+ promise.execute
186
+ end
187
+
188
+ #
189
+ # Divide candidate faces into groups based on face similarity.
190
+ #
191
+ # @param face_ids Array of candidate faceId created by Face - Detect. The
192
+ # maximum is 1000 faces
193
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
194
+ # will be added to the HTTP request.
195
+ #
196
+ # @return [GroupResult] operation results.
197
+ #
198
+ def group(face_ids, custom_headers:nil)
199
+ response = group_async(face_ids, custom_headers:custom_headers).value!
200
+ response.body unless response.nil?
201
+ end
202
+
203
+ #
204
+ # Divide candidate faces into groups based on face similarity.
205
+ #
206
+ # @param face_ids Array of candidate faceId created by Face - Detect. The
207
+ # maximum is 1000 faces
208
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
209
+ # will be added to the HTTP request.
210
+ #
211
+ # @return [MsRestAzure::AzureOperationResponse] HTTP response information.
212
+ #
213
+ def group_with_http_info(face_ids, custom_headers:nil)
214
+ group_async(face_ids, custom_headers:custom_headers).value!
215
+ end
216
+
217
+ #
218
+ # Divide candidate faces into groups based on face similarity.
219
+ #
220
+ # @param face_ids Array of candidate faceId created by Face - Detect. The
221
+ # maximum is 1000 faces
222
+ # @param [Hash{String => String}] A hash of custom headers that will be added
223
+ # to the HTTP request.
224
+ #
225
+ # @return [Concurrent::Promise] Promise object which holds the HTTP response.
226
+ #
227
+ def group_async(face_ids, custom_headers:nil)
228
+ fail ArgumentError, '@client.azure_region is nil' if @client.azure_region.nil?
229
+ fail ArgumentError, 'face_ids is nil' if face_ids.nil?
230
+ fail ArgumentError, "'face_ids' should satisfy the constraint - 'MaxItems': '1000'" if !face_ids.nil? && face_ids.length > 1000
231
+
232
+ body = GroupRequest.new
233
+ unless face_ids.nil?
234
+ body.face_ids = face_ids
235
+ end
236
+
237
+ request_headers = {}
238
+ request_headers['Content-Type'] = 'application/json; charset=utf-8'
239
+
240
+ # Set Headers
241
+ request_headers['x-ms-client-request-id'] = SecureRandom.uuid
242
+ request_headers['accept-language'] = @client.accept_language unless @client.accept_language.nil?
243
+
244
+ # Serialize Request
245
+ request_mapper = Azure::CognitiveServices::Face::V1_0::Models::GroupRequest.mapper()
246
+ request_content = @client.serialize(request_mapper, body)
247
+ request_content = request_content != nil ? JSON.generate(request_content, quirks_mode: true) : nil
248
+
249
+ path_template = 'group'
250
+
251
+ request_url = @base_url || @client.base_url
252
+ request_url = request_url.gsub('{AzureRegion}', @client.azure_region)
253
+
254
+ options = {
255
+ middlewares: [[MsRest::RetryPolicyMiddleware, times: 3, retry: 0.02], [:cookie_jar]],
256
+ body: request_content,
257
+ headers: request_headers.merge(custom_headers || {}),
258
+ base_url: request_url
259
+ }
260
+ promise = @client.make_request_async(:post, path_template, options)
261
+
262
+ promise = promise.then do |result|
263
+ http_response = result.response
264
+ status_code = http_response.status
265
+ response_content = http_response.body
266
+ unless status_code == 200
267
+ error_model = JSON.load(response_content)
268
+ fail MsRest::HttpOperationError.new(result.request, http_response, error_model)
269
+ end
270
+
271
+ result.request_id = http_response['x-ms-request-id'] unless http_response['x-ms-request-id'].nil?
272
+ # Deserialize Response
273
+ if status_code == 200
274
+ begin
275
+ parsed_response = response_content.to_s.empty? ? nil : JSON.load(response_content)
276
+ result_mapper = Azure::CognitiveServices::Face::V1_0::Models::GroupResult.mapper()
277
+ result.body = @client.deserialize(result_mapper, parsed_response)
278
+ rescue Exception => e
279
+ fail MsRest::DeserializationError.new('Error occurred in deserializing the response', e.message, e.backtrace, result)
280
+ end
281
+ end
282
+
283
+ result
284
+ end
285
+
286
+ promise.execute
287
+ end
288
+
289
+ #
290
+ # Identify unknown faces from a person group.
291
+ #
292
+ # @param person_group_id [String] PersonGroupId of the target person group,
293
+ # created by PersonGroups.Create
294
+ # @param face_ids Array of query faces faceIds, created by the Face - Detect.
295
+ # Each of the faces are identified independently. The valid number of faceIds
296
+ # is between [1, 10].
297
+ # @param max_num_of_candidates_returned [Integer] The range of
298
+ # maxNumOfCandidatesReturned is between 1 and 5 (default is 1).
299
+ # @param confidence_threshold [Float] Confidence threshold of identification,
300
+ # used to judge whether one face belong to one person. The range of
301
+ # confidenceThreshold is [0, 1] (default specified by algorithm).
302
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
303
+ # will be added to the HTTP request.
304
+ #
305
+ # @return [Array] operation results.
306
+ #
307
+ def identify(person_group_id, face_ids, max_num_of_candidates_returned:1, confidence_threshold:nil, custom_headers:nil)
308
+ response = identify_async(person_group_id, face_ids, max_num_of_candidates_returned:max_num_of_candidates_returned, confidence_threshold:confidence_threshold, custom_headers:custom_headers).value!
309
+ response.body unless response.nil?
310
+ end
311
+
312
+ #
313
+ # Identify unknown faces from a person group.
314
+ #
315
+ # @param person_group_id [String] PersonGroupId of the target person group,
316
+ # created by PersonGroups.Create
317
+ # @param face_ids Array of query faces faceIds, created by the Face - Detect.
318
+ # Each of the faces are identified independently. The valid number of faceIds
319
+ # is between [1, 10].
320
+ # @param max_num_of_candidates_returned [Integer] The range of
321
+ # maxNumOfCandidatesReturned is between 1 and 5 (default is 1).
322
+ # @param confidence_threshold [Float] Confidence threshold of identification,
323
+ # used to judge whether one face belong to one person. The range of
324
+ # confidenceThreshold is [0, 1] (default specified by algorithm).
325
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
326
+ # will be added to the HTTP request.
327
+ #
328
+ # @return [MsRestAzure::AzureOperationResponse] HTTP response information.
329
+ #
330
+ def identify_with_http_info(person_group_id, face_ids, max_num_of_candidates_returned:1, confidence_threshold:nil, custom_headers:nil)
331
+ identify_async(person_group_id, face_ids, max_num_of_candidates_returned:max_num_of_candidates_returned, confidence_threshold:confidence_threshold, custom_headers:custom_headers).value!
332
+ end
333
+
334
+ #
335
+ # Identify unknown faces from a person group.
336
+ #
337
+ # @param person_group_id [String] PersonGroupId of the target person group,
338
+ # created by PersonGroups.Create
339
+ # @param face_ids Array of query faces faceIds, created by the Face - Detect.
340
+ # Each of the faces are identified independently. The valid number of faceIds
341
+ # is between [1, 10].
342
+ # @param max_num_of_candidates_returned [Integer] The range of
343
+ # maxNumOfCandidatesReturned is between 1 and 5 (default is 1).
344
+ # @param confidence_threshold [Float] Confidence threshold of identification,
345
+ # used to judge whether one face belong to one person. The range of
346
+ # confidenceThreshold is [0, 1] (default specified by algorithm).
347
+ # @param [Hash{String => String}] A hash of custom headers that will be added
348
+ # to the HTTP request.
349
+ #
350
+ # @return [Concurrent::Promise] Promise object which holds the HTTP response.
351
+ #
352
+ def identify_async(person_group_id, face_ids, max_num_of_candidates_returned:1, confidence_threshold:nil, custom_headers:nil)
353
+ fail ArgumentError, '@client.azure_region is nil' if @client.azure_region.nil?
354
+ fail ArgumentError, 'person_group_id is nil' if person_group_id.nil?
355
+ fail ArgumentError, "'person_group_id' should satisfy the constraint - 'MaxLength': '64'" if !person_group_id.nil? && person_group_id.length > 64
356
+ fail ArgumentError, "'person_group_id' should satisfy the constraint - 'Pattern': '^[a-z0-9-_]+$'" if !person_group_id.nil? && person_group_id.match(Regexp.new('^^[a-z0-9-_]+$$')).nil?
357
+ fail ArgumentError, 'face_ids is nil' if face_ids.nil?
358
+ fail ArgumentError, "'face_ids' should satisfy the constraint - 'MaxItems': '10'" if !face_ids.nil? && face_ids.length > 10
359
+ fail ArgumentError, "'max_num_of_candidates_returned' should satisfy the constraint - 'InclusiveMaximum': '5'" if !max_num_of_candidates_returned.nil? && max_num_of_candidates_returned > 5
360
+ fail ArgumentError, "'max_num_of_candidates_returned' should satisfy the constraint - 'InclusiveMinimum': '1'" if !max_num_of_candidates_returned.nil? && max_num_of_candidates_returned < 1
361
+
362
+ body = IdentifyRequest.new
363
+ unless person_group_id.nil? && face_ids.nil? && max_num_of_candidates_returned.nil? && confidence_threshold.nil?
364
+ body.person_group_id = person_group_id
365
+ body.face_ids = face_ids
366
+ body.max_num_of_candidates_returned = max_num_of_candidates_returned
367
+ body.confidence_threshold = confidence_threshold
368
+ end
369
+
370
+ request_headers = {}
371
+ request_headers['Content-Type'] = 'application/json; charset=utf-8'
372
+
373
+ # Set Headers
374
+ request_headers['x-ms-client-request-id'] = SecureRandom.uuid
375
+ request_headers['accept-language'] = @client.accept_language unless @client.accept_language.nil?
376
+
377
+ # Serialize Request
378
+ request_mapper = Azure::CognitiveServices::Face::V1_0::Models::IdentifyRequest.mapper()
379
+ request_content = @client.serialize(request_mapper, body)
380
+ request_content = request_content != nil ? JSON.generate(request_content, quirks_mode: true) : nil
381
+
382
+ path_template = 'identify'
383
+
384
+ request_url = @base_url || @client.base_url
385
+ request_url = request_url.gsub('{AzureRegion}', @client.azure_region)
386
+
387
+ options = {
388
+ middlewares: [[MsRest::RetryPolicyMiddleware, times: 3, retry: 0.02], [:cookie_jar]],
389
+ body: request_content,
390
+ headers: request_headers.merge(custom_headers || {}),
391
+ base_url: request_url
392
+ }
393
+ promise = @client.make_request_async(:post, path_template, options)
394
+
395
+ promise = promise.then do |result|
396
+ http_response = result.response
397
+ status_code = http_response.status
398
+ response_content = http_response.body
399
+ unless status_code == 200
400
+ error_model = JSON.load(response_content)
401
+ fail MsRest::HttpOperationError.new(result.request, http_response, error_model)
402
+ end
403
+
404
+ result.request_id = http_response['x-ms-request-id'] unless http_response['x-ms-request-id'].nil?
405
+ # Deserialize Response
406
+ if status_code == 200
407
+ begin
408
+ parsed_response = response_content.to_s.empty? ? nil : JSON.load(response_content)
409
+ result_mapper = {
410
+ client_side_validation: true,
411
+ required: false,
412
+ serialized_name: 'parsed_response',
413
+ type: {
414
+ name: 'Sequence',
415
+ element: {
416
+ client_side_validation: true,
417
+ required: false,
418
+ serialized_name: 'IdentifyResultElementType',
419
+ type: {
420
+ name: 'Composite',
421
+ class_name: 'IdentifyResult'
422
+ }
423
+ }
424
+ }
425
+ }
426
+ result.body = @client.deserialize(result_mapper, parsed_response)
427
+ rescue Exception => e
428
+ fail MsRest::DeserializationError.new('Error occurred in deserializing the response', e.message, e.backtrace, result)
429
+ end
430
+ end
431
+
432
+ result
433
+ end
434
+
435
+ promise.execute
436
+ end
437
+
438
+ #
439
+ # Verify whether two faces belong to a same person or whether one face belongs
440
+ # to a person.
441
+ #
442
+ # @param face_id1 FaceId of the first face, comes from Face - Detect
443
+ # @param face_id2 FaceId of the second face, comes from Face - Detect
444
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
445
+ # will be added to the HTTP request.
446
+ #
447
+ # @return [VerifyResult] operation results.
448
+ #
449
+ def verify_face_to_face(face_id1, face_id2, custom_headers:nil)
450
+ response = verify_face_to_face_async(face_id1, face_id2, custom_headers:custom_headers).value!
451
+ response.body unless response.nil?
452
+ end
453
+
454
+ #
455
+ # Verify whether two faces belong to a same person or whether one face belongs
456
+ # to a person.
457
+ #
458
+ # @param face_id1 FaceId of the first face, comes from Face - Detect
459
+ # @param face_id2 FaceId of the second face, comes from Face - Detect
460
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
461
+ # will be added to the HTTP request.
462
+ #
463
+ # @return [MsRestAzure::AzureOperationResponse] HTTP response information.
464
+ #
465
+ def verify_face_to_face_with_http_info(face_id1, face_id2, custom_headers:nil)
466
+ verify_face_to_face_async(face_id1, face_id2, custom_headers:custom_headers).value!
467
+ end
468
+
469
+ #
470
+ # Verify whether two faces belong to a same person or whether one face belongs
471
+ # to a person.
472
+ #
473
+ # @param face_id1 FaceId of the first face, comes from Face - Detect
474
+ # @param face_id2 FaceId of the second face, comes from Face - Detect
475
+ # @param [Hash{String => String}] A hash of custom headers that will be added
476
+ # to the HTTP request.
477
+ #
478
+ # @return [Concurrent::Promise] Promise object which holds the HTTP response.
479
+ #
480
+ def verify_face_to_face_async(face_id1, face_id2, custom_headers:nil)
481
+ fail ArgumentError, '@client.azure_region is nil' if @client.azure_region.nil?
482
+ fail ArgumentError, 'face_id1 is nil' if face_id1.nil?
483
+ fail ArgumentError, 'face_id2 is nil' if face_id2.nil?
484
+
485
+ body = VerifyFaceToFaceRequest.new
486
+ unless face_id1.nil? && face_id2.nil?
487
+ body.face_id1 = face_id1
488
+ body.face_id2 = face_id2
489
+ end
490
+
491
+ request_headers = {}
492
+ request_headers['Content-Type'] = 'application/json; charset=utf-8'
493
+
494
+ # Set Headers
495
+ request_headers['x-ms-client-request-id'] = SecureRandom.uuid
496
+ request_headers['accept-language'] = @client.accept_language unless @client.accept_language.nil?
497
+
498
+ # Serialize Request
499
+ request_mapper = Azure::CognitiveServices::Face::V1_0::Models::VerifyFaceToFaceRequest.mapper()
500
+ request_content = @client.serialize(request_mapper, body)
501
+ request_content = request_content != nil ? JSON.generate(request_content, quirks_mode: true) : nil
502
+
503
+ path_template = 'verify'
504
+
505
+ request_url = @base_url || @client.base_url
506
+ request_url = request_url.gsub('{AzureRegion}', @client.azure_region)
507
+
508
+ options = {
509
+ middlewares: [[MsRest::RetryPolicyMiddleware, times: 3, retry: 0.02], [:cookie_jar]],
510
+ body: request_content,
511
+ headers: request_headers.merge(custom_headers || {}),
512
+ base_url: request_url
513
+ }
514
+ promise = @client.make_request_async(:post, path_template, options)
515
+
516
+ promise = promise.then do |result|
517
+ http_response = result.response
518
+ status_code = http_response.status
519
+ response_content = http_response.body
520
+ unless status_code == 200
521
+ error_model = JSON.load(response_content)
522
+ fail MsRest::HttpOperationError.new(result.request, http_response, error_model)
523
+ end
524
+
525
+ result.request_id = http_response['x-ms-request-id'] unless http_response['x-ms-request-id'].nil?
526
+ # Deserialize Response
527
+ if status_code == 200
528
+ begin
529
+ parsed_response = response_content.to_s.empty? ? nil : JSON.load(response_content)
530
+ result_mapper = Azure::CognitiveServices::Face::V1_0::Models::VerifyResult.mapper()
531
+ result.body = @client.deserialize(result_mapper, parsed_response)
532
+ rescue Exception => e
533
+ fail MsRest::DeserializationError.new('Error occurred in deserializing the response', e.message, e.backtrace, result)
534
+ end
535
+ end
536
+
537
+ result
538
+ end
539
+
540
+ promise.execute
541
+ end
542
+
543
+ #
544
+ # Detect human faces in an image and returns face locations, and optionally
545
+ # with faceIds, landmarks, and attributes.
546
+ #
547
+ # @param url [String]
548
+ # @param return_face_id [Boolean] A value indicating whether the operation
549
+ # should return faceIds of detected faces.
550
+ # @param return_face_landmarks [Boolean] A value indicating whether the
551
+ # operation should return landmarks of the detected faces.
552
+ # @param return_face_attributes [Array<FaceAttributeType>] Analyze and return
553
+ # the one or more specified face attributes in the comma-separated string like
554
+ # "returnFaceAttributes=age,gender". Supported face attributes include age,
555
+ # gender, headPose, smile, facialHair, glasses and emotion. Note that each face
556
+ # attribute analysis has additional computational and time cost.
557
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
558
+ # will be added to the HTTP request.
559
+ #
560
+ # @return [Array] operation results.
561
+ #
562
+ def detect_with_url(url, return_face_id:true, return_face_landmarks:false, return_face_attributes:nil, custom_headers:nil)
563
+ response = detect_with_url_async(url, return_face_id:return_face_id, return_face_landmarks:return_face_landmarks, return_face_attributes:return_face_attributes, custom_headers:custom_headers).value!
564
+ response.body unless response.nil?
565
+ end
566
+
567
+ #
568
+ # Detect human faces in an image and returns face locations, and optionally
569
+ # with faceIds, landmarks, and attributes.
570
+ #
571
+ # @param url [String]
572
+ # @param return_face_id [Boolean] A value indicating whether the operation
573
+ # should return faceIds of detected faces.
574
+ # @param return_face_landmarks [Boolean] A value indicating whether the
575
+ # operation should return landmarks of the detected faces.
576
+ # @param return_face_attributes [Array<FaceAttributeType>] Analyze and return
577
+ # the one or more specified face attributes in the comma-separated string like
578
+ # "returnFaceAttributes=age,gender". Supported face attributes include age,
579
+ # gender, headPose, smile, facialHair, glasses and emotion. Note that each face
580
+ # attribute analysis has additional computational and time cost.
581
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
582
+ # will be added to the HTTP request.
583
+ #
584
+ # @return [MsRestAzure::AzureOperationResponse] HTTP response information.
585
+ #
586
+ def detect_with_url_with_http_info(url, return_face_id:true, return_face_landmarks:false, return_face_attributes:nil, custom_headers:nil)
587
+ detect_with_url_async(url, return_face_id:return_face_id, return_face_landmarks:return_face_landmarks, return_face_attributes:return_face_attributes, custom_headers:custom_headers).value!
588
+ end
589
+
590
+ #
591
+ # Detect human faces in an image and returns face locations, and optionally
592
+ # with faceIds, landmarks, and attributes.
593
+ #
594
+ # @param url [String]
595
+ # @param return_face_id [Boolean] A value indicating whether the operation
596
+ # should return faceIds of detected faces.
597
+ # @param return_face_landmarks [Boolean] A value indicating whether the
598
+ # operation should return landmarks of the detected faces.
599
+ # @param return_face_attributes [Array<FaceAttributeType>] Analyze and return
600
+ # the one or more specified face attributes in the comma-separated string like
601
+ # "returnFaceAttributes=age,gender". Supported face attributes include age,
602
+ # gender, headPose, smile, facialHair, glasses and emotion. Note that each face
603
+ # attribute analysis has additional computational and time cost.
604
+ # @param [Hash{String => String}] A hash of custom headers that will be added
605
+ # to the HTTP request.
606
+ #
607
+ # @return [Concurrent::Promise] Promise object which holds the HTTP response.
608
+ #
609
+ def detect_with_url_async(url, return_face_id:true, return_face_landmarks:false, return_face_attributes:nil, custom_headers:nil)
610
+ fail ArgumentError, '@client.azure_region is nil' if @client.azure_region.nil?
611
+ fail ArgumentError, 'url is nil' if url.nil?
612
+
613
+ image_url = ImageUrl.new
614
+ unless url.nil?
615
+ image_url.url = url
616
+ end
617
+
618
+ request_headers = {}
619
+ request_headers['Content-Type'] = 'application/json; charset=utf-8'
620
+
621
+ # Set Headers
622
+ request_headers['x-ms-client-request-id'] = SecureRandom.uuid
623
+ request_headers['accept-language'] = @client.accept_language unless @client.accept_language.nil?
624
+
625
+ # Serialize Request
626
+ request_mapper = Azure::CognitiveServices::Face::V1_0::Models::ImageUrl.mapper()
627
+ request_content = @client.serialize(request_mapper, image_url)
628
+ request_content = request_content != nil ? JSON.generate(request_content, quirks_mode: true) : nil
629
+
630
+ path_template = 'detect'
631
+
632
+ request_url = @base_url || @client.base_url
633
+ request_url = request_url.gsub('{AzureRegion}', @client.azure_region)
634
+
635
+ options = {
636
+ middlewares: [[MsRest::RetryPolicyMiddleware, times: 3, retry: 0.02], [:cookie_jar]],
637
+ query_params: {'returnFaceId' => return_face_id,'returnFaceLandmarks' => return_face_landmarks,'returnFaceAttributes' => return_face_attributes.nil? ? nil : return_face_attributes.join(',')},
638
+ body: request_content,
639
+ headers: request_headers.merge(custom_headers || {}),
640
+ base_url: request_url
641
+ }
642
+ promise = @client.make_request_async(:post, path_template, options)
643
+
644
+ promise = promise.then do |result|
645
+ http_response = result.response
646
+ status_code = http_response.status
647
+ response_content = http_response.body
648
+ unless status_code == 200
649
+ error_model = JSON.load(response_content)
650
+ fail MsRest::HttpOperationError.new(result.request, http_response, error_model)
651
+ end
652
+
653
+ result.request_id = http_response['x-ms-request-id'] unless http_response['x-ms-request-id'].nil?
654
+ # Deserialize Response
655
+ if status_code == 200
656
+ begin
657
+ parsed_response = response_content.to_s.empty? ? nil : JSON.load(response_content)
658
+ result_mapper = {
659
+ client_side_validation: true,
660
+ required: false,
661
+ serialized_name: 'parsed_response',
662
+ type: {
663
+ name: 'Sequence',
664
+ element: {
665
+ client_side_validation: true,
666
+ required: false,
667
+ serialized_name: 'DetectedFaceElementType',
668
+ type: {
669
+ name: 'Composite',
670
+ class_name: 'DetectedFace'
671
+ }
672
+ }
673
+ }
674
+ }
675
+ result.body = @client.deserialize(result_mapper, parsed_response)
676
+ rescue Exception => e
677
+ fail MsRest::DeserializationError.new('Error occurred in deserializing the response', e.message, e.backtrace, result)
678
+ end
679
+ end
680
+
681
+ result
682
+ end
683
+
684
+ promise.execute
685
+ end
686
+
687
+ #
688
+ # Verify whether two faces belong to a same person. Compares a face Id with a
689
+ # Person Id
690
+ #
691
+ # @param face_id FaceId the face, comes from Face - Detect
692
+ # @param person_group_id [String] Using existing personGroupId and personId for
693
+ # fast loading a specified person. personGroupId is created in Person
694
+ # Groups.Create.
695
+ # @param person_id Specify a certain person in a person group. personId is
696
+ # created in Persons.Create.
697
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
698
+ # will be added to the HTTP request.
699
+ #
700
+ # @return [VerifyResult] operation results.
701
+ #
702
+ def verify_face_to_person(face_id, person_group_id, person_id, custom_headers:nil)
703
+ response = verify_face_to_person_async(face_id, person_group_id, person_id, custom_headers:custom_headers).value!
704
+ response.body unless response.nil?
705
+ end
706
+
707
+ #
708
+ # Verify whether two faces belong to a same person. Compares a face Id with a
709
+ # Person Id
710
+ #
711
+ # @param face_id FaceId the face, comes from Face - Detect
712
+ # @param person_group_id [String] Using existing personGroupId and personId for
713
+ # fast loading a specified person. personGroupId is created in Person
714
+ # Groups.Create.
715
+ # @param person_id Specify a certain person in a person group. personId is
716
+ # created in Persons.Create.
717
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
718
+ # will be added to the HTTP request.
719
+ #
720
+ # @return [MsRestAzure::AzureOperationResponse] HTTP response information.
721
+ #
722
+ def verify_face_to_person_with_http_info(face_id, person_group_id, person_id, custom_headers:nil)
723
+ verify_face_to_person_async(face_id, person_group_id, person_id, custom_headers:custom_headers).value!
724
+ end
725
+
726
+ #
727
+ # Verify whether two faces belong to a same person. Compares a face Id with a
728
+ # Person Id
729
+ #
730
+ # @param face_id FaceId the face, comes from Face - Detect
731
+ # @param person_group_id [String] Using existing personGroupId and personId for
732
+ # fast loading a specified person. personGroupId is created in Person
733
+ # Groups.Create.
734
+ # @param person_id Specify a certain person in a person group. personId is
735
+ # created in Persons.Create.
736
+ # @param [Hash{String => String}] A hash of custom headers that will be added
737
+ # to the HTTP request.
738
+ #
739
+ # @return [Concurrent::Promise] Promise object which holds the HTTP response.
740
+ #
741
+ def verify_face_to_person_async(face_id, person_group_id, person_id, custom_headers:nil)
742
+ fail ArgumentError, '@client.azure_region is nil' if @client.azure_region.nil?
743
+ fail ArgumentError, 'face_id is nil' if face_id.nil?
744
+ fail ArgumentError, 'person_group_id is nil' if person_group_id.nil?
745
+ fail ArgumentError, "'person_group_id' should satisfy the constraint - 'MaxLength': '64'" if !person_group_id.nil? && person_group_id.length > 64
746
+ fail ArgumentError, "'person_group_id' should satisfy the constraint - 'Pattern': '^[a-z0-9-_]+$'" if !person_group_id.nil? && person_group_id.match(Regexp.new('^^[a-z0-9-_]+$$')).nil?
747
+ fail ArgumentError, 'person_id is nil' if person_id.nil?
748
+
749
+ body = VerifyFaceToPersonRequest.new
750
+ unless face_id.nil? && person_group_id.nil? && person_id.nil?
751
+ body.face_id = face_id
752
+ body.person_group_id = person_group_id
753
+ body.person_id = person_id
754
+ end
755
+
756
+ request_headers = {}
757
+ request_headers['Content-Type'] = 'application/json; charset=utf-8'
758
+
759
+ # Set Headers
760
+ request_headers['x-ms-client-request-id'] = SecureRandom.uuid
761
+ request_headers['accept-language'] = @client.accept_language unless @client.accept_language.nil?
762
+
763
+ # Serialize Request
764
+ request_mapper = Azure::CognitiveServices::Face::V1_0::Models::VerifyFaceToPersonRequest.mapper()
765
+ request_content = @client.serialize(request_mapper, body)
766
+ request_content = request_content != nil ? JSON.generate(request_content, quirks_mode: true) : nil
767
+
768
+ path_template = 'verify'
769
+
770
+ request_url = @base_url || @client.base_url
771
+ request_url = request_url.gsub('{AzureRegion}', @client.azure_region)
772
+
773
+ options = {
774
+ middlewares: [[MsRest::RetryPolicyMiddleware, times: 3, retry: 0.02], [:cookie_jar]],
775
+ body: request_content,
776
+ headers: request_headers.merge(custom_headers || {}),
777
+ base_url: request_url
778
+ }
779
+ promise = @client.make_request_async(:post, path_template, options)
780
+
781
+ promise = promise.then do |result|
782
+ http_response = result.response
783
+ status_code = http_response.status
784
+ response_content = http_response.body
785
+ unless status_code == 200
786
+ error_model = JSON.load(response_content)
787
+ fail MsRest::HttpOperationError.new(result.request, http_response, error_model)
788
+ end
789
+
790
+ result.request_id = http_response['x-ms-request-id'] unless http_response['x-ms-request-id'].nil?
791
+ # Deserialize Response
792
+ if status_code == 200
793
+ begin
794
+ parsed_response = response_content.to_s.empty? ? nil : JSON.load(response_content)
795
+ result_mapper = Azure::CognitiveServices::Face::V1_0::Models::VerifyResult.mapper()
796
+ result.body = @client.deserialize(result_mapper, parsed_response)
797
+ rescue Exception => e
798
+ fail MsRest::DeserializationError.new('Error occurred in deserializing the response', e.message, e.backtrace, result)
799
+ end
800
+ end
801
+
802
+ result
803
+ end
804
+
805
+ promise.execute
806
+ end
807
+
808
+ #
809
+ # Detect human faces in an image and returns face locations, and optionally
810
+ # with faceIds, landmarks, and attributes.
811
+ #
812
+ # @param image An image stream.
813
+ # @param return_face_id [Boolean] A value indicating whether the operation
814
+ # should return faceIds of detected faces.
815
+ # @param return_face_landmarks [Boolean] A value indicating whether the
816
+ # operation should return landmarks of the detected faces.
817
+ # @param return_face_attributes [Array<FaceAttributeType>] Analyze and return
818
+ # the one or more specified face attributes in the comma-separated string like
819
+ # "returnFaceAttributes=age,gender". Supported face attributes include age,
820
+ # gender, headPose, smile, facialHair, glasses and emotion. Note that each face
821
+ # attribute analysis has additional computational and time cost.
822
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
823
+ # will be added to the HTTP request.
824
+ #
825
+ # @return [Array] operation results.
826
+ #
827
+ def detect_with_stream(image, return_face_id:true, return_face_landmarks:false, return_face_attributes:nil, custom_headers:nil)
828
+ response = detect_with_stream_async(image, return_face_id:return_face_id, return_face_landmarks:return_face_landmarks, return_face_attributes:return_face_attributes, custom_headers:custom_headers).value!
829
+ response.body unless response.nil?
830
+ end
831
+
832
+ #
833
+ # Detect human faces in an image and returns face locations, and optionally
834
+ # with faceIds, landmarks, and attributes.
835
+ #
836
+ # @param image An image stream.
837
+ # @param return_face_id [Boolean] A value indicating whether the operation
838
+ # should return faceIds of detected faces.
839
+ # @param return_face_landmarks [Boolean] A value indicating whether the
840
+ # operation should return landmarks of the detected faces.
841
+ # @param return_face_attributes [Array<FaceAttributeType>] Analyze and return
842
+ # the one or more specified face attributes in the comma-separated string like
843
+ # "returnFaceAttributes=age,gender". Supported face attributes include age,
844
+ # gender, headPose, smile, facialHair, glasses and emotion. Note that each face
845
+ # attribute analysis has additional computational and time cost.
846
+ # @param custom_headers [Hash{String => String}] A hash of custom headers that
847
+ # will be added to the HTTP request.
848
+ #
849
+ # @return [MsRestAzure::AzureOperationResponse] HTTP response information.
850
+ #
851
+ def detect_with_stream_with_http_info(image, return_face_id:true, return_face_landmarks:false, return_face_attributes:nil, custom_headers:nil)
852
+ detect_with_stream_async(image, return_face_id:return_face_id, return_face_landmarks:return_face_landmarks, return_face_attributes:return_face_attributes, custom_headers:custom_headers).value!
853
+ end
854
+
855
+ #
856
+ # Detect human faces in an image and returns face locations, and optionally
857
+ # with faceIds, landmarks, and attributes.
858
+ #
859
+ # @param image An image stream.
860
+ # @param return_face_id [Boolean] A value indicating whether the operation
861
+ # should return faceIds of detected faces.
862
+ # @param return_face_landmarks [Boolean] A value indicating whether the
863
+ # operation should return landmarks of the detected faces.
864
+ # @param return_face_attributes [Array<FaceAttributeType>] Analyze and return
865
+ # the one or more specified face attributes in the comma-separated string like
866
+ # "returnFaceAttributes=age,gender". Supported face attributes include age,
867
+ # gender, headPose, smile, facialHair, glasses and emotion. Note that each face
868
+ # attribute analysis has additional computational and time cost.
869
+ # @param [Hash{String => String}] A hash of custom headers that will be added
870
+ # to the HTTP request.
871
+ #
872
+ # @return [Concurrent::Promise] Promise object which holds the HTTP response.
873
+ #
874
+ def detect_with_stream_async(image, return_face_id:true, return_face_landmarks:false, return_face_attributes:nil, custom_headers:nil)
875
+ fail ArgumentError, '@client.azure_region is nil' if @client.azure_region.nil?
876
+ fail ArgumentError, 'image is nil' if image.nil?
877
+
878
+
879
+ request_headers = {}
880
+ request_headers['Content-Type'] = 'application/octet-stream'
881
+
882
+ # Set Headers
883
+ request_headers['x-ms-client-request-id'] = SecureRandom.uuid
884
+ request_headers['accept-language'] = @client.accept_language unless @client.accept_language.nil?
885
+
886
+ # Serialize Request
887
+ request_mapper = {
888
+ client_side_validation: true,
889
+ required: true,
890
+ serialized_name: 'Image',
891
+ type: {
892
+ name: 'Stream'
893
+ }
894
+ }
895
+ request_content = @client.serialize(request_mapper, image)
896
+
897
+ path_template = 'detect'
898
+
899
+ request_url = @base_url || @client.base_url
900
+ request_url = request_url.gsub('{AzureRegion}', @client.azure_region)
901
+
902
+ options = {
903
+ middlewares: [[MsRest::RetryPolicyMiddleware, times: 3, retry: 0.02], [:cookie_jar]],
904
+ query_params: {'returnFaceId' => return_face_id,'returnFaceLandmarks' => return_face_landmarks,'returnFaceAttributes' => return_face_attributes.nil? ? nil : return_face_attributes.join(',')},
905
+ body: request_content,
906
+ headers: request_headers.merge(custom_headers || {}),
907
+ base_url: request_url
908
+ }
909
+ promise = @client.make_request_async(:post, path_template, options)
910
+
911
+ promise = promise.then do |result|
912
+ http_response = result.response
913
+ status_code = http_response.status
914
+ response_content = http_response.body
915
+ unless status_code == 200
916
+ error_model = JSON.load(response_content)
917
+ fail MsRest::HttpOperationError.new(result.request, http_response, error_model)
918
+ end
919
+
920
+ result.request_id = http_response['x-ms-request-id'] unless http_response['x-ms-request-id'].nil?
921
+ # Deserialize Response
922
+ if status_code == 200
923
+ begin
924
+ parsed_response = response_content.to_s.empty? ? nil : JSON.load(response_content)
925
+ result_mapper = {
926
+ client_side_validation: true,
927
+ required: false,
928
+ serialized_name: 'parsed_response',
929
+ type: {
930
+ name: 'Sequence',
931
+ element: {
932
+ client_side_validation: true,
933
+ required: false,
934
+ serialized_name: 'DetectedFaceElementType',
935
+ type: {
936
+ name: 'Composite',
937
+ class_name: 'DetectedFace'
938
+ }
939
+ }
940
+ }
941
+ }
942
+ result.body = @client.deserialize(result_mapper, parsed_response)
943
+ rescue Exception => e
944
+ fail MsRest::DeserializationError.new('Error occurred in deserializing the response', e.message, e.backtrace, result)
945
+ end
946
+ end
947
+
948
+ result
949
+ end
950
+
951
+ promise.execute
952
+ end
953
+
954
+ end
955
+ end