azure_cognitiveservices_face 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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