{"id":20632757,"url":"https://github.com/acm-uiuc/groot-meme-service","last_synced_at":"2025-04-15T19:04:08.339Z","repository":{"id":142800106,"uuid":"75507337","full_name":"acm-uiuc/groot-meme-service","owner":"acm-uiuc","description":"Me too, thanks","archived":false,"fork":false,"pushed_at":"2017-10-02T19:37:12.000Z","size":77,"stargazers_count":4,"open_issues_count":4,"forks_count":2,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-04-15T19:02:50.506Z","etag":null,"topics":["api","flask","groot","memes"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/acm-uiuc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-12-03T23:52:49.000Z","updated_at":"2018-06-20T18:30:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"43f361f7-d149-4657-9cc9-8ef82f48a8f0","html_url":"https://github.com/acm-uiuc/groot-meme-service","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acm-uiuc%2Fgroot-meme-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acm-uiuc%2Fgroot-meme-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acm-uiuc%2Fgroot-meme-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acm-uiuc%2Fgroot-meme-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/acm-uiuc","download_url":"https://codeload.github.com/acm-uiuc/groot-meme-service/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249135816,"owners_count":21218365,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","flask","groot","memes"],"created_at":"2024-11-16T14:17:18.434Z","updated_at":"2025-04-15T19:04:08.330Z","avatar_url":"https://github.com/acm-uiuc.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# groot-meme-service\n\n[![Build Status](https://travis-ci.org/acm-uiuc/groot-meme-service.svg?branch=master)](https://travis-ci.org/acm-uiuc/groot-meme-service)\n\n\n[![Join the chat at https://acm-uiuc.slack.com/messages/C6XGZD212/](https://img.shields.io/badge/slack-groot-724D71.svg)](https://acm-uiuc.slack.com/messages/C6XGZD212/)\n\n\n\n## Install / Setup\n1. Clone repo:\n\n    ```\n    git clone https://github.com/acm-uiuc/groot-meme-service\n    cd groot-meme-service\n    ```\n\n2. Install dependencies:\n\n    ```\n    pip install -r requirements.txt\n    ```\n\n3. Copy settings template:\n\n    ```\n    cd groot_meme_service\n    cp settings.template.py settings.py\n    ```\n\n4. Add your DB credentials to settings.py.\n\n## Run Application\n```\npython groot_meme_service/app.py\n```\n\nDo `export MEME_DEBUG=True` to run Flask in debug mode, if desired.\n\n## Authorization\n\nFor the purposes of `groot-meme-service` 'admin access' is granted to members of the ACM admin, corporate, and top4 committees, as given by `groot-group-service`.\n\n## Meme Routes\n\n**NOTE:** All routes require a HTTP Header called `Meme-Token` which must be set to a valid user session token.\n\n### Meme Actions\n\n#### GET /memes\n\nReturns paginated memes in given order.\n\n*Params*:\n\n- `author` - Optional. Filter by user who submitted meme.\n- `order` - Optional.\n    - Options: \n        - 'latest' - freshest memes first\n        - 'random' - random order\n        - 'top' - memes sorted by number of votes descending\n        - 'hottest' - memes sorted by number of votes ranked by recency\n        - 'unapproved' - Requires admin access. Returns unapproved memes in ascending order by upload time.\n    - Default: 'latest'\n\n#### POST /memes\n\nRegisters a new meme.\n\n*Params*:\n\n- `url` - Required. Imgur url of the meme image. Must reference a valid [imgur](http://imgur.com) image (not a imgur gallery or album). Duplicate images are not allowed.\n- `title` - Optional. Title of your meme.\n\n#### GET /memes/:meme_id\n\nReturns the requested meme.\n\n### Admin Actions\n\n#### DELETE /memes/:meme_id\n\nRequires admin access. Deletes a meme.\n\n#### PUT /memes/:meme_id/approve\n\nRequires admin access. Approves a meme to be publicly viewable.\n\n### Voting\n\n#### PUT /memes/:meme_id/vote\n\nRegister a vote for the given meme.\nVote type can be any of the following:\n - like\n - laugh\n - sad\n - angry\n - wow\nRequest\n```\n{\n\t\"vote_type\": \"like\"\n}\n```\n\n#### DELETE /memes/:meme_id/vote\n\nRetract a vote for the given meme.\n\n## Contributing\n\nContributions to `groot-meme-service` are welcomed!\n\n1. Fork the repo.\n2. Create a new feature branch.\n3. Add your feature / make your changes.\n4. Install [pep8](https://pypi.python.org/pypi/pep8) and run `pep8 *.py` in the root project directory to lint your changes. Fix any linting errors.\n5. Create a PR.\n6. ???\n7. Profit.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facm-uiuc%2Fgroot-meme-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Facm-uiuc%2Fgroot-meme-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facm-uiuc%2Fgroot-meme-service/lists"}