diff --git a/CHANGES.rst b/CHANGES.rst index 81caa843..20bf82e1 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -6,6 +6,11 @@ Async PRAW follows `semantic versioning `_. Unreleased ---------- +**Added** + +- :meth:`.delete_mobile_banner` to delete mobile banners. +- :meth:`.upload_mobile_banner` to upload mobile banners. + **Fixed** - An issue with with iterating :class:`.ModNote` when a user has more than a hundred diff --git a/asyncpraw/models/reddit/subreddit.py b/asyncpraw/models/reddit/subreddit.py index a85965cf..e6dee38f 100644 --- a/asyncpraw/models/reddit/subreddit.py +++ b/asyncpraw/models/reddit/subreddit.py @@ -4096,6 +4096,22 @@ async def delete_image(self, name: str): url = API_PATH["delete_sr_image"].format(subreddit=self.subreddit) await self.subreddit._reddit.post(url, data={"img_name": name}) + async def delete_mobile_banner(self): + """Remove the current :class:`.Subreddit` (redesign) mobile banner. + + Succeeds even if there is no mobile banner. + + For example: + + .. code-block:: python + + subreddit = await reddit.subreddit("test") + await subreddit.stylesheet.delete_banner_hover_image() + + """ + data = {"mobileBannerImage": ""} + await self._update_structured_styles(data) + async def delete_mobile_header(self): """Remove the current :class:`.Subreddit` mobile header. @@ -4307,6 +4323,34 @@ async def upload_header(self, image_path: str) -> Dict[str, str]: data={"upload_type": "header"}, image_path=image_path ) + async def upload_mobile_banner(self, image_path: str): + """Upload an image for the :class:`.Subreddit`'s (redesign) mobile banner. + + :param image_path: A path to a JPEG or PNG image. + + For example: + + .. code-block:: python + + subreddit = await reddit.subreddit("test") + await subreddit.stylesheet.upload_mobile_banner("banner.png") + + Fails if the :class:`.Subreddit` does not have an additional image defined. + + :raises: ``prawcore.TooLarge`` if the overall request body is too large. + + :raises: :class:`.RedditAPIException` if there are other issues with the + uploaded image. Unfortunately the exception info might not be very specific, + so try through the website with the same image to see what the problem + actually might be. + + """ + image_type = "mobileBannerImage" + image_url = await self._upload_style_asset( + image_path=image_path, image_type=image_type + ) + await self._update_structured_styles({image_type: image_url}) + async def upload_mobile_header(self, image_path: str) -> Dict[str, str]: """Upload an image to be used as the :class:`.Subreddit`'s mobile header. diff --git a/tests/integration/cassettes/TestSubredditStylesheet.test_delete_mobile_banner.json b/tests/integration/cassettes/TestSubredditStylesheet.test_delete_mobile_banner.json new file mode 100644 index 00000000..fc813c31 --- /dev/null +++ b/tests/integration/cassettes/TestSubredditStylesheet.test_delete_mobile_banner.json @@ -0,0 +1,210 @@ +{ + "interactions": [ + { + "request": { + "body": [ + [ + "grant_type", + "refresh_token" + ], + [ + "refresh_token", + "" + ] + ], + "headers": { + "AUTHORIZATION": [ + "Basic " + ], + "Accept-Encoding": [ + "identity" + ], + "Connection": [ + "close" + ], + "User-Agent": [ + " Async PRAW/7.6.2.dev0 asyncprawcore/2.3.0" + ] + }, + "method": "POST", + "uri": "https://www.reddit.com/api/v1/access_token" + }, + "response": { + "body": { + "string": "{\"access_token\": \"\", \"token_type\": \"bearer\", \"expires_in\": 86400, \"refresh_token\": \"\", \"scope\": \"creddits modnote modcontributors modmail modconfig subscribe structuredstyles vote wikiedit mysubreddits submit modlog modposts modflair save modothers adsconversions read privatemessages report identity livemanage account modtraffic wikiread edit modwiki modself flair history\"}" + }, + "headers": { + "Accept-Ranges": [ + "bytes" + ], + "Cache-Control": [ + "private, max-age=3600" + ], + "Connection": [ + "close" + ], + "Content-Length": [ + "454" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Fri, 09 Dec 2022 00:34:19 GMT" + ], + "NEL": [ + "{\"report_to\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": false, \"success_fraction\": 0.2, \"failure_fraction\": 0.2}" + ], + "Report-To": [ + "{\"group\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting-nel.reddit.com/reports\" }]}, {\"group\": \"w3-reporting\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting.reddit.com/reports\" }]}" + ], + "Server": [ + "snooserv" + ], + "Set-Cookie": [ + "edgebucket=EPDDnGPcPAp4XhPonG; Domain=reddit.com; Max-Age=63071999; Path=/; secure" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubdomains" + ], + "Via": [ + "1.1 varnish" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "x-moose": [ + "majestic" + ], + "x-ratelimit-remaining": [ + "299" + ], + "x-ratelimit-reset": [ + "341" + ], + "x-ratelimit-used": [ + "1" + ] + }, + "status": { + "code": 200, + "message": "OK" + }, + "url": "https://www.reddit.com/api/v1/access_token" + } + }, + { + "request": { + "body": [ + [ + "api_type", + "json" + ], + [ + "mobileBannerImage", + "" + ] + ], + "headers": { + "Accept-Encoding": [ + "identity" + ], + "Authorization": [ + "bearer " + ], + "Cookie": [ + "edgebucket=EPDDnGPcPAp4XhPonG" + ], + "User-Agent": [ + " Async PRAW/7.6.2.dev0 asyncprawcore/2.3.0" + ] + }, + "method": "PATCH", + "uri": "https://oauth.reddit.com/api/v1/structured_styles/?raw_json=1" + }, + "response": { + "body": { + "string": "{}" + }, + "headers": { + "Accept-Ranges": [ + "bytes" + ], + "Cache-Control": [ + "private, s-maxage=0, max-age=0, must-revalidate, no-store" + ], + "Connection": [ + "keep-alive" + ], + "Content-Length": [ + "2" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Fri, 09 Dec 2022 00:34:20 GMT" + ], + "Expires": [ + "-1" + ], + "NEL": [ + "{\"report_to\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": false, \"success_fraction\": 0.2, \"failure_fraction\": 0.2}" + ], + "Report-To": [ + "{\"group\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting-nel.reddit.com/reports\" }]}, {\"group\": \"w3-reporting\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting.reddit.com/reports\" }]}" + ], + "Server": [ + "snooserv" + ], + "Set-Cookie": [ + "redesign_optout=true; Domain=reddit.com; Max-Age=94607999; Path=/; expires=Mon, 08-Dec-2025 00:34:19 GMT; secure", + "session_tracker=fbeimfmkbpieehfrjq.0.1670546059960.Z0FBQUFBQmprb0tNLWhSMjh0RDhyTWZUWS1pcE13TWZ4SWhFR0MtS0FMQm1Gb0djN0NfOUhEYkNHdm1nVlpjMjZRZVA3NngwMjQwTFJqeUpBYUktUFB0WVdrZk8zWm1pS2RmNEJ4djM2NEIyY29EM21GRGNmdWpabzBDajRfY1lyWHRVeFRFcm9MbGY; Domain=reddit.com; Max-Age=7199; Path=/; expires=Fri, 09-Dec-2022 02:34:20 GMT; secure" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubdomains" + ], + "Via": [ + "1.1 varnish" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "x-moose": [ + "majestic" + ], + "x-ratelimit-remaining": [ + "599.0" + ], + "x-ratelimit-reset": [ + "341" + ], + "x-ratelimit-used": [ + "1" + ], + "x-ua-compatible": [ + "IE=edge" + ] + }, + "status": { + "code": 200, + "message": "OK" + }, + "url": "https://oauth.reddit.com/api/v1/structured_styles/?raw_json=1" + } + } + ], + "version": 1 +} diff --git a/tests/integration/cassettes/TestSubredditStylesheet.test_upload_mobile_banner__jpg.json b/tests/integration/cassettes/TestSubredditStylesheet.test_upload_mobile_banner__jpg.json new file mode 100644 index 00000000..0f411810 --- /dev/null +++ b/tests/integration/cassettes/TestSubredditStylesheet.test_upload_mobile_banner__jpg.json @@ -0,0 +1,409 @@ +{ + "interactions": [ + { + "request": { + "body": [ + [ + "grant_type", + "refresh_token" + ], + [ + "refresh_token", + "" + ] + ], + "headers": { + "AUTHORIZATION": [ + "Basic " + ], + "Accept-Encoding": [ + "identity" + ], + "Connection": [ + "close" + ], + "User-Agent": [ + " Async PRAW/7.6.2.dev0 asyncprawcore/2.3.0" + ] + }, + "method": "POST", + "uri": "https://www.reddit.com/api/v1/access_token" + }, + "response": { + "body": { + "string": "{\"access_token\": \"\", \"token_type\": \"bearer\", \"expires_in\": 86400, \"refresh_token\": \"\", \"scope\": \"creddits modnote modcontributors modmail modconfig subscribe structuredstyles vote wikiedit mysubreddits submit modlog modposts modflair save modothers adsconversions read privatemessages report identity livemanage account modtraffic wikiread edit modwiki modself flair history\"}" + }, + "headers": { + "Accept-Ranges": [ + "bytes" + ], + "Cache-Control": [ + "private, max-age=3600" + ], + "Connection": [ + "close" + ], + "Content-Length": [ + "454" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Fri, 09 Dec 2022 00:34:27 GMT" + ], + "NEL": [ + "{\"report_to\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": false, \"success_fraction\": 0.2, \"failure_fraction\": 0.2}" + ], + "Report-To": [ + "{\"group\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting-nel.reddit.com/reports\" }]}, {\"group\": \"w3-reporting\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting.reddit.com/reports\" }]}" + ], + "Server": [ + "snooserv" + ], + "Set-Cookie": [ + "edgebucket=M9jlq80NqzrEGhPwnQ; Domain=reddit.com; Max-Age=63071999; Path=/; secure" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubdomains" + ], + "Via": [ + "1.1 varnish" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "x-moose": [ + "majestic" + ], + "x-ratelimit-remaining": [ + "298" + ], + "x-ratelimit-reset": [ + "333" + ], + "x-ratelimit-used": [ + "2" + ] + }, + "status": { + "code": 200, + "message": "OK" + }, + "url": "https://www.reddit.com/api/v1/access_token" + } + }, + { + "request": { + "body": [ + [ + "api_type", + "json" + ], + [ + "filepath", + "white-square.jpg" + ], + [ + "imagetype", + "mobileBannerImage" + ], + [ + "mimetype", + "image/jpeg" + ] + ], + "headers": { + "Accept-Encoding": [ + "identity" + ], + "Authorization": [ + "bearer " + ], + "Cookie": [ + "edgebucket=M9jlq80NqzrEGhPwnQ" + ], + "User-Agent": [ + " Async PRAW/7.6.2.dev0 asyncprawcore/2.3.0" + ] + }, + "method": "POST", + "uri": "https://oauth.reddit.com/api/v1/style_asset_upload_s3/?raw_json=1" + }, + "response": { + "body": { + "string": "{\"s3UploadLease\": {\"action\": \"//reddit-subreddit-uploaded-media.s3-accelerate.amazonaws.com\", \"fields\": [{\"name\": \"acl\", \"value\": \"public-read\"}, {\"name\": \"key\", \"value\": \"t5_29ey0j/styles/mobileBannerImage_sk36rnlmpr4a1.jpg\"}, {\"name\": \"X-Amz-Credential\", \"value\": \"ASIATB45ILA5YTLOVPXL/20221209/us-east-1/s3/aws4_request\"}, {\"name\": \"X-Amz-Algorithm\", \"value\": \"AWS4-HMAC-SHA256\"}, {\"name\": \"X-Amz-Date\", \"value\": \"20221209T003427Z\"}, {\"name\": \"success_action_status\", \"value\": \"201\"}, {\"name\": \"content-type\", \"value\": \"image/jpeg\"}, {\"name\": \"x-amz-storage-class\", \"value\": \"STANDARD\"}, {\"name\": \"x-amz-meta-ext\", \"value\": \"jpg\"}, {\"name\": \"policy\", \"value\": \"eyJjb25kaXRpb25zIjogW3siYnVja2V0IjogInJlZGRpdC1zdWJyZWRkaXQtdXBsb2FkZWQtbWVkaWEifSwgeyJrZXkiOiAidDVfMjlleTBqL3N0eWxlcy9tb2JpbGVCYW5uZXJJbWFnZV9zazM2cm5sbXByNGExLmpwZyJ9LCB7ImFjbCI6ICJwdWJsaWMtcmVhZCJ9LCB7IngtYW16LXN0b3JhZ2UtY2xhc3MiOiAiU1RBTkRBUkQifSwgeyJ4LWFtei1jcmVkZW50aWFsIjogIkFTSUFUQjQ1SUxBNVlUTE9WUFhMLzIwMjIxMjA5L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSwgeyJ4LWFtei1hbGdvcml0aG0iOiAiQVdTNC1ITUFDLVNIQTI1NiJ9LCB7IngtYW16LWRhdGUiOiAiMjAyMjEyMDlUMDAzNDI3WiJ9LCB7IngtYW16LXNlY3VyaXR5LXRva2VuIjogIkZ3b0daWEl2WVhkekVEb2FEQmpQcTI3MUEvRFBuNEp3UkNLK0FjOTNkYkQ1aWk3WVRHTHFuUXRiNStSK1hLSzkyOGlRRDJoU3M1aUdUUCtoYk5ueUpJZ3JEakVheHF1U0REKy9SNUczVmlqZlBwU2dRakJhS1NvUnQ4bXRFNmR4NkJ6aGwydFk4dVRLSjE0M25RRTV5MXpYbm9wM0FwekYwKzFMa05JSkdBa2dIQmxwOTU3dkRXMUJiakRuNm1KMlRDdDhyTFcrZmpnWFhGUkVITDMzbzFNS0dmbEswdHlPbTVDalB0Q2dsc1ZlRUV6S2docU1HZUlxbWFiR25IclRCNGVQMTdmcXVPRG05anBJQm8yOE9BcE1uMEhublVKaEFVZ291NExLbkFZeUxZNHZnQlRZcXlmUUl6TXZncXNmK0RmYUVBUEpBT1M2OEkyOUJic0NrclZKNGd0eDNTUWtTU09iOHIyMGZRPT0ifSwgeyJzdWNjZXNzX2FjdGlvbl9zdGF0dXMiOiAiMjAxIn0sIFsiY29udGVudC1sZW5ndGgtcmFuZ2UiLCAwLCAxMDQ4NTc2MF0sIHsieC1hbXotbWV0YS1leHQiOiAianBnIn0sIHsiY29udGVudC10eXBlIjogImltYWdlL2pwZWcifV0sICJleHBpcmF0aW9uIjogIjIwMjItMTItMDlUMDA6MzU6MjdaIn0=\"}, {\"name\": \"X-Amz-Signature\", \"value\": \"5cb813061d3df6271ad62a1c89a995a3451717ac2ebd3366fe37174e3784b252\"}, {\"name\": \"x-amz-security-token\", \"value\": \"FwoGZXIvYXdzEDoaDBjPq271A/DPn4JwRCK+Ac93dbD5ii7YTGLqnQtb5+R+XKK928iQD2hSs5iGTP+hbNnyJIgrDjEaxquSDD+/R5G3VijfPpSgQjBaKSoRt8mtE6dx6Bzhl2tY8uTKJ143nQE5y1zXnop3ApzF0+1LkNIJGAkgHBlp957vDW1BbjDn6mJ2TCt8rLW+fjgXXFREHL33o1MKGflK0tyOm5CjPtCglsVeEEzKghqMGeIqmabGnHrTB4eP17fquODm9jpIBo28OApMn0HnnUJhAUgou4LKnAYyLY4vgBTYqyfQIzMvgqsf+DfaEAPJAOS68I29BbsCkrVJ4gtx3SQkSSOb8r20fQ==\"}]}, \"websocketUrl\": \"wss://ws-07381166f904475a7.wss.redditmedia.com/structured-styles/t5_29ey0j-?m=AQAA64SSYydSTr5q97U0X0lstjJc7ADt7-mc_1Bg_HGpAB-cHQoe\"}" + }, + "headers": { + "Accept-Ranges": [ + "bytes" + ], + "Cache-Control": [ + "private, s-maxage=0, max-age=0, must-revalidate, no-store" + ], + "Connection": [ + "keep-alive" + ], + "Content-Length": [ + "2565" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Fri, 09 Dec 2022 00:34:27 GMT" + ], + "Expires": [ + "-1" + ], + "NEL": [ + "{\"report_to\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": false, \"success_fraction\": 0.2, \"failure_fraction\": 0.2}" + ], + "Report-To": [ + "{\"group\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting-nel.reddit.com/reports\" }]}, {\"group\": \"w3-reporting\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting.reddit.com/reports\" }]}" + ], + "Server": [ + "snooserv" + ], + "Set-Cookie": [ + "redesign_optout=true; Domain=reddit.com; Max-Age=94607999; Path=/; expires=Mon, 08-Dec-2025 00:34:27 GMT; secure", + "session_tracker=liqljqahahbglbicdp.0.1670546067934.Z0FBQUFBQmprb0tUeEs5LXQyZmItR0dMSGwzcTFPZ19CSUhBN2E1T1JmbTh2bmRnMkJ6cnZGNTFxZmJhVDBBWDNJOEJaZDhXOHFMd2wzTTZEUVZIZ203d011LTJZN0F0S19wMGtDRkdQOWhiMThSRk5jTHVCZVZFbzdIenhQQlFTX0EwRkstYmJ6bWo; Domain=reddit.com; Max-Age=7199; Path=/; expires=Fri, 09-Dec-2022 02:34:27 GMT; secure" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubdomains" + ], + "Vary": [ + "accept-encoding" + ], + "Via": [ + "1.1 varnish" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "x-moose": [ + "majestic" + ], + "x-ratelimit-remaining": [ + "598.0" + ], + "x-ratelimit-reset": [ + "333" + ], + "x-ratelimit-used": [ + "2" + ], + "x-ua-compatible": [ + "IE=edge" + ] + }, + "status": { + "code": 200, + "message": "OK" + }, + "url": "https://oauth.reddit.com/api/v1/style_asset_upload_s3/?raw_json=1" + } + }, + { + "request": { + "body": { + "X-Amz-Algorithm": "AWS4-HMAC-SHA256", + "X-Amz-Credential": "ASIATB45ILA5YTLOVPXL/20221209/us-east-1/s3/aws4_request", + "X-Amz-Date": "20221209T003427Z", + "X-Amz-Signature": "5cb813061d3df6271ad62a1c89a995a3451717ac2ebd3366fe37174e3784b252", + "acl": "public-read", + "content-type": "image/jpeg", + "file": "\ufffd\ufffd\ufffd\ufffd\u0000\u0010JFIF\u0000\u0001\u0001\u0001\u0000H\u0000H\u0000\u0000\ufffd\ufffd\u0000C\u0000\u0006\u0004\u0005\u0006\u0005\u0004\u0006\u0006\u0005\u0006\u0007\u0007\u0006\b\n\u0010\n\n\t\t\n\u0014\u000e\u000f\f\u0010\u0017\u0014\u0018\u0018\u0017\u0014\u0016\u0016\u001a\u001d%\u001f\u001a\u001b#\u001c\u0016\u0016 , #&')*)\u0019\u001f-0-(0%()(\ufffd\ufffd\u0000\u000b\b\u0001,\u0001,\u0001\u0001\u0011\u0000\ufffd\ufffd\u0000\u0015\u0000\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\b\ufffd\ufffd\u0000\u0014\u0010\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ufffd\ufffd\u0000\b\u0001\u0001\u0000\u0000?\u0000\ufffd@\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u007f\ufffd\ufffd", + "key": "t5_29ey0j/styles/mobileBannerImage_sk36rnlmpr4a1.jpg", + "policy": "eyJjb25kaXRpb25zIjogW3siYnVja2V0IjogInJlZGRpdC1zdWJyZWRkaXQtdXBsb2FkZWQtbWVkaWEifSwgeyJrZXkiOiAidDVfMjlleTBqL3N0eWxlcy9tb2JpbGVCYW5uZXJJbWFnZV9zazM2cm5sbXByNGExLmpwZyJ9LCB7ImFjbCI6ICJwdWJsaWMtcmVhZCJ9LCB7IngtYW16LXN0b3JhZ2UtY2xhc3MiOiAiU1RBTkRBUkQifSwgeyJ4LWFtei1jcmVkZW50aWFsIjogIkFTSUFUQjQ1SUxBNVlUTE9WUFhMLzIwMjIxMjA5L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSwgeyJ4LWFtei1hbGdvcml0aG0iOiAiQVdTNC1ITUFDLVNIQTI1NiJ9LCB7IngtYW16LWRhdGUiOiAiMjAyMjEyMDlUMDAzNDI3WiJ9LCB7IngtYW16LXNlY3VyaXR5LXRva2VuIjogIkZ3b0daWEl2WVhkekVEb2FEQmpQcTI3MUEvRFBuNEp3UkNLK0FjOTNkYkQ1aWk3WVRHTHFuUXRiNStSK1hLSzkyOGlRRDJoU3M1aUdUUCtoYk5ueUpJZ3JEakVheHF1U0REKy9SNUczVmlqZlBwU2dRakJhS1NvUnQ4bXRFNmR4NkJ6aGwydFk4dVRLSjE0M25RRTV5MXpYbm9wM0FwekYwKzFMa05JSkdBa2dIQmxwOTU3dkRXMUJiakRuNm1KMlRDdDhyTFcrZmpnWFhGUkVITDMzbzFNS0dmbEswdHlPbTVDalB0Q2dsc1ZlRUV6S2docU1HZUlxbWFiR25IclRCNGVQMTdmcXVPRG05anBJQm8yOE9BcE1uMEhublVKaEFVZ291NExLbkFZeUxZNHZnQlRZcXlmUUl6TXZncXNmK0RmYUVBUEpBT1M2OEkyOUJic0NrclZKNGd0eDNTUWtTU09iOHIyMGZRPT0ifSwgeyJzdWNjZXNzX2FjdGlvbl9zdGF0dXMiOiAiMjAxIn0sIFsiY29udGVudC1sZW5ndGgtcmFuZ2UiLCAwLCAxMDQ4NTc2MF0sIHsieC1hbXotbWV0YS1leHQiOiAianBnIn0sIHsiY29udGVudC10eXBlIjogImltYWdlL2pwZWcifV0sICJleHBpcmF0aW9uIjogIjIwMjItMTItMDlUMDA6MzU6MjdaIn0=", + "success_action_status": "201", + "x-amz-meta-ext": "jpg", + "x-amz-security-token": "FwoGZXIvYXdzEDoaDBjPq271A/DPn4JwRCK+Ac93dbD5ii7YTGLqnQtb5+R+XKK928iQD2hSs5iGTP+hbNnyJIgrDjEaxquSDD+/R5G3VijfPpSgQjBaKSoRt8mtE6dx6Bzhl2tY8uTKJ143nQE5y1zXnop3ApzF0+1LkNIJGAkgHBlp957vDW1BbjDn6mJ2TCt8rLW+fjgXXFREHL33o1MKGflK0tyOm5CjPtCglsVeEEzKghqMGeIqmabGnHrTB4eP17fquODm9jpIBo28OApMn0HnnUJhAUgou4LKnAYyLY4vgBTYqyfQIzMvgqsf+DfaEAPJAOS68I29BbsCkrVJ4gtx3SQkSSOb8r20fQ==", + "x-amz-storage-class": "STANDARD" + }, + "headers": { + "Accept-Encoding": [ + "identity" + ], + "User-Agent": [ + " Async PRAW/7.6.2.dev0 asyncprawcore/2.3.0" + ] + }, + "method": "POST", + "uri": "https://reddit-subreddit-uploaded-media.s3-accelerate.amazonaws.com" + }, + "response": { + "body": { + "string": "\nhttps://reddit-subreddit-uploaded-media.s3-accelerate.amazonaws.com/t5_29ey0j%2Fstyles%2FmobileBannerImage_sk36rnlmpr4a1.jpgreddit-subreddit-uploaded-mediat5_29ey0j/styles/mobileBannerImage_sk36rnlmpr4a1.jpg\"2b9b411d68afa1c4e752386137523883\"" + }, + "headers": { + "Connection": [ + "keep-alive" + ], + "Content-Length": [ + "371" + ], + "Content-Type": [ + "application/xml" + ], + "Date": [ + "Fri, 09 Dec 2022 00:34:29 GMT" + ], + "Etag": [ + "\"2b9b411d68afa1c4e752386137523883\"" + ], + "Location": [ + "https://reddit-subreddit-uploaded-media.s3-accelerate.amazonaws.com/t5_29ey0j%2Fstyles%2FmobileBannerImage_sk36rnlmpr4a1.jpg" + ], + "Server": [ + "AmazonS3" + ], + "Via": [ + "1.1 5257b3c7acd3727a389946b312557ff2.cloudfront.net (CloudFront)" + ], + "X-Amz-Cf-Id": [ + "XZM-MZA_qj-adTWWOLgQ2qKRMlUb2U2-v3Jp4Dgo1slr_RXHqN71gQ==" + ], + "X-Amz-Cf-Pop": [ + "DEN52-P2" + ], + "X-Cache": [ + "Miss from cloudfront" + ], + "x-amz-expiration": [ + "expiry-date=\"Sun, 11 Dec 2022 00:00:00 GMT\", rule-id=\"delete-after-1-day\"" + ], + "x-amz-id-2": [ + "mlq5OSDryBALQXdVGGLhvY21jgCBDa1b5zvwgl44zlmX6FfjzLAGsb6g9rbVuvSsG3pKfjb1W3I=" + ], + "x-amz-request-id": [ + "PJQFFT7NT8QFNH88" + ] + }, + "status": { + "code": 201, + "message": "Created" + }, + "url": "https://reddit-subreddit-uploaded-media.s3-accelerate.amazonaws.com" + } + }, + { + "request": { + "body": [ + [ + "api_type", + "json" + ], + [ + "mobileBannerImage", + "https://reddit-subreddit-uploaded-media.s3-accelerate.amazonaws.com/t5_29ey0j/styles/mobileBannerImage_sk36rnlmpr4a1.jpg" + ] + ], + "headers": { + "Accept-Encoding": [ + "identity" + ], + "Authorization": [ + "bearer " + ], + "Cookie": [ + "edgebucket=M9jlq80NqzrEGhPwnQ; redesign_optout=true; session_tracker=liqljqahahbglbicdp.0.1670546067934.Z0FBQUFBQmprb0tUeEs5LXQyZmItR0dMSGwzcTFPZ19CSUhBN2E1T1JmbTh2bmRnMkJ6cnZGNTFxZmJhVDBBWDNJOEJaZDhXOHFMd2wzTTZEUVZIZ203d011LTJZN0F0S19wMGtDRkdQOWhiMThSRk5jTHVCZVZFbzdIenhQQlFTX0EwRkstYmJ6bWo" + ], + "User-Agent": [ + " Async PRAW/7.6.2.dev0 asyncprawcore/2.3.0" + ] + }, + "method": "PATCH", + "uri": "https://oauth.reddit.com/api/v1/structured_styles/?raw_json=1" + }, + "response": { + "body": { + "string": "{\"websocketUrl\": \"wss://ws-087584d04c2c0f5cc.wss.redditmedia.com/structured-styles/t5_29ey0j-?m=AQAA7ISSYza79z586TSqYR_FBJXp9wAfAboaTe6kyCRIvLAjpEjz\"}" + }, + "headers": { + "Accept-Ranges": [ + "bytes" + ], + "Cache-Control": [ + "private, s-maxage=0, max-age=0, must-revalidate, no-store" + ], + "Connection": [ + "keep-alive" + ], + "Content-Length": [ + "163" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Fri, 09 Dec 2022 00:34:28 GMT" + ], + "Expires": [ + "-1" + ], + "NEL": [ + "{\"report_to\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": false, \"success_fraction\": 0.2, \"failure_fraction\": 0.2}" + ], + "Report-To": [ + "{\"group\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting-nel.reddit.com/reports\" }]}, {\"group\": \"w3-reporting\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting.reddit.com/reports\" }]}" + ], + "Server": [ + "snooserv" + ], + "Set-Cookie": [ + "session_tracker=liqljqahahbglbicdp.0.1670546068472.Z0FBQUFBQmprb0tVNkNvOWs3UUQ1VWVZN0pCVzZCMklBc1pRSC1iUThYb0FDdXdpM3hJVFg4QUtSbkI1Z29VQy1DUjFfM3h1TERTZ3pURnZxUF9XNVlyZ3hndjMtN1VTOVFKWmhTekZQVUs3NmswcTlPdEljSU0yUVE5ZTRIdHppWHBMMXlkLVBVY2g; Domain=reddit.com; Max-Age=7199; Path=/; expires=Fri, 09-Dec-2022 02:34:28 GMT; secure" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubdomains" + ], + "Via": [ + "1.1 varnish" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "x-moose": [ + "majestic" + ], + "x-ratelimit-remaining": [ + "597.0" + ], + "x-ratelimit-reset": [ + "332" + ], + "x-ratelimit-used": [ + "3" + ], + "x-ua-compatible": [ + "IE=edge" + ] + }, + "status": { + "code": 200, + "message": "OK" + }, + "url": "https://oauth.reddit.com/api/v1/structured_styles/?raw_json=1" + } + } + ], + "version": 1 +} diff --git a/tests/integration/cassettes/TestSubredditStylesheet.test_upload_mobile_banner__png.json b/tests/integration/cassettes/TestSubredditStylesheet.test_upload_mobile_banner__png.json new file mode 100644 index 00000000..2a31edc5 --- /dev/null +++ b/tests/integration/cassettes/TestSubredditStylesheet.test_upload_mobile_banner__png.json @@ -0,0 +1,409 @@ +{ + "interactions": [ + { + "request": { + "body": [ + [ + "grant_type", + "refresh_token" + ], + [ + "refresh_token", + "" + ] + ], + "headers": { + "AUTHORIZATION": [ + "Basic " + ], + "Accept-Encoding": [ + "identity" + ], + "Connection": [ + "close" + ], + "User-Agent": [ + " Async PRAW/7.6.2.dev0 asyncprawcore/2.3.0" + ] + }, + "method": "POST", + "uri": "https://www.reddit.com/api/v1/access_token" + }, + "response": { + "body": { + "string": "{\"access_token\": \"\", \"token_type\": \"bearer\", \"expires_in\": 86400, \"refresh_token\": \"\", \"scope\": \"creddits modnote modcontributors modmail modconfig subscribe structuredstyles vote wikiedit mysubreddits submit modlog modposts modflair save modothers adsconversions read privatemessages report identity livemanage account modtraffic wikiread edit modwiki modself flair history\"}" + }, + "headers": { + "Accept-Ranges": [ + "bytes" + ], + "Cache-Control": [ + "private, max-age=3600" + ], + "Connection": [ + "close" + ], + "Content-Length": [ + "454" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Fri, 09 Dec 2022 00:34:42 GMT" + ], + "NEL": [ + "{\"report_to\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": false, \"success_fraction\": 0.2, \"failure_fraction\": 0.2}" + ], + "Report-To": [ + "{\"group\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting-nel.reddit.com/reports\" }]}, {\"group\": \"w3-reporting\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting.reddit.com/reports\" }]}" + ], + "Server": [ + "snooserv" + ], + "Set-Cookie": [ + "edgebucket=176R3OoZ4G3eTt0qa8; Domain=reddit.com; Max-Age=63071999; Path=/; secure" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubdomains" + ], + "Via": [ + "1.1 varnish" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "x-moose": [ + "majestic" + ], + "x-ratelimit-remaining": [ + "297" + ], + "x-ratelimit-reset": [ + "318" + ], + "x-ratelimit-used": [ + "3" + ] + }, + "status": { + "code": 200, + "message": "OK" + }, + "url": "https://www.reddit.com/api/v1/access_token" + } + }, + { + "request": { + "body": [ + [ + "api_type", + "json" + ], + [ + "filepath", + "white-square.png" + ], + [ + "imagetype", + "mobileBannerImage" + ], + [ + "mimetype", + "image/png" + ] + ], + "headers": { + "Accept-Encoding": [ + "identity" + ], + "Authorization": [ + "bearer " + ], + "Cookie": [ + "edgebucket=176R3OoZ4G3eTt0qa8" + ], + "User-Agent": [ + " Async PRAW/7.6.2.dev0 asyncprawcore/2.3.0" + ] + }, + "method": "POST", + "uri": "https://oauth.reddit.com/api/v1/style_asset_upload_s3/?raw_json=1" + }, + "response": { + "body": { + "string": "{\"s3UploadLease\": {\"action\": \"//reddit-subreddit-uploaded-media.s3-accelerate.amazonaws.com\", \"fields\": [{\"name\": \"acl\", \"value\": \"public-read\"}, {\"name\": \"key\", \"value\": \"t5_29ey0j/styles/mobileBannerImage_mv59uj6opr4a1.png\"}, {\"name\": \"X-Amz-Credential\", \"value\": \"ASIATB45ILA572P5GWYM/20221209/us-east-1/s3/aws4_request\"}, {\"name\": \"X-Amz-Algorithm\", \"value\": \"AWS4-HMAC-SHA256\"}, {\"name\": \"X-Amz-Date\", \"value\": \"20221209T003442Z\"}, {\"name\": \"success_action_status\", \"value\": \"201\"}, {\"name\": \"content-type\", \"value\": \"image/png\"}, {\"name\": \"x-amz-storage-class\", \"value\": \"STANDARD\"}, {\"name\": \"x-amz-meta-ext\", \"value\": \"png\"}, {\"name\": \"policy\", \"value\": \"eyJjb25kaXRpb25zIjogW3siYnVja2V0IjogInJlZGRpdC1zdWJyZWRkaXQtdXBsb2FkZWQtbWVkaWEifSwgeyJrZXkiOiAidDVfMjlleTBqL3N0eWxlcy9tb2JpbGVCYW5uZXJJbWFnZV9tdjU5dWo2b3ByNGExLnBuZyJ9LCB7ImFjbCI6ICJwdWJsaWMtcmVhZCJ9LCB7IngtYW16LXN0b3JhZ2UtY2xhc3MiOiAiU1RBTkRBUkQifSwgeyJ4LWFtei1jcmVkZW50aWFsIjogIkFTSUFUQjQ1SUxBNTcyUDVHV1lNLzIwMjIxMjA5L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSwgeyJ4LWFtei1hbGdvcml0aG0iOiAiQVdTNC1ITUFDLVNIQTI1NiJ9LCB7IngtYW16LWRhdGUiOiAiMjAyMjEyMDlUMDAzNDQyWiJ9LCB7IngtYW16LXNlY3VyaXR5LXRva2VuIjogIkZ3b0daWEl2WVhkekVEb2FESU41YWQ0WExiM0dYU2R5blNLL0FSMTVuenZVRTN6dndPYjdRejFTdi94WUhNTjloWEJGUHpOSzcwZWRBM2hGeUMrSGdoQzRZd1hFcXlTVkZoa3NsZGtKT3VyVzlIelE3OXNmQVpUY2NibS9HaDkxUlRXTlhUa2JwZllTS0FoMkNxR3JFaEs4eWZzM014OU9OWkVhREFoU3hZaXA0c2JxU0lCM3RucVJrcWEyNzdTSnI3STF0VnkyQ2FKWk9lRmRscW1YOFV6ZFRPbHZrdlZ2VzU3bk9Hd3ViUngzVGF3bFhjV1UxRGc2UkY4MDZzZzZ4Wmg3NXZ5M0VtNUhWUEdtbDVOV0l2SnRVb2taR21SV3JVK1RLSmFEeXB3R01pMGh1RnNWNnZSSE1Gb0hLWjc0U3pjOEJ0SmxtUmtEeUVlQmRGRnd3Vm9KQjhtSnl5L0RLaTBUZjZUb2JoST0ifSwgeyJzdWNjZXNzX2FjdGlvbl9zdGF0dXMiOiAiMjAxIn0sIFsiY29udGVudC1sZW5ndGgtcmFuZ2UiLCAwLCAxMDQ4NTc2MF0sIHsieC1hbXotbWV0YS1leHQiOiAicG5nIn0sIHsiY29udGVudC10eXBlIjogImltYWdlL3BuZyJ9XSwgImV4cGlyYXRpb24iOiAiMjAyMi0xMi0wOVQwMDozNTo0MloifQ==\"}, {\"name\": \"X-Amz-Signature\", \"value\": \"378a0e76f5b8d453ea8127d134d48d729a01ae708a5a88ccc610381ee371d267\"}, {\"name\": \"x-amz-security-token\", \"value\": \"FwoGZXIvYXdzEDoaDIN5ad4XLb3GXSdynSK/AR15nzvUE3zvwOb7Qz1Sv/xYHMN9hXBFPzNK70edA3hFyC+HghC4YwXEqySVFhksldkJOurW9HzQ79sfAZTccbm/Gh91RTWNXTkbpfYSKAh2CqGrEhK8yfs3Mx9ONZEaDAhSxYip4sbqSIB3tnqRkqa277SJr7I1tVy2CaJZOeFdlqmX8UzdTOlvkvVvW57nOGwubRx3TawlXcWU1Dg6RF806sg6xZh75vy3Em5HVPGml5NWIvJtUokZGmRWrU+TKJaDypwGMi0huFsV6vRHMFoHKZ74Szc8BtJlmRkDyEeBdFFwwVoJB8mJyy/DKi0Tf6TobhI=\"}]}, \"websocketUrl\": \"wss://ws-087584d04c2c0f5cc.wss.redditmedia.com/structured-styles/t5_29ey0j-?m=AQAA-oSSY-jPtpUY9Hx1qj2ZQ-gOroVgse-A8IJI_1HZ07K9f6oS\"}" + }, + "headers": { + "Accept-Ranges": [ + "bytes" + ], + "Cache-Control": [ + "private, s-maxage=0, max-age=0, must-revalidate, no-store" + ], + "Connection": [ + "keep-alive" + ], + "Content-Length": [ + "2564" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Fri, 09 Dec 2022 00:34:42 GMT" + ], + "Expires": [ + "-1" + ], + "NEL": [ + "{\"report_to\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": false, \"success_fraction\": 0.2, \"failure_fraction\": 0.2}" + ], + "Report-To": [ + "{\"group\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting-nel.reddit.com/reports\" }]}, {\"group\": \"w3-reporting\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting.reddit.com/reports\" }]}" + ], + "Server": [ + "snooserv" + ], + "Set-Cookie": [ + "redesign_optout=true; Domain=reddit.com; Max-Age=94607999; Path=/; expires=Mon, 08-Dec-2025 00:34:42 GMT; secure", + "session_tracker=fgkmocpnoeifafcdjd.0.1670546082699.Z0FBQUFBQmprb0tpMmoxSjF0dmJBLU5mRjNMU0FCcUxrSkdHb3dmVUtRR0x6WTlZd2NwWUFtZEF4dlBMd1FtbUZBQ0NuckZEZzJPby1uTmhmSGZNUTNkNlcxdTBJckltclR0NUY2UGo2LU5lQTNhUHcxcWVHb25fWUVNQjNsV3NSMDhoU2t3OXliT1Y; Domain=reddit.com; Max-Age=7199; Path=/; expires=Fri, 09-Dec-2022 02:34:42 GMT; secure" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubdomains" + ], + "Vary": [ + "accept-encoding" + ], + "Via": [ + "1.1 varnish" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "x-moose": [ + "majestic" + ], + "x-ratelimit-remaining": [ + "596.0" + ], + "x-ratelimit-reset": [ + "318" + ], + "x-ratelimit-used": [ + "4" + ], + "x-ua-compatible": [ + "IE=edge" + ] + }, + "status": { + "code": 200, + "message": "OK" + }, + "url": "https://oauth.reddit.com/api/v1/style_asset_upload_s3/?raw_json=1" + } + }, + { + "request": { + "body": { + "X-Amz-Algorithm": "AWS4-HMAC-SHA256", + "X-Amz-Credential": "ASIATB45ILA572P5GWYM/20221209/us-east-1/s3/aws4_request", + "X-Amz-Date": "20221209T003442Z", + "X-Amz-Signature": "378a0e76f5b8d453ea8127d134d48d729a01ae708a5a88ccc610381ee371d267", + "acl": "public-read", + "content-type": "image/png", + "file": "\ufffdPNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0001,\u0000\u0000\u0001,\b\u0000\u0000\u0000\u0000\\\u0016\u0469\u0000\u0000\u0000\tpHYs\u0000\u0000\u000b\u0013\u0000\u0000\u000b\u0013\u0001\u0000\ufffd\ufffd\u0018\u0000\u0000\u0003iIDATx\u0001\ufffd\u04b1\u0011\u0000 \f\u0003\ufffd\ufffd\ufffd;\ufffd\n\ufffd^\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0746\ufffd\u0019X\ufffd\u0005\ufffd`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=\u000bV\u0010\b\ufffdg\ufffd\n\u0002!\ufffd,XA \ufffd\ufffd\u0005+\b\ufffd\u0533`\u0005\ufffd\ufffdz\u0016\ufffd \u0010R\u03c2\u0015\u0004B\ufffdY\ufffd\ufffd@H=+`}D3\u0003W}\ufffd\ufffd\ufffd\u0000\u0000\u0000\u0000IEND\ufffdB`\ufffd", + "key": "t5_29ey0j/styles/mobileBannerImage_mv59uj6opr4a1.png", + "policy": "eyJjb25kaXRpb25zIjogW3siYnVja2V0IjogInJlZGRpdC1zdWJyZWRkaXQtdXBsb2FkZWQtbWVkaWEifSwgeyJrZXkiOiAidDVfMjlleTBqL3N0eWxlcy9tb2JpbGVCYW5uZXJJbWFnZV9tdjU5dWo2b3ByNGExLnBuZyJ9LCB7ImFjbCI6ICJwdWJsaWMtcmVhZCJ9LCB7IngtYW16LXN0b3JhZ2UtY2xhc3MiOiAiU1RBTkRBUkQifSwgeyJ4LWFtei1jcmVkZW50aWFsIjogIkFTSUFUQjQ1SUxBNTcyUDVHV1lNLzIwMjIxMjA5L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSwgeyJ4LWFtei1hbGdvcml0aG0iOiAiQVdTNC1ITUFDLVNIQTI1NiJ9LCB7IngtYW16LWRhdGUiOiAiMjAyMjEyMDlUMDAzNDQyWiJ9LCB7IngtYW16LXNlY3VyaXR5LXRva2VuIjogIkZ3b0daWEl2WVhkekVEb2FESU41YWQ0WExiM0dYU2R5blNLL0FSMTVuenZVRTN6dndPYjdRejFTdi94WUhNTjloWEJGUHpOSzcwZWRBM2hGeUMrSGdoQzRZd1hFcXlTVkZoa3NsZGtKT3VyVzlIelE3OXNmQVpUY2NibS9HaDkxUlRXTlhUa2JwZllTS0FoMkNxR3JFaEs4eWZzM014OU9OWkVhREFoU3hZaXA0c2JxU0lCM3RucVJrcWEyNzdTSnI3STF0VnkyQ2FKWk9lRmRscW1YOFV6ZFRPbHZrdlZ2VzU3bk9Hd3ViUngzVGF3bFhjV1UxRGc2UkY4MDZzZzZ4Wmg3NXZ5M0VtNUhWUEdtbDVOV0l2SnRVb2taR21SV3JVK1RLSmFEeXB3R01pMGh1RnNWNnZSSE1Gb0hLWjc0U3pjOEJ0SmxtUmtEeUVlQmRGRnd3Vm9KQjhtSnl5L0RLaTBUZjZUb2JoST0ifSwgeyJzdWNjZXNzX2FjdGlvbl9zdGF0dXMiOiAiMjAxIn0sIFsiY29udGVudC1sZW5ndGgtcmFuZ2UiLCAwLCAxMDQ4NTc2MF0sIHsieC1hbXotbWV0YS1leHQiOiAicG5nIn0sIHsiY29udGVudC10eXBlIjogImltYWdlL3BuZyJ9XSwgImV4cGlyYXRpb24iOiAiMjAyMi0xMi0wOVQwMDozNTo0MloifQ==", + "success_action_status": "201", + "x-amz-meta-ext": "png", + "x-amz-security-token": "FwoGZXIvYXdzEDoaDIN5ad4XLb3GXSdynSK/AR15nzvUE3zvwOb7Qz1Sv/xYHMN9hXBFPzNK70edA3hFyC+HghC4YwXEqySVFhksldkJOurW9HzQ79sfAZTccbm/Gh91RTWNXTkbpfYSKAh2CqGrEhK8yfs3Mx9ONZEaDAhSxYip4sbqSIB3tnqRkqa277SJr7I1tVy2CaJZOeFdlqmX8UzdTOlvkvVvW57nOGwubRx3TawlXcWU1Dg6RF806sg6xZh75vy3Em5HVPGml5NWIvJtUokZGmRWrU+TKJaDypwGMi0huFsV6vRHMFoHKZ74Szc8BtJlmRkDyEeBdFFwwVoJB8mJyy/DKi0Tf6TobhI=", + "x-amz-storage-class": "STANDARD" + }, + "headers": { + "Accept-Encoding": [ + "identity" + ], + "User-Agent": [ + " Async PRAW/7.6.2.dev0 asyncprawcore/2.3.0" + ] + }, + "method": "POST", + "uri": "https://reddit-subreddit-uploaded-media.s3-accelerate.amazonaws.com" + }, + "response": { + "body": { + "string": "\nhttps://reddit-subreddit-uploaded-media.s3-accelerate.amazonaws.com/t5_29ey0j%2Fstyles%2FmobileBannerImage_mv59uj6opr4a1.pngreddit-subreddit-uploaded-mediat5_29ey0j/styles/mobileBannerImage_mv59uj6opr4a1.png\"bc241eeeac11d31c489f00173935c94f\"" + }, + "headers": { + "Connection": [ + "keep-alive" + ], + "Content-Length": [ + "371" + ], + "Content-Type": [ + "application/xml" + ], + "Date": [ + "Fri, 09 Dec 2022 00:34:43 GMT" + ], + "Etag": [ + "\"bc241eeeac11d31c489f00173935c94f\"" + ], + "Location": [ + "https://reddit-subreddit-uploaded-media.s3-accelerate.amazonaws.com/t5_29ey0j%2Fstyles%2FmobileBannerImage_mv59uj6opr4a1.png" + ], + "Server": [ + "AmazonS3" + ], + "Via": [ + "1.1 a70648d67d4a5a7f7eed7b14595ab4fe.cloudfront.net (CloudFront)" + ], + "X-Amz-Cf-Id": [ + "pLQ2-m33p7MzOLJwljzu8lbvDRxatLuUFT-RTFve7qffnQ-Ig0yYXA==" + ], + "X-Amz-Cf-Pop": [ + "DEN52-P2" + ], + "X-Cache": [ + "Miss from cloudfront" + ], + "x-amz-expiration": [ + "expiry-date=\"Sun, 11 Dec 2022 00:00:00 GMT\", rule-id=\"delete-after-1-day\"" + ], + "x-amz-id-2": [ + "QrgfcCHXnpee5yzanpKxwoqpwrXdb+ilETUytvfosJ9p6MEedwPpoi6bJVGthC+LbRndvG0Sqx0=" + ], + "x-amz-request-id": [ + "T8TEEH348TWV2KZ3" + ] + }, + "status": { + "code": 201, + "message": "Created" + }, + "url": "https://reddit-subreddit-uploaded-media.s3-accelerate.amazonaws.com" + } + }, + { + "request": { + "body": [ + [ + "api_type", + "json" + ], + [ + "mobileBannerImage", + "https://reddit-subreddit-uploaded-media.s3-accelerate.amazonaws.com/t5_29ey0j/styles/mobileBannerImage_mv59uj6opr4a1.png" + ] + ], + "headers": { + "Accept-Encoding": [ + "identity" + ], + "Authorization": [ + "bearer " + ], + "Cookie": [ + "edgebucket=176R3OoZ4G3eTt0qa8; redesign_optout=true; session_tracker=fgkmocpnoeifafcdjd.0.1670546082699.Z0FBQUFBQmprb0tpMmoxSjF0dmJBLU5mRjNMU0FCcUxrSkdHb3dmVUtRR0x6WTlZd2NwWUFtZEF4dlBMd1FtbUZBQ0NuckZEZzJPby1uTmhmSGZNUTNkNlcxdTBJckltclR0NUY2UGo2LU5lQTNhUHcxcWVHb25fWUVNQjNsV3NSMDhoU2t3OXliT1Y" + ], + "User-Agent": [ + " Async PRAW/7.6.2.dev0 asyncprawcore/2.3.0" + ] + }, + "method": "PATCH", + "uri": "https://oauth.reddit.com/api/v1/structured_styles/?raw_json=1" + }, + "response": { + "body": { + "string": "{\"websocketUrl\": \"wss://ws-078822fa467f2f8bb.wss.redditmedia.com/structured-styles/t5_29ey0j-?m=AQAA-4SSYwhcS97ww-_ftAAe6yNG8TRD0snQhtySKLz7Tb7z-UEa\"}" + }, + "headers": { + "Accept-Ranges": [ + "bytes" + ], + "Cache-Control": [ + "private, s-maxage=0, max-age=0, must-revalidate, no-store" + ], + "Connection": [ + "keep-alive" + ], + "Content-Length": [ + "163" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Fri, 09 Dec 2022 00:34:43 GMT" + ], + "Expires": [ + "-1" + ], + "NEL": [ + "{\"report_to\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": false, \"success_fraction\": 0.2, \"failure_fraction\": 0.2}" + ], + "Report-To": [ + "{\"group\": \"w3-reporting-nel\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting-nel.reddit.com/reports\" }]}, {\"group\": \"w3-reporting\", \"max_age\": 14400, \"include_subdomains\": true, \"endpoints\": [{ \"url\": \"https://w3-reporting.reddit.com/reports\" }]}" + ], + "Server": [ + "snooserv" + ], + "Set-Cookie": [ + "session_tracker=fgkmocpnoeifafcdjd.0.1670546082984.Z0FBQUFBQmprb0tqUHllTzUwNzdxMG5remtrdnJLMGprNmV4cWx6aTlGUFZIVmdnYVMyQ2FGQVR5RVROUHBBaHJDRVhVVHQtUUJXWG9QMVBVMjdWbEt3dkxxZVBQbURnTHR6RVI1Q1lCOGNJVHUxN3dpWFh4U3dZSWZwOHFyNXd1N0pIaTZucXBtN3Y; Domain=reddit.com; Max-Age=7199; Path=/; expires=Fri, 09-Dec-2022 02:34:43 GMT; secure" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubdomains" + ], + "Via": [ + "1.1 varnish" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "X-Frame-Options": [ + "SAMEORIGIN" + ], + "X-XSS-Protection": [ + "1; mode=block" + ], + "x-moose": [ + "majestic" + ], + "x-ratelimit-remaining": [ + "595.0" + ], + "x-ratelimit-reset": [ + "318" + ], + "x-ratelimit-used": [ + "5" + ], + "x-ua-compatible": [ + "IE=edge" + ] + }, + "status": { + "code": 200, + "message": "OK" + }, + "url": "https://oauth.reddit.com/api/v1/structured_styles/?raw_json=1" + } + } + ], + "version": 1 +} diff --git a/tests/integration/models/reddit/test_subreddit.py b/tests/integration/models/reddit/test_subreddit.py index 531f20de..974fe66a 100644 --- a/tests/integration/models/reddit/test_subreddit.py +++ b/tests/integration/models/reddit/test_subreddit.py @@ -1752,6 +1752,11 @@ async def test_delete_mobile_header(self, reddit): subreddit = await reddit.subreddit(pytest.placeholders.test_subreddit) await subreddit.stylesheet.delete_mobile_header() + async def test_delete_mobile_banner(self, reddit): + reddit.read_only = False + subreddit = await reddit.subreddit(pytest.placeholders.test_subreddit) + await subreddit.stylesheet.delete_mobile_banner() + async def test_delete_mobile_icon(self, reddit): reddit.read_only = False subreddit = await reddit.subreddit(pytest.placeholders.test_subreddit) @@ -1853,6 +1858,16 @@ async def test_upload_banner_hover_image__png(self, reddit, image_path): image_path("white-square.png") ) + async def test_upload_mobile_banner__jpg(self, reddit, image_path): + reddit.read_only = False + subreddit = await reddit.subreddit(pytest.placeholders.test_subreddit) + await subreddit.stylesheet.upload_mobile_banner(image_path("white-square.jpg")) + + async def test_upload_mobile_banner__png(self, reddit, image_path): + reddit.read_only = False + subreddit = await reddit.subreddit(pytest.placeholders.test_subreddit) + await subreddit.stylesheet.upload_mobile_banner(image_path("white-square.png")) + async def test_upload_header__jpg(self, reddit, image_path): reddit.read_only = False subreddit = await reddit.subreddit(pytest.placeholders.test_subreddit)