Uh oh.., certainly it's more flexibility, but I feel that it is not DRY.

Because, that open_url is repeated in a part of set_content and initialize_with_url.
I think that "set_content" method should be separated into HTTP request and static file loading.
And "initialize_with_url" method should be rename open_url, because it is easy to understand.

How you feel?
(I'm sorry even though I wrote the first code, it countered that it is not good code.)