1 package face
2
3
4
5
6
7
8
9 import (
10 "context"
11 "github.com/Azure/go-autorest/autorest"
12 "github.com/Azure/go-autorest/autorest/azure"
13 "github.com/Azure/go-autorest/autorest/validation"
14 "github.com/Azure/go-autorest/tracing"
15 "io"
16 "net/http"
17 )
18
19
20 type Client struct {
21 BaseClient
22 }
23
24
25 func NewClient(endpoint string) Client {
26 return Client{New(endpoint)}
27 }
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94 func (client Client) DetectWithStream(ctx context.Context, imageParameter io.ReadCloser, returnFaceID *bool, returnFaceLandmarks *bool, returnFaceAttributes []AttributeType, recognitionModel RecognitionModel, returnRecognitionModel *bool, detectionModel DetectionModel) (result ListDetectedFace, err error) {
95 if tracing.IsEnabled() {
96 ctx = tracing.StartSpan(ctx, fqdn+"/Client.DetectWithStream")
97 defer func() {
98 sc := -1
99 if result.Response.Response != nil {
100 sc = result.Response.Response.StatusCode
101 }
102 tracing.EndSpan(ctx, sc, err)
103 }()
104 }
105 req, err := client.DetectWithStreamPreparer(ctx, imageParameter, returnFaceID, returnFaceLandmarks, returnFaceAttributes, recognitionModel, returnRecognitionModel, detectionModel)
106 if err != nil {
107 err = autorest.NewErrorWithError(err, "face.Client", "DetectWithStream", nil, "Failure preparing request")
108 return
109 }
110
111 resp, err := client.DetectWithStreamSender(req)
112 if err != nil {
113 result.Response = autorest.Response{Response: resp}
114 err = autorest.NewErrorWithError(err, "face.Client", "DetectWithStream", resp, "Failure sending request")
115 return
116 }
117
118 result, err = client.DetectWithStreamResponder(resp)
119 if err != nil {
120 err = autorest.NewErrorWithError(err, "face.Client", "DetectWithStream", resp, "Failure responding to request")
121 return
122 }
123
124 return
125 }
126
127
128 func (client Client) DetectWithStreamPreparer(ctx context.Context, imageParameter io.ReadCloser, returnFaceID *bool, returnFaceLandmarks *bool, returnFaceAttributes []AttributeType, recognitionModel RecognitionModel, returnRecognitionModel *bool, detectionModel DetectionModel) (*http.Request, error) {
129 urlParameters := map[string]interface{}{
130 "Endpoint": client.Endpoint,
131 }
132
133 queryParameters := map[string]interface{}{}
134 if returnFaceID != nil {
135 queryParameters["returnFaceId"] = autorest.Encode("query", *returnFaceID)
136 } else {
137 queryParameters["returnFaceId"] = autorest.Encode("query", true)
138 }
139 if returnFaceLandmarks != nil {
140 queryParameters["returnFaceLandmarks"] = autorest.Encode("query", *returnFaceLandmarks)
141 } else {
142 queryParameters["returnFaceLandmarks"] = autorest.Encode("query", false)
143 }
144 if returnFaceAttributes != nil && len(returnFaceAttributes) > 0 {
145 queryParameters["returnFaceAttributes"] = autorest.Encode("query", returnFaceAttributes, ",")
146 }
147 if len(string(recognitionModel)) > 0 {
148 queryParameters["recognitionModel"] = autorest.Encode("query", recognitionModel)
149 } else {
150 queryParameters["recognitionModel"] = autorest.Encode("query", "recognition_01")
151 }
152 if returnRecognitionModel != nil {
153 queryParameters["returnRecognitionModel"] = autorest.Encode("query", *returnRecognitionModel)
154 } else {
155 queryParameters["returnRecognitionModel"] = autorest.Encode("query", false)
156 }
157 if len(string(detectionModel)) > 0 {
158 queryParameters["detectionModel"] = autorest.Encode("query", detectionModel)
159 } else {
160 queryParameters["detectionModel"] = autorest.Encode("query", "detection_01")
161 }
162
163 preparer := autorest.CreatePreparer(
164 autorest.AsContentType("application/octet-stream"),
165 autorest.AsPost(),
166 autorest.WithCustomBaseURL("{Endpoint}/face/v1.0", urlParameters),
167 autorest.WithPath("/detect"),
168 autorest.WithFile(imageParameter),
169 autorest.WithQueryParameters(queryParameters))
170 return preparer.Prepare((&http.Request{}).WithContext(ctx))
171 }
172
173
174
175 func (client Client) DetectWithStreamSender(req *http.Request) (*http.Response, error) {
176 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
177 }
178
179
180
181 func (client Client) DetectWithStreamResponder(resp *http.Response) (result ListDetectedFace, err error) {
182 err = autorest.Respond(
183 resp,
184 azure.WithErrorUnlessStatusCode(http.StatusOK),
185 autorest.ByUnmarshallingJSON(&result.Value),
186 autorest.ByClosing())
187 result.Response = autorest.Response{Response: resp}
188 return
189 }
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256 func (client Client) DetectWithURL(ctx context.Context, imageURL ImageURL, returnFaceID *bool, returnFaceLandmarks *bool, returnFaceAttributes []AttributeType, recognitionModel RecognitionModel, returnRecognitionModel *bool, detectionModel DetectionModel) (result ListDetectedFace, err error) {
257 if tracing.IsEnabled() {
258 ctx = tracing.StartSpan(ctx, fqdn+"/Client.DetectWithURL")
259 defer func() {
260 sc := -1
261 if result.Response.Response != nil {
262 sc = result.Response.Response.StatusCode
263 }
264 tracing.EndSpan(ctx, sc, err)
265 }()
266 }
267 if err := validation.Validate([]validation.Validation{
268 {TargetValue: imageURL,
269 Constraints: []validation.Constraint{{Target: "imageURL.URL", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
270 return result, validation.NewError("face.Client", "DetectWithURL", err.Error())
271 }
272
273 req, err := client.DetectWithURLPreparer(ctx, imageURL, returnFaceID, returnFaceLandmarks, returnFaceAttributes, recognitionModel, returnRecognitionModel, detectionModel)
274 if err != nil {
275 err = autorest.NewErrorWithError(err, "face.Client", "DetectWithURL", nil, "Failure preparing request")
276 return
277 }
278
279 resp, err := client.DetectWithURLSender(req)
280 if err != nil {
281 result.Response = autorest.Response{Response: resp}
282 err = autorest.NewErrorWithError(err, "face.Client", "DetectWithURL", resp, "Failure sending request")
283 return
284 }
285
286 result, err = client.DetectWithURLResponder(resp)
287 if err != nil {
288 err = autorest.NewErrorWithError(err, "face.Client", "DetectWithURL", resp, "Failure responding to request")
289 return
290 }
291
292 return
293 }
294
295
296 func (client Client) DetectWithURLPreparer(ctx context.Context, imageURL ImageURL, returnFaceID *bool, returnFaceLandmarks *bool, returnFaceAttributes []AttributeType, recognitionModel RecognitionModel, returnRecognitionModel *bool, detectionModel DetectionModel) (*http.Request, error) {
297 urlParameters := map[string]interface{}{
298 "Endpoint": client.Endpoint,
299 }
300
301 queryParameters := map[string]interface{}{}
302 if returnFaceID != nil {
303 queryParameters["returnFaceId"] = autorest.Encode("query", *returnFaceID)
304 } else {
305 queryParameters["returnFaceId"] = autorest.Encode("query", true)
306 }
307 if returnFaceLandmarks != nil {
308 queryParameters["returnFaceLandmarks"] = autorest.Encode("query", *returnFaceLandmarks)
309 } else {
310 queryParameters["returnFaceLandmarks"] = autorest.Encode("query", false)
311 }
312 if returnFaceAttributes != nil && len(returnFaceAttributes) > 0 {
313 queryParameters["returnFaceAttributes"] = autorest.Encode("query", returnFaceAttributes, ",")
314 }
315 if len(string(recognitionModel)) > 0 {
316 queryParameters["recognitionModel"] = autorest.Encode("query", recognitionModel)
317 } else {
318 queryParameters["recognitionModel"] = autorest.Encode("query", "recognition_01")
319 }
320 if returnRecognitionModel != nil {
321 queryParameters["returnRecognitionModel"] = autorest.Encode("query", *returnRecognitionModel)
322 } else {
323 queryParameters["returnRecognitionModel"] = autorest.Encode("query", false)
324 }
325 if len(string(detectionModel)) > 0 {
326 queryParameters["detectionModel"] = autorest.Encode("query", detectionModel)
327 } else {
328 queryParameters["detectionModel"] = autorest.Encode("query", "detection_01")
329 }
330
331 preparer := autorest.CreatePreparer(
332 autorest.AsContentType("application/json; charset=utf-8"),
333 autorest.AsPost(),
334 autorest.WithCustomBaseURL("{Endpoint}/face/v1.0", urlParameters),
335 autorest.WithPath("/detect"),
336 autorest.WithJSON(imageURL),
337 autorest.WithQueryParameters(queryParameters))
338 return preparer.Prepare((&http.Request{}).WithContext(ctx))
339 }
340
341
342
343 func (client Client) DetectWithURLSender(req *http.Request) (*http.Response, error) {
344 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
345 }
346
347
348
349 func (client Client) DetectWithURLResponder(resp *http.Response) (result ListDetectedFace, err error) {
350 err = autorest.Respond(
351 resp,
352 azure.WithErrorUnlessStatusCode(http.StatusOK),
353 autorest.ByUnmarshallingJSON(&result.Value),
354 autorest.ByClosing())
355 result.Response = autorest.Response{Response: resp}
356 return
357 }
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377 func (client Client) FindSimilar(ctx context.Context, body FindSimilarRequest) (result ListSimilarFace, err error) {
378 if tracing.IsEnabled() {
379 ctx = tracing.StartSpan(ctx, fqdn+"/Client.FindSimilar")
380 defer func() {
381 sc := -1
382 if result.Response.Response != nil {
383 sc = result.Response.Response.StatusCode
384 }
385 tracing.EndSpan(ctx, sc, err)
386 }()
387 }
388 if err := validation.Validate([]validation.Validation{
389 {TargetValue: body,
390 Constraints: []validation.Constraint{{Target: "body.FaceID", Name: validation.Null, Rule: true, Chain: nil},
391 {Target: "body.FaceListID", Name: validation.Null, Rule: false,
392 Chain: []validation.Constraint{{Target: "body.FaceListID", Name: validation.MaxLength, Rule: 64, Chain: nil},
393 {Target: "body.FaceListID", Name: validation.Pattern, Rule: `^[a-z0-9-_]+$`, Chain: nil},
394 }},
395 {Target: "body.LargeFaceListID", Name: validation.Null, Rule: false,
396 Chain: []validation.Constraint{{Target: "body.LargeFaceListID", Name: validation.MaxLength, Rule: 64, Chain: nil},
397 {Target: "body.LargeFaceListID", Name: validation.Pattern, Rule: `^[a-z0-9-_]+$`, Chain: nil},
398 }},
399 {Target: "body.FaceIds", Name: validation.Null, Rule: false,
400 Chain: []validation.Constraint{{Target: "body.FaceIds", Name: validation.MaxItems, Rule: 1000, Chain: nil}}},
401 {Target: "body.MaxNumOfCandidatesReturned", Name: validation.Null, Rule: false,
402 Chain: []validation.Constraint{{Target: "body.MaxNumOfCandidatesReturned", Name: validation.InclusiveMaximum, Rule: int64(1000), Chain: nil},
403 {Target: "body.MaxNumOfCandidatesReturned", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil},
404 }}}}}); err != nil {
405 return result, validation.NewError("face.Client", "FindSimilar", err.Error())
406 }
407
408 req, err := client.FindSimilarPreparer(ctx, body)
409 if err != nil {
410 err = autorest.NewErrorWithError(err, "face.Client", "FindSimilar", nil, "Failure preparing request")
411 return
412 }
413
414 resp, err := client.FindSimilarSender(req)
415 if err != nil {
416 result.Response = autorest.Response{Response: resp}
417 err = autorest.NewErrorWithError(err, "face.Client", "FindSimilar", resp, "Failure sending request")
418 return
419 }
420
421 result, err = client.FindSimilarResponder(resp)
422 if err != nil {
423 err = autorest.NewErrorWithError(err, "face.Client", "FindSimilar", resp, "Failure responding to request")
424 return
425 }
426
427 return
428 }
429
430
431 func (client Client) FindSimilarPreparer(ctx context.Context, body FindSimilarRequest) (*http.Request, error) {
432 urlParameters := map[string]interface{}{
433 "Endpoint": client.Endpoint,
434 }
435
436 preparer := autorest.CreatePreparer(
437 autorest.AsContentType("application/json; charset=utf-8"),
438 autorest.AsPost(),
439 autorest.WithCustomBaseURL("{Endpoint}/face/v1.0", urlParameters),
440 autorest.WithPath("/findsimilars"),
441 autorest.WithJSON(body))
442 return preparer.Prepare((&http.Request{}).WithContext(ctx))
443 }
444
445
446
447 func (client Client) FindSimilarSender(req *http.Request) (*http.Response, error) {
448 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
449 }
450
451
452
453 func (client Client) FindSimilarResponder(resp *http.Response) (result ListSimilarFace, err error) {
454 err = autorest.Respond(
455 resp,
456 azure.WithErrorUnlessStatusCode(http.StatusOK),
457 autorest.ByUnmarshallingJSON(&result.Value),
458 autorest.ByClosing())
459 result.Response = autorest.Response{Response: resp}
460 return
461 }
462
463
464
465
466
467
468
469
470
471
472
473
474
475 func (client Client) Group(ctx context.Context, body GroupRequest) (result GroupResult, err error) {
476 if tracing.IsEnabled() {
477 ctx = tracing.StartSpan(ctx, fqdn+"/Client.Group")
478 defer func() {
479 sc := -1
480 if result.Response.Response != nil {
481 sc = result.Response.Response.StatusCode
482 }
483 tracing.EndSpan(ctx, sc, err)
484 }()
485 }
486 if err := validation.Validate([]validation.Validation{
487 {TargetValue: body,
488 Constraints: []validation.Constraint{{Target: "body.FaceIds", Name: validation.Null, Rule: true,
489 Chain: []validation.Constraint{{Target: "body.FaceIds", Name: validation.MaxItems, Rule: 1000, Chain: nil}}}}}}); err != nil {
490 return result, validation.NewError("face.Client", "Group", err.Error())
491 }
492
493 req, err := client.GroupPreparer(ctx, body)
494 if err != nil {
495 err = autorest.NewErrorWithError(err, "face.Client", "Group", nil, "Failure preparing request")
496 return
497 }
498
499 resp, err := client.GroupSender(req)
500 if err != nil {
501 result.Response = autorest.Response{Response: resp}
502 err = autorest.NewErrorWithError(err, "face.Client", "Group", resp, "Failure sending request")
503 return
504 }
505
506 result, err = client.GroupResponder(resp)
507 if err != nil {
508 err = autorest.NewErrorWithError(err, "face.Client", "Group", resp, "Failure responding to request")
509 return
510 }
511
512 return
513 }
514
515
516 func (client Client) GroupPreparer(ctx context.Context, body GroupRequest) (*http.Request, error) {
517 urlParameters := map[string]interface{}{
518 "Endpoint": client.Endpoint,
519 }
520
521 preparer := autorest.CreatePreparer(
522 autorest.AsContentType("application/json; charset=utf-8"),
523 autorest.AsPost(),
524 autorest.WithCustomBaseURL("{Endpoint}/face/v1.0", urlParameters),
525 autorest.WithPath("/group"),
526 autorest.WithJSON(body))
527 return preparer.Prepare((&http.Request{}).WithContext(ctx))
528 }
529
530
531
532 func (client Client) GroupSender(req *http.Request) (*http.Response, error) {
533 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
534 }
535
536
537
538 func (client Client) GroupResponder(resp *http.Response) (result GroupResult, err error) {
539 err = autorest.Respond(
540 resp,
541 azure.WithErrorUnlessStatusCode(http.StatusOK),
542 autorest.ByUnmarshallingJSON(&result),
543 autorest.ByClosing())
544 result.Response = autorest.Response{Response: resp}
545 return
546 }
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572 func (client Client) Identify(ctx context.Context, body IdentifyRequest) (result ListIdentifyResult, err error) {
573 if tracing.IsEnabled() {
574 ctx = tracing.StartSpan(ctx, fqdn+"/Client.Identify")
575 defer func() {
576 sc := -1
577 if result.Response.Response != nil {
578 sc = result.Response.Response.StatusCode
579 }
580 tracing.EndSpan(ctx, sc, err)
581 }()
582 }
583 if err := validation.Validate([]validation.Validation{
584 {TargetValue: body,
585 Constraints: []validation.Constraint{{Target: "body.FaceIds", Name: validation.Null, Rule: true,
586 Chain: []validation.Constraint{{Target: "body.FaceIds", Name: validation.MaxItems, Rule: 10, Chain: nil}}},
587 {Target: "body.PersonGroupID", Name: validation.Null, Rule: false,
588 Chain: []validation.Constraint{{Target: "body.PersonGroupID", Name: validation.MaxLength, Rule: 64, Chain: nil},
589 {Target: "body.PersonGroupID", Name: validation.Pattern, Rule: `^[a-z0-9-_]+$`, Chain: nil},
590 }},
591 {Target: "body.LargePersonGroupID", Name: validation.Null, Rule: false,
592 Chain: []validation.Constraint{{Target: "body.LargePersonGroupID", Name: validation.MaxLength, Rule: 64, Chain: nil},
593 {Target: "body.LargePersonGroupID", Name: validation.Pattern, Rule: `^[a-z0-9-_]+$`, Chain: nil},
594 }},
595 {Target: "body.MaxNumOfCandidatesReturned", Name: validation.Null, Rule: false,
596 Chain: []validation.Constraint{{Target: "body.MaxNumOfCandidatesReturned", Name: validation.InclusiveMaximum, Rule: int64(5), Chain: nil},
597 {Target: "body.MaxNumOfCandidatesReturned", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil},
598 }}}}}); err != nil {
599 return result, validation.NewError("face.Client", "Identify", err.Error())
600 }
601
602 req, err := client.IdentifyPreparer(ctx, body)
603 if err != nil {
604 err = autorest.NewErrorWithError(err, "face.Client", "Identify", nil, "Failure preparing request")
605 return
606 }
607
608 resp, err := client.IdentifySender(req)
609 if err != nil {
610 result.Response = autorest.Response{Response: resp}
611 err = autorest.NewErrorWithError(err, "face.Client", "Identify", resp, "Failure sending request")
612 return
613 }
614
615 result, err = client.IdentifyResponder(resp)
616 if err != nil {
617 err = autorest.NewErrorWithError(err, "face.Client", "Identify", resp, "Failure responding to request")
618 return
619 }
620
621 return
622 }
623
624
625 func (client Client) IdentifyPreparer(ctx context.Context, body IdentifyRequest) (*http.Request, error) {
626 urlParameters := map[string]interface{}{
627 "Endpoint": client.Endpoint,
628 }
629
630 preparer := autorest.CreatePreparer(
631 autorest.AsContentType("application/json; charset=utf-8"),
632 autorest.AsPost(),
633 autorest.WithCustomBaseURL("{Endpoint}/face/v1.0", urlParameters),
634 autorest.WithPath("/identify"),
635 autorest.WithJSON(body))
636 return preparer.Prepare((&http.Request{}).WithContext(ctx))
637 }
638
639
640
641 func (client Client) IdentifySender(req *http.Request) (*http.Response, error) {
642 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
643 }
644
645
646
647 func (client Client) IdentifyResponder(resp *http.Response) (result ListIdentifyResult, err error) {
648 err = autorest.Respond(
649 resp,
650 azure.WithErrorUnlessStatusCode(http.StatusOK),
651 autorest.ByUnmarshallingJSON(&result.Value),
652 autorest.ByClosing())
653 result.Response = autorest.Response{Response: resp}
654 return
655 }
656
657
658
659
660
661
662
663
664
665
666
667 func (client Client) VerifyFaceToFace(ctx context.Context, body VerifyFaceToFaceRequest) (result VerifyResult, err error) {
668 if tracing.IsEnabled() {
669 ctx = tracing.StartSpan(ctx, fqdn+"/Client.VerifyFaceToFace")
670 defer func() {
671 sc := -1
672 if result.Response.Response != nil {
673 sc = result.Response.Response.StatusCode
674 }
675 tracing.EndSpan(ctx, sc, err)
676 }()
677 }
678 if err := validation.Validate([]validation.Validation{
679 {TargetValue: body,
680 Constraints: []validation.Constraint{{Target: "body.FaceID1", Name: validation.Null, Rule: true, Chain: nil},
681 {Target: "body.FaceID2", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
682 return result, validation.NewError("face.Client", "VerifyFaceToFace", err.Error())
683 }
684
685 req, err := client.VerifyFaceToFacePreparer(ctx, body)
686 if err != nil {
687 err = autorest.NewErrorWithError(err, "face.Client", "VerifyFaceToFace", nil, "Failure preparing request")
688 return
689 }
690
691 resp, err := client.VerifyFaceToFaceSender(req)
692 if err != nil {
693 result.Response = autorest.Response{Response: resp}
694 err = autorest.NewErrorWithError(err, "face.Client", "VerifyFaceToFace", resp, "Failure sending request")
695 return
696 }
697
698 result, err = client.VerifyFaceToFaceResponder(resp)
699 if err != nil {
700 err = autorest.NewErrorWithError(err, "face.Client", "VerifyFaceToFace", resp, "Failure responding to request")
701 return
702 }
703
704 return
705 }
706
707
708 func (client Client) VerifyFaceToFacePreparer(ctx context.Context, body VerifyFaceToFaceRequest) (*http.Request, error) {
709 urlParameters := map[string]interface{}{
710 "Endpoint": client.Endpoint,
711 }
712
713 preparer := autorest.CreatePreparer(
714 autorest.AsContentType("application/json; charset=utf-8"),
715 autorest.AsPost(),
716 autorest.WithCustomBaseURL("{Endpoint}/face/v1.0", urlParameters),
717 autorest.WithPath("/verify"),
718 autorest.WithJSON(body))
719 return preparer.Prepare((&http.Request{}).WithContext(ctx))
720 }
721
722
723
724 func (client Client) VerifyFaceToFaceSender(req *http.Request) (*http.Response, error) {
725 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
726 }
727
728
729
730 func (client Client) VerifyFaceToFaceResponder(resp *http.Response) (result VerifyResult, err error) {
731 err = autorest.Respond(
732 resp,
733 azure.WithErrorUnlessStatusCode(http.StatusOK),
734 autorest.ByUnmarshallingJSON(&result),
735 autorest.ByClosing())
736 result.Response = autorest.Response{Response: resp}
737 return
738 }
739
740
741
742
743 func (client Client) VerifyFaceToPerson(ctx context.Context, body VerifyFaceToPersonRequest) (result VerifyResult, err error) {
744 if tracing.IsEnabled() {
745 ctx = tracing.StartSpan(ctx, fqdn+"/Client.VerifyFaceToPerson")
746 defer func() {
747 sc := -1
748 if result.Response.Response != nil {
749 sc = result.Response.Response.StatusCode
750 }
751 tracing.EndSpan(ctx, sc, err)
752 }()
753 }
754 if err := validation.Validate([]validation.Validation{
755 {TargetValue: body,
756 Constraints: []validation.Constraint{{Target: "body.FaceID", Name: validation.Null, Rule: true, Chain: nil},
757 {Target: "body.PersonGroupID", Name: validation.Null, Rule: false,
758 Chain: []validation.Constraint{{Target: "body.PersonGroupID", Name: validation.MaxLength, Rule: 64, Chain: nil},
759 {Target: "body.PersonGroupID", Name: validation.Pattern, Rule: `^[a-z0-9-_]+$`, Chain: nil},
760 }},
761 {Target: "body.LargePersonGroupID", Name: validation.Null, Rule: false,
762 Chain: []validation.Constraint{{Target: "body.LargePersonGroupID", Name: validation.MaxLength, Rule: 64, Chain: nil},
763 {Target: "body.LargePersonGroupID", Name: validation.Pattern, Rule: `^[a-z0-9-_]+$`, Chain: nil},
764 }},
765 {Target: "body.PersonID", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
766 return result, validation.NewError("face.Client", "VerifyFaceToPerson", err.Error())
767 }
768
769 req, err := client.VerifyFaceToPersonPreparer(ctx, body)
770 if err != nil {
771 err = autorest.NewErrorWithError(err, "face.Client", "VerifyFaceToPerson", nil, "Failure preparing request")
772 return
773 }
774
775 resp, err := client.VerifyFaceToPersonSender(req)
776 if err != nil {
777 result.Response = autorest.Response{Response: resp}
778 err = autorest.NewErrorWithError(err, "face.Client", "VerifyFaceToPerson", resp, "Failure sending request")
779 return
780 }
781
782 result, err = client.VerifyFaceToPersonResponder(resp)
783 if err != nil {
784 err = autorest.NewErrorWithError(err, "face.Client", "VerifyFaceToPerson", resp, "Failure responding to request")
785 return
786 }
787
788 return
789 }
790
791
792 func (client Client) VerifyFaceToPersonPreparer(ctx context.Context, body VerifyFaceToPersonRequest) (*http.Request, error) {
793 urlParameters := map[string]interface{}{
794 "Endpoint": client.Endpoint,
795 }
796
797 preparer := autorest.CreatePreparer(
798 autorest.AsContentType("application/json; charset=utf-8"),
799 autorest.AsPost(),
800 autorest.WithCustomBaseURL("{Endpoint}/face/v1.0", urlParameters),
801 autorest.WithPath("/verify"),
802 autorest.WithJSON(body))
803 return preparer.Prepare((&http.Request{}).WithContext(ctx))
804 }
805
806
807
808 func (client Client) VerifyFaceToPersonSender(req *http.Request) (*http.Response, error) {
809 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
810 }
811
812
813
814 func (client Client) VerifyFaceToPersonResponder(resp *http.Response) (result VerifyResult, err error) {
815 err = autorest.Respond(
816 resp,
817 azure.WithErrorUnlessStatusCode(http.StatusOK),
818 autorest.ByUnmarshallingJSON(&result),
819 autorest.ByClosing())
820 result.Response = autorest.Response{Response: resp}
821 return
822 }
823
View as plain text