Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
IRMA
Github mirrors
irmago
Commits
cd6a1f63
Commit
cd6a1f63
authored
Apr 14, 2018
by
Tomas
Browse files
ApiError -> RemoteError
parent
bc84be70
Changes
3
Hide whitespace changes
Inline
Side-by-side
irmaclient/keyshare.go
View file @
cd6a1f63
...
...
@@ -218,12 +218,12 @@ func startKeyshareSession(
func
(
ks
*
keyshareSession
)
fail
(
manager
irma
.
SchemeManagerIdentifier
,
err
error
)
{
serr
,
ok
:=
err
.
(
*
irma
.
SessionError
)
if
ok
{
if
serr
.
Api
Error
!=
nil
&&
len
(
serr
.
Api
Error
.
ErrorName
)
>
0
{
switch
serr
.
Api
Error
.
ErrorName
{
if
serr
.
Remote
Error
!=
nil
&&
len
(
serr
.
Remote
Error
.
ErrorName
)
>
0
{
switch
serr
.
Remote
Error
.
ErrorName
{
case
"USER_NOT_REGISTERED"
:
ks
.
sessionHandler
.
KeyshareEnrollmentIncomplete
(
manager
)
case
"USER_BLOCKED"
:
duration
,
err
:=
strconv
.
Atoi
(
serr
.
Api
Error
.
Message
)
duration
,
err
:=
strconv
.
Atoi
(
serr
.
Remote
Error
.
Message
)
if
err
!=
nil
{
// Not really clear what to do with duration, but should never happen anyway
duration
=
-
1
}
...
...
messages.go
View file @
cd6a1f63
...
...
@@ -48,14 +48,13 @@ type ErrorType string
type
SessionError
struct
{
Err
error
ErrorType
*
ApiError
Info
string
Status
int
StatusMessage
string
Info
string
RemoteError
*
RemoteError
RemoteStatus
int
}
//
Api
Error is an error message returned by the API server on errors.
type
Api
Error
struct
{
//
Remote
Error is an error message returned by the API server on errors.
type
Remote
Error
struct
{
Status
int
`json:"status"`
ErrorName
string
`json:"error"`
Description
string
`json:"description"`
...
...
@@ -63,7 +62,7 @@ type ApiError struct {
Stacktrace
string
`json:"stacktrace"`
}
func
(
err
*
Api
Error
)
Error
()
string
{
func
(
err
*
Remote
Error
)
Error
()
string
{
var
msg
string
if
err
.
Message
!=
""
{
msg
=
fmt
.
Sprintf
(
" (%s)"
,
err
.
Message
)
...
...
@@ -154,13 +153,13 @@ func (e *SessionError) Error() string {
buffer
.
WriteString
(
"
\n
Description: "
)
buffer
.
WriteString
(
e
.
Err
.
Error
())
}
if
e
.
Status
!=
200
&&
e
.
StatusMessage
!=
""
{
buffer
.
WriteString
(
"
\n
Connection
: "
)
buffer
.
WriteString
(
e
.
StatusMessage
)
if
e
.
Remote
Status
!=
200
{
buffer
.
WriteString
(
"
\n
Status code
: "
)
buffer
.
WriteString
(
string
(
e
.
RemoteStatus
)
)
}
if
e
.
Api
Error
!=
nil
{
if
e
.
Remote
Error
!=
nil
{
buffer
.
WriteString
(
"
\n
IRMA server error: "
)
buffer
.
WriteString
(
e
.
Api
Error
.
Error
())
buffer
.
WriteString
(
e
.
Remote
Error
.
Error
())
}
return
buffer
.
String
()
...
...
transport.go
View file @
cd6a1f63
...
...
@@ -128,18 +128,18 @@ func (transport *HTTPTransport) jsonRequest(url string, method string, result in
body
,
err
:=
ioutil
.
ReadAll
(
res
.
Body
)
if
err
!=
nil
{
return
&
SessionError
{
ErrorType
:
ErrorServerResponse
,
Err
:
err
,
Status
:
res
.
StatusCode
,
StatusMessage
:
res
.
Status
}
return
&
SessionError
{
ErrorType
:
ErrorServerResponse
,
Err
:
err
,
Remote
Status
:
res
.
StatusCode
}
}
if
res
.
StatusCode
!=
200
{
apierr
:=
&
Api
Error
{}
apierr
:=
&
Remote
Error
{}
err
=
json
.
Unmarshal
(
body
,
apierr
)
if
err
!=
nil
||
apierr
.
ErrorName
==
""
{
// Not an ApiErrorMessage
return
&
SessionError
{
ErrorType
:
ErrorServerResponse
,
Status
:
res
.
StatusCode
,
StatusMessage
:
res
.
Status
}
return
&
SessionError
{
ErrorType
:
ErrorServerResponse
,
Remote
Status
:
res
.
StatusCode
}
}
if
verbose
{
fmt
.
Printf
(
"ERROR: %+v
\n
"
,
apierr
)
}
return
&
SessionError
{
ErrorType
:
ErrorApi
,
Status
:
res
.
StatusCode
,
Api
Error
:
apierr
,
StatusMessage
:
res
.
Status
}
return
&
SessionError
{
ErrorType
:
ErrorApi
,
Remote
Status
:
res
.
StatusCode
,
Remote
Error
:
apierr
}
}
if
verbose
{
...
...
@@ -150,7 +150,7 @@ func (transport *HTTPTransport) jsonRequest(url string, method string, result in
}
else
{
err
=
json
.
Unmarshal
(
body
,
result
)
if
err
!=
nil
{
return
&
SessionError
{
ErrorType
:
ErrorServerResponse
,
Err
:
err
,
Status
:
res
.
StatusCode
,
StatusMessage
:
res
.
Status
}
return
&
SessionError
{
ErrorType
:
ErrorServerResponse
,
Err
:
err
,
Remote
Status
:
res
.
StatusCode
}
}
}
...
...
@@ -164,11 +164,11 @@ func (transport *HTTPTransport) GetBytes(url string) ([]byte, error) {
}
if
res
.
StatusCode
!=
200
{
return
nil
,
&
SessionError
{
ErrorType
:
ErrorServerResponse
,
Status
:
res
.
StatusCode
}
return
nil
,
&
SessionError
{
ErrorType
:
ErrorServerResponse
,
Remote
Status
:
res
.
StatusCode
}
}
b
,
err
:=
ioutil
.
ReadAll
(
res
.
Body
)
if
err
!=
nil
{
return
nil
,
&
SessionError
{
ErrorType
:
ErrorServerResponse
,
Err
:
err
,
Status
:
res
.
StatusCode
,
StatusMessage
:
res
.
Status
}
return
nil
,
&
SessionError
{
ErrorType
:
ErrorServerResponse
,
Err
:
err
,
Remote
Status
:
res
.
StatusCode
}
}
return
b
,
nil
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment