{"id":24544131,"url":"https://github.com/hacktoolkit/htk-ios-rottentomatoes","last_synced_at":"2025-03-16T08:10:01.269Z","repository":{"id":20787450,"uuid":"24072539","full_name":"hacktoolkit/htk-ios-RottenTomatoes","owner":"hacktoolkit","description":"Basic Rotten Tomatoes client","archived":false,"fork":false,"pushed_at":"2014-09-26T14:08:09.000Z","size":4487,"stargazers_count":4,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-22T20:16:06.376Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hacktoolkit.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}},"created_at":"2014-09-15T20:25:17.000Z","updated_at":"2019-03-16T04:19:14.000Z","dependencies_parsed_at":"2022-08-05T09:15:37.280Z","dependency_job_id":null,"html_url":"https://github.com/hacktoolkit/htk-ios-RottenTomatoes","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/hacktoolkit%2Fhtk-ios-RottenTomatoes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hacktoolkit%2Fhtk-ios-RottenTomatoes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hacktoolkit%2Fhtk-ios-RottenTomatoes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hacktoolkit%2Fhtk-ios-RottenTomatoes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hacktoolkit","download_url":"https://codeload.github.com/hacktoolkit/htk-ios-RottenTomatoes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243841223,"owners_count":20356446,"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":[],"created_at":"2025-01-22T20:16:09.556Z","updated_at":"2025-03-16T08:10:01.248Z","avatar_url":"https://github.com/hacktoolkit.png","language":"Swift","readme":"htk-ios-RottenTomatoes\n======================\n\nThis is a basic Rotten Tomatoes (read-only) client.\n\n[CodePath iOS Bootcamp](http://codepath.com/iosbootcamp) September 2014 - Week 1 Project\n\n## GIF Screen Cap\n\nHere's an animated GIF (made with [LiceCAP](http://www.cockos.com/licecap/)) of what it looks like:\n\n![](https://raw.githubusercontent.com/hacktoolkit/htk-ios-RottenTomatoes/master/rotten_tomatoes_screencap_jontsai_20140916.gif)\n\n## Download and Build Instructions\n\n* Clone the repository\n* Install [CocoaPods](http://cocoapods.org/)\n  * `sudo gem install cocoapods`\n* Install Pods\n  * `pod install`\n* Update/initialize the [hacktoolkit-ios_lib](https://github.com/hacktoolkit/hacktoolkit-ios_lib) submodule (temporary step until CocoaPods supports Swift source files natively)\n  * `git submodule init`\n  * `git submodule update`\n* Set up API keys\n  * Create a `secrets.xcconfig` config file based on `secrets.xcconfig.template`\n  * Obtain an API key from the [Rotten Tomatoes API page](http://developer.rottentomatoes.com/) and add the key to `secrets.xcconfig`\n* Run it!\n\n## Features (User Stories)\n\nTime spent: 15+ hours\n\nCompleted:\n\n* User can view a list of movies from Rotten Tomatoes. Poster images must be loading asynchronously.\n* User can view movie details by tapping on a cell\n* User sees loading state while waiting for movies API. Using [MBProgressHUD](https://github.com/matej/MBProgressHUD). (Other alternatives were considered among 3rd party libraries at [cocoacontrols.com](https://www.cocoacontrols.com/search?utf8=%E2%9C%93\u0026q=hud))\n* User sees error message when there's a networking error. (Without using UIAlertView, because it is crappy). Sorta working, using [TSMessages](https://github.com/toursprung/TSMessages)\n* User can pull to refresh the movie list.\n\nOptional user stories completed:\n\n* All images fade in. Achieved by using `UIView.animateWithDuration(...)`\n* For the large poster, load the low-res image first, switch to high-res when complete. Achieved by using `self.fullPosterImage.setImageWithURL(NSURL(string: movie.originalPosterUrl), placeholderImage: self.movieCellSender!.thumbnailPosterImage.image)`\n* All images should be cached in memory and disk (in order to have images load immediately upon cold start). In progress; have an in-memory dictionary cache of url `String : UIImage` and need to figure out how to do that.\n* Customize the highlight and selection effect of the cell. (Turned off the default)\n* Customize the navigation bar. (Changed text and background colors, opacity)\n* Add a tab bar for Box Office and DVD. Switches between the two using a common ViewController by embedding in Container Views. Couldn't figure out how to change the color of the tab bar.\n* Add a search bar. Filters movies with titles containing the `searchText` substring using case insensitive search and `UISearchBarDelegate`\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhacktoolkit%2Fhtk-ios-rottentomatoes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhacktoolkit%2Fhtk-ios-rottentomatoes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhacktoolkit%2Fhtk-ios-rottentomatoes/lists"}