aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/Azure/azure-storage-blob-go/2018-03-28/azblob/zz_generated_response_error.go
blob: 3dcc75bb52b510f01ac4608136d151899ef9491b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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
95
package azblob

// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

import (
    "bytes"
    "fmt"
    "github.com/Azure/azure-pipeline-go/pipeline"
    "net"
    "net/http"
)

// if you want to provide custom error handling set this variable to your constructor function
var responseErrorFactory func(cause error, response *http.Response, description string) error

// ResponseError identifies a responder-generated network or response parsing error.
type ResponseError interface {
    // Error exposes the Error(), Temporary() and Timeout() methods.
    net.Error // Includes the Go error interface
    // Response returns the HTTP response. You may examine this but you should not modify it.
    Response() *http.Response
}

// NewResponseError creates an error object that implements the error interface.
func NewResponseError(cause error, response *http.Response, description string) error {
    if responseErrorFactory != nil {
        return responseErrorFactory(cause, response, description)
    }
    return &responseError{
        ErrorNode:   pipeline.ErrorNode{}.Initialize(cause, 3),
        response:    response,
        description: description,
    }
}

// responseError is the internal struct that implements the public ResponseError interface.
type responseError struct {
    pipeline.ErrorNode // This is embedded so that responseError "inherits" Error, Temporary, Timeout, and Cause
    response           *http.Response
    description        string
}

// Error implements the error interface's Error method to return a string representation of the error.
func (e *responseError) Error() string {
    b := &bytes.Buffer{}
    fmt.Fprintf(b, "===== RESPONSE ERROR (Code=%v) =====\n", e.response.StatusCode)
    fmt.Fprintf(b, "Status=%s, Description: %s\n", e.response.Status, e.description)
    s := b.String()
    return e.ErrorNode.Error(s)
}

// Response implements the ResponseError interface's method to return the HTTP response.
func (e *responseError) Response() *http.Response {
    return e.response
}

// RFC7807 PROBLEM ------------------------------------------------------------------------------------
// RFC7807Problem ... This type can be publicly embedded in another type that wants to add additional members.
/*type RFC7807Problem struct {
    // Mandatory: A (relative) URI reference identifying the problem type (it MAY refer to human-readable documentation).
    typeURI string // Should default to "about:blank"
    // Optional: Short, human-readable summary (maybe localized).
    title string
    // Optional: HTTP status code generated by the origin server
    status int
    // Optional: Human-readable explanation for this problem occurance.
    // Should help client correct the problem. Clients should NOT parse this string.
    detail string
    // Optional: A (relative) URI identifying this specific problem occurence (it may or may not be dereferenced).
    instance string
}
// NewRFC7807Problem ...
func NewRFC7807Problem(typeURI string, status int, titleFormat string, a ...interface{}) error {
    return &RFC7807Problem{
        typeURI: typeURI,
        status:  status,
        title:   fmt.Sprintf(titleFormat, a...),
    }
}
// Error returns the error information as a string.
func (e *RFC7807Problem) Error() string {
    return e.title
}
// TypeURI ...
func (e *RFC7807Problem) TypeURI() string {
    if e.typeURI == "" {
        e.typeURI = "about:blank"
    }
    return e.typeURI
}
// Members ...
func (e *RFC7807Problem) Members() (status int, title, detail, instance string) {
    return e.status, e.title, e.detail, e.instance
}*/