From e64e9f085383a050dce7e084b4b0f2f5367659c7 Mon Sep 17 00:00:00 2001 From: Edward Loveall Date: Sun, 8 Aug 2021 16:37:56 -0400 Subject: [PATCH] Use href from iframe media response Turns out, href exists in the mediaResponse query. I can use that instead of fetching that separately. --- spec/classes/iframe_media_resolver_spec.cr | 27 ---------------------- spec/classes/paragraph_converter_spec.cr | 9 +------- spec/support/fake_medium_client.cr | 9 -------- src/classes/iframe_media_resolver.cr | 13 ----------- src/classes/paragraph_converter.cr | 4 +--- src/clients/medium_client.cr | 9 +------- src/models/media_response.cr | 17 -------------- src/models/post_response.cr | 2 +- 8 files changed, 4 insertions(+), 86 deletions(-) delete mode 100644 spec/classes/iframe_media_resolver_spec.cr delete mode 100644 spec/support/fake_medium_client.cr delete mode 100644 src/classes/iframe_media_resolver.cr delete mode 100644 src/models/media_response.cr diff --git a/spec/classes/iframe_media_resolver_spec.cr b/spec/classes/iframe_media_resolver_spec.cr deleted file mode 100644 index ed167a8..0000000 --- a/spec/classes/iframe_media_resolver_spec.cr +++ /dev/null @@ -1,27 +0,0 @@ -require "../spec_helper" - -include Nodes - -describe IFrameMediaResolver do - around_each do |example| - original_client = IFrameMediaResolver.http_client - IFrameMediaResolver.http_client = FakeMediumClient - example.run - IFrameMediaResolver.http_client = original_client - end - - it "returns a url of the embedded page" do - iframe = PostResponse::IFrame.from_json <<-JSON - { - "mediaResource": { - "id": "d4515fff7ecd02786e75fc8997c94bbf" - } - } - JSON - resolver = IFrameMediaResolver.new(iframe: iframe) - - result = resolver.fetch_href - - result.should eq("https://example.com") - end -end diff --git a/spec/classes/paragraph_converter_spec.cr b/spec/classes/paragraph_converter_spec.cr index 4eda931..45ea604 100644 --- a/spec/classes/paragraph_converter_spec.cr +++ b/spec/classes/paragraph_converter_spec.cr @@ -3,13 +3,6 @@ require "../spec_helper" include Nodes describe ParagraphConverter do - around_each do |example| - original_client = IFrameMediaResolver.http_client - IFrameMediaResolver.http_client = FakeMediumClient - example.run - IFrameMediaResolver.http_client = original_client - end - it "converts a simple structure with no markups" do paragraphs = Array(PostResponse::Paragraph).from_json <<-JSON [ @@ -289,7 +282,7 @@ describe ParagraphConverter do "href": null, "iframe": { "mediaResource": { - "id": "7c6231d165bf9fc1853f259a7b55bd14" + "href": "https://example.com" } }, "layout": null, diff --git a/spec/support/fake_medium_client.cr b/spec/support/fake_medium_client.cr deleted file mode 100644 index 9ae65e2..0000000 --- a/spec/support/fake_medium_client.cr +++ /dev/null @@ -1,9 +0,0 @@ -class FakeMediumClient < MediumClient - def self.media_data(media_id : String) : MediaResponse::Root - MediaResponse::Root.from_json( - <<-JSON - {"payload": {"value": {"href": "https://example.com"}}} - JSON - ) - end -end diff --git a/src/classes/iframe_media_resolver.cr b/src/classes/iframe_media_resolver.cr deleted file mode 100644 index 06d6e61..0000000 --- a/src/classes/iframe_media_resolver.cr +++ /dev/null @@ -1,13 +0,0 @@ -class IFrameMediaResolver - class_property http_client : MediumClient.class = MediumClient - - getter iframe - - def initialize(@iframe : PostResponse::IFrame) - end - - def fetch_href - response = @@http_client.media_data(iframe.mediaResource.id) - response.payload.value.href - end -end diff --git a/src/classes/paragraph_converter.cr b/src/classes/paragraph_converter.cr index 52001f9..8c6d7f9 100644 --- a/src/classes/paragraph_converter.cr +++ b/src/classes/paragraph_converter.cr @@ -21,9 +21,7 @@ class ParagraphConverter when PostResponse::ParagraphType::IFRAME paragraph = paragraphs.shift if iframe = paragraph.iframe - resolver = IFrameMediaResolver.new(iframe: iframe) - href = resolver.fetch_href - node = IFrame.new(href: href) + node = IFrame.new(href: iframe.mediaResource.href) else node = Empty.new end diff --git a/src/clients/medium_client.cr b/src/clients/medium_client.cr index 10d567e..0a7b07d 100644 --- a/src/clients/medium_client.cr +++ b/src/clients/medium_client.cr @@ -7,13 +7,6 @@ class MediumClient PostResponse::Root.from_json(response.body) end - def self.media_data(media_id : String) : MediaResponse::Root - client = HTTP::Client.new("medium.com", tls: true) - response = client.get("/media/#{media_id}", headers: headers) - body = response.body.sub(JSON_HIJACK_STRING, nil) - MediaResponse::Root.from_json(body) - end - private def self.headers : HTTP::Headers HTTP::Headers{ "Accept" => "application/json", @@ -46,7 +39,7 @@ class MediumClient href iframe { mediaResource { - id + href } } metadata { diff --git a/src/models/media_response.cr b/src/models/media_response.cr deleted file mode 100644 index 16d6749..0000000 --- a/src/models/media_response.cr +++ /dev/null @@ -1,17 +0,0 @@ -class MediaResponse - class Base - include JSON::Serializable - end - - class Root < Base - property payload : Payload - end - - class Payload < Base - property value : Value - end - - class Value < Base - property href : String - end -end diff --git a/src/models/post_response.cr b/src/models/post_response.cr index 31bf0ae..d006ebd 100644 --- a/src/models/post_response.cr +++ b/src/models/post_response.cr @@ -78,7 +78,7 @@ class PostResponse end class MediaResource < Base - property id : String + property href : String end class Metadata < Base