Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTTP status code within exception #20

Closed
shorbachuk opened this issue Sep 8, 2018 · 15 comments
Closed

HTTP status code within exception #20

shorbachuk opened this issue Sep 8, 2018 · 15 comments

Comments

@shorbachuk
Copy link

I am using this library, works great for mapping argument exceptions etc.

I have another exception type where I am calling another API. The HTTP status code is within a property in that exception. Is there or can there be a way to handle for this?

@josephwoodward
Copy link
Owner

At the moment there isn't, but I'd be open to adding an overload to ReturnStatusCode(...)along the lines of:

ReturnStatusCode(Func<Exception, HttpStatusCode>)

@shorbachuk
Copy link
Author

Cool, should I work on a PR or is this something you would like to take?

@josephwoodward
Copy link
Owner

I'm currently doing some work on the API so I can do it as a part of that 👍

@shorbachuk
Copy link
Author

Any idea when to expect this enhancement?

@josephwoodward
Copy link
Owner

Just finishing off the last few bits (I'm working on a major release) so it should be done in the next few days.

@josephwoodward
Copy link
Owner

josephwoodward commented Sep 18, 2018

Thanks for your patience @shorbachuk,

I've now released a beta package which includes this functionality (it's included within a major version bump I was working on which includes some breaking changes, but they're just method renames). If you'd like to give it a try I'd love to hear how you get on with it.

The new version can be found here https://www.nuget.org/packages/GlobalExceptionHandler/4.0.0-beta1 and the release notes here.

@shorbachuk
Copy link
Author

shorbachuk commented Sep 19, 2018

I tried the beta. Agree with all the renames, they make a lot more sense.

I had to do:

x.Map<HttpStatusCodeException>().ToStatusCode(ex => (int)((HttpStatusCodeException)ex).StatusCode);

which is maybe not as clean as I would like, but for sure solves my problem. Thank you

@josephwoodward
Copy link
Owner

josephwoodward commented Sep 19, 2018

I'd love to be able to pass the generic type passed in at Map<T> all the way down to .ToStatusCode(Func<T, int> x) but unfortunately my GenericFu isn't up to scratch. I'd definitely welcome a PR if you can see some options for making this better?

Another option would also be to add the following overload for those that are using (by choice or necessity) System.Net.HttpStatusCode which would at the very least remove the need to cast the status code to an int?

IHandledFormatters ToStatusCode(Func<Exception, int> statusCodeResolver);
IHandledFormatters ToStatusCode(Func<Exception, HttpStatusCode> statusCodeResolver); // Could add this overload?

The way I see it is it's still in beta so now is the time to make any changes.

@josephwoodward
Copy link
Owner

#25 also adds the overloads to stop people having to cast System.Net.HttpStatusCode to an int, this seams especially helpful in this instance when you can't control the property type within an exception thrown.

@josephwoodward
Copy link
Owner

josephwoodward commented Sep 20, 2018

@shorbachuk New version with these changes has been uploaded to NuGet. Give it a whirl and let me know what you think.

Alt Text

@shorbachuk
Copy link
Author

I just tried it. Its working really great, exactly what I needed.

@josephwoodward
Copy link
Owner

Great, I'll close this off then. Thanks for the feature suggestion(s)!

@shorbachuk
Copy link
Author

Any plans to take this out of beta?

@josephwoodward
Copy link
Owner

josephwoodward commented Oct 12, 2018

@shorbachuk Yeah, can do it this weekend.

@josephwoodward
Copy link
Owner

josephwoodward commented Oct 25, 2018

@shorbachuk Just realised I didn't do this! Will do it today, I promise!

Edit: I presume it's all working for you and you've not run into any issues?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants