{"action":"created","comment":{"url":"https://api.github.com/repos/cuappdev/podcast-ios/pulls/comments/89679100","pull_request_review_id":10221624,"id":89679100,"diff_hunk":"@@ -0,0 +1,254 @@\n+//\n+//  ProfileHeaderView.swift\n+//  Podcast\n+//\n+//  Created by Drew Dunne on 10/17/16.\n+//  Copyright © 2016 Cornell App Development. All rights reserved.\n+//\n+\n+import UIKit\n+\n+struct PHVConstants {\n+    static let height:CGFloat = 286+138+37\n+    static let miniHeight:CGFloat = 85\n+    static let bottomBarDist:CGFloat = 226\n+    static let statusBarHeight:CGFloat = 20\n+}\n+\n+protocol ProfileHeaderViewDelegate {\n+    func followButtonPressed(follow: Bool)\n+    func buttonBarPressed(buttonBarNum: Int)\n+    func collectionViewCellDidSelectItemAtPath(path: IndexPath)\n+}\n+\n+class ProfileHeaderView: UIView, UICollectionViewDelegate {\n+    \n+    let fullHeight:CGFloat = PHVConstants.height\n+    \n+    let statusBarHeight:CGFloat = PHVConstants.statusBarHeight\n+    let bottomBarDist:CGFloat = PHVConstants.bottomBarDist\n+    let bottomBarHeight:CGFloat = 60\n+    let subscriptionsHeight: CGFloat = 138\n+    \n+    var profileArea: UIView!\n+    var usernameLabel: UILabel!\n+    var nameLabel: UILabel!\n+    var profileImage: UIImageView!\n+    var followButton: FollowButton!\n+    \n+    var subsHeader: ProfileSectionHeaderView!\n+    var subscriptions: UICollectionView!\n+    \n+    // Currently: Followers, Following (Used to include subscriptions)\n+    var bottomButton1: UIButton!\n+    var bottomButton2: UIButton!\n+//    var bottomButton3: UIButton!\n+    private var bottomBar: UIView!\n+    let numBottomBarButtons: CGFloat = 2.0\n+    \n+    private var topBar: UIView!\n+    \n+    var user: User? {\n+        didSet {\n+            guard let user = user else { return }\n+//                bottomButton1.setAttributedTitle(formBotBarButtonTitle(\"Subscriptions\", user.subscriptionsCount), for: .normal)\n+            bottomButton2.setAttributedTitle(formBotBarButtonTitle(\"Followers\", user.followersCount), for: .normal)\n+            bottomButton1.setAttributedTitle(formBotBarButtonTitle(\"Following\", user.followingCount), for: .normal)\n+            \n+            profileImage.image = user.image\n+            nameLabel.text = user.name\n+            usernameLabel.text = \"@\"+user.username\n+            followButton.isSelected = user.isFollowing\n+            \n+            if user.isMe {\n+                followButton.alpha = 0\n+            }\n+        }\n+    }\n+    var delegate: ProfileHeaderViewDelegate?\n+    \n+    override init(frame: CGRect) {\n+        super.init(frame: frame)\n+        \n+        self.backgroundColor = UIColor.podcastGrayDark\n+        \n+        topBar = UIView(frame: CGRect(x:0, y:0, width: frame.size.width, height: statusBarHeight))\n+        topBar.backgroundColor = UIColor.podcastWhite\n+        \n+        bottomBar = UIView(frame: CGRect(x:0, y:bottomBarDist, width: frame.size.width, height: bottomBarHeight))\n+        bottomBar.backgroundColor = UIColor.podcastWhiteDark\n+        \n+        profileArea = UIView(frame: CGRect(x: 0, y: statusBarHeight, width: frame.size.width, height: bottomBarDist-statusBarHeight))\n+        profileArea.backgroundColor = .clear;\n+        \n+        profileImage = UIImageView(frame: .zero)\n+        profileImage.layer.masksToBounds = true\n+        profileImage.layer.borderWidth = 2\n+        profileImage.layer.borderColor = UIColor.podcastWhite.cgColor\n+        profileArea.addSubview(profileImage)\n+        \n+        nameLabel = UILabel(frame: CGRect.zero)\n+        nameLabel.font = UIFont.systemFont(ofSize: 16, weight: UIFontWeightSemibold)\n+        nameLabel.textAlignment = .center\n+        nameLabel.textColor = UIColor.podcastWhite\n+        nameLabel.text = \"@\"\n+        nameLabel.numberOfLines = 1\n+        profileArea.addSubview(nameLabel)\n+        \n+        usernameLabel = UILabel(frame: CGRect.zero)\n+        usernameLabel.font = UIFont.systemFont(ofSize: 16)\n+        usernameLabel.textAlignment = .center\n+        usernameLabel.textColor = UIColor.podcastWhite\n+        usernameLabel.text = \"@\"\n+        usernameLabel.numberOfLines = 1\n+        profileArea.addSubview(usernameLabel)\n+        \n+        followButton = FollowButton()\n+        followButton.tintColor = UIColor.podcastWhite\n+        followButton.setTitle(\"Follow\", for: .normal)\n+        followButton.setTitle(\"Unfollow\", for: .selected)\n+        followButton.addTarget(self, action: #selector(ProfileHeaderView.followPressed), for: .touchUpInside)\n+        profileArea.addSubview(followButton)\n+        \n+        bottomButton1 = makeBotBarButton(1)\n+        bottomBar.addSubview(bottomButton1)\n+        \n+        bottomButton2 = makeBotBarButton(2)\n+        bottomBar.addSubview(bottomButton2)\n+        \n+        subsHeader = ProfileSectionHeaderView(frame: CGRect(x: 0, y: bottomBarDist+bottomBarHeight, width: frame.size.width, height: profileSectionHeaderViewHeight))\n+        subsHeader.sectionTitle.text = \"Subscriptions\"\n+        \n+        let layout = UICollectionViewFlowLayout()\n+        layout.scrollDirection = .horizontal\n+        layout.minimumInteritemSpacing = 6\n+        layout.itemSize = CGSize(width: subscriptionsHeight, height: subscriptionsHeight)\n+        subscriptions = UICollectionView(frame: CGRect(x: 0, y: bottomBarDist+bottomBarHeight+profileSectionHeaderViewHeight, width: frame.size.width, height: subscriptionsHeight), collectionViewLayout: layout)\n+        subscriptions.delegate = self\n+        subscriptions.backgroundColor = UIColor.podcastWhite\n+        subscriptions.showsHorizontalScrollIndicator = false\n+        subscriptions.showsVerticalScrollIndicator = false\n+        subscriptions.contentInset = UIEdgeInsets(top: 0, left: 6, bottom: 0, right: 6)\n+        subscriptions.register(SeriesCollectionViewCell.self, forCellWithReuseIdentifier: \"SeriesCell\")\n+        subscriptions.allowsSelection = false\n+        \n+//        bottomButton3 = makeBotBarButton(3)\n+//        bottomBar.addSubview(bottomButton3)\n+        \n+        self.addSubview(bottomBar)\n+        self.addSubview(topBar)\n+        self.addSubview(subsHeader)\n+        self.addSubview(subscriptions)\n+        self.addSubview(profileArea)\n+    }\n+    \n+    let proImgWidth:CGFloat = 60\n+    let proImgY: CGFloat = 28.5\n+    let padding: CGFloat = 12\n+    let labelHeight: CGFloat = 19\n+    let labelSpacing: CGFloat = 2.5\n+    \n+    override func layoutSubviews() {\n+        // Width for bottom bar buttons\n+        let bButtonWidth:CGFloat = self.frame.size.width/numBottomBarButtons\n+        bottomButton1.frame = CGRect(x: 0, y: 0, width: bButtonWidth, height: bottomBarHeight)\n+        bottomButton2.frame = CGRect(x: bButtonWidth, y: 0, width: bButtonWidth, height: bottomBarHeight)\n+//        bottomButton3.frame = CGRect(x: 2*bButtonWidth, y: 0, width: bButtonWidth, height: bottomBarHeight)\n+        \n+        let vertBarPadding: CGFloat = 12\n+        let verticalBar1 = UIView(frame: CGRect(x: bButtonWidth, y: vertBarPadding, width: 1, height: bottomBarHeight-2*vertBarPadding))\n+        verticalBar1.backgroundColor = UIColor.podcastGray\n+//        let verticalBar2 = UIView(frame: CGRect(x: 2*bButtonWidth, y: vertBarPadding, width: 1, height: bottomBarHeight-2*vertBarPadding))\n+//        verticalBar2.backgroundColor = UIColor.podcastGray\n+        bottomBar.addSubview(verticalBar1)\n+//        bottomBar.addSubview(verticalBar2)\n+        \n+        let labelWidth: CGFloat = self.frame.size.width-2*padding\n+        let usernameY = proImgY+proImgWidth+padding+labelHeight+labelSpacing\n+        profileArea.frame = CGRect(x: 0, y: statusBarHeight, width: self.frame.size.width, height: bottomBarDist-statusBarHeight)\n+        profileImage.frame = CGRect(x: (self.frame.size.width-proImgWidth)/2, y: proImgY, width: proImgWidth, height: proImgWidth)\n+        profileImage.layer.cornerRadius = proImgWidth/2.0\n+        nameLabel.frame = CGRect(x: padding, y: proImgY+proImgWidth+padding, width: labelWidth, height: labelHeight)\n+        usernameLabel.frame = CGRect(x: padding, y: usernameY, width: labelWidth, height: labelHeight)\n+        followButton.frame = CGRect(x: (self.frame.size.width-150)/2, y: usernameY+labelHeight+padding, width: 150, height: 29)\n+    }\n+    \n+    required init?(coder aDecoder: NSCoder) {\n+        fatalError(\"init(coder:) has not been implemented\")\n+    }\n+    \n+    func canSeeFollowButton() -> Bool {\n+        if let user = user {\n+            return !user.isMe\n+        }\n+        return true\n+    }\n+    \n+    @objc func animateByYOffset(_ yOffset: CGFloat) {\n+        let usernameY = proImgY+proImgWidth+padding+labelHeight+labelSpacing\n+        print(yOffset)\n+        if yOffset <= 0 {\n+            profileImage.alpha = 1\n+        } else if yOffset >= (proImgY+proImgWidth/2) {\n+            profileImage.alpha = 0\n+        } else {\n+            profileImage.alpha = abs((proImgY+proImgWidth/2-yOffset)/yOffset)\n+        }\n+        if yOffset <= proImgY+proImgWidth+padding {\n+            nameLabel.alpha = 1\n+            usernameLabel.alpha = 1\n+            followButton.alpha = canSeeFollowButton() ? 1 : 0\n+        } else if yOffset >= usernameY+labelHeight {\n+            nameLabel.alpha = 0\n+            usernameLabel.alpha = 0\n+            followButton.alpha = 0\n+        } else {\n+            let a = abs((usernameY+labelHeight-yOffset)/(usernameY+labelHeight-(proImgY+proImgWidth+padding)))\n+            print(a)\n+            nameLabel.alpha = a\n+            usernameLabel.alpha = a\n+            followButton.alpha = canSeeFollowButton() ? a : 0\n+        }\n+    }\n+    \n+    private func makeBotBarButton(_ tag: Int) -> UIButton {\n+        let button = UIButton(frame: CGRect.zero)\n+        button.tag = tag\n+        button.titleLabel?.textAlignment = .center\n+        button.titleLabel?.numberOfLines = 2\n+        button.addTarget(self, action: #selector(ProfileHeaderView.buttonBarPressed(sender:)), for: .touchUpInside)\n+        return button\n+    }\n+    \n+    private func formBotBarButtonTitle(_ text: String, _ num: Int) -> NSMutableAttributedString {\n+        let paragraphStyle = NSMutableParagraphStyle()\n+        paragraphStyle.lineSpacing = 2.5\n+        paragraphStyle.alignment = .center\n+        \n+        let numText = String(format: \"%d\", num)\n+        let title = NSMutableAttributedString(string: text+\"\\n\"+numText)\n+        title.addAttributes([NSFontAttributeName: UIFont.systemFont(ofSize: 12), NSForegroundColorAttributeName: UIColor.podcastGrayLight], range: NSRange(location:0, length: text.characters.count))\n+        title.addAttributes([NSFontAttributeName: UIFont.boldSystemFont(ofSize: 14),NSForegroundColorAttributeName: UIColor.podcastBlack], range: NSRange(location:text.characters.count+1, length: numText.characters.count))\n+        title.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, title.length))\n+        return title\n+    }\n+    \n+    @objc private func followPressed() {\n+        followButton.isSelected = !followButton.isSelected\n+        guard let delegate = delegate else { return }\n+        delegate.followButtonPressed(follow: followButton.isSelected)\n+    }\n+    \n+    @objc private func buttonBarPressed(sender: UIButton) {\n+        guard let delegate = delegate else { return }\n+        delegate.buttonBarPressed(buttonBarNum: sender.tag)\n+    }\n+    \n+    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {\n+        print(\"Series pressed...\")","path":"Podcast/ProfileHeaderView.swift","position":248,"original_position":248,"commit_id":"184a15e2c1260cae2e69b9ffdeea31a6201cd7df","original_commit_id":"184a15e2c1260cae2e69b9ffdeea31a6201cd7df","user":{"login":"acheng96","id":8130751,"avatar_url":"https://avatars.githubusercontent.com/u/8130751?v=3","gravatar_id":"","url":"https://api.github.com/users/acheng96","html_url":"https://github.com/acheng96","followers_url":"https://api.github.com/users/acheng96/followers","following_url":"https://api.github.com/users/acheng96/following{/other_user}","gists_url":"https://api.github.com/users/acheng96/gists{/gist_id}","starred_url":"https://api.github.com/users/acheng96/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acheng96/subscriptions","organizations_url":"https://api.github.com/users/acheng96/orgs","repos_url":"https://api.github.com/users/acheng96/repos","events_url":"https://api.github.com/users/acheng96/events{/privacy}","received_events_url":"https://api.github.com/users/acheng96/received_events","type":"User","site_admin":false},"body":"no print","created_at":"2016-11-26T22:17:37Z","updated_at":"2016-11-26T22:17:37Z","html_url":"https://github.com/cuappdev/podcast-ios/pull/18#discussion_r89679100","pull_request_url":"https://api.github.com/repos/cuappdev/podcast-ios/pulls/18","_links":{"self":{"href":"https://api.github.com/repos/cuappdev/podcast-ios/pulls/comments/89679100"},"html":{"href":"https://github.com/cuappdev/podcast-ios/pull/18#discussion_r89679100"},"pull_request":{"href":"https://api.github.com/repos/cuappdev/podcast-ios/pulls/18"}}},"pull_request":{"url":"https://api.github.com/repos/cuappdev/podcast-ios/pulls/18","id":94529460,"html_url":"https://github.com/cuappdev/podcast-ios/pull/18","diff_url":"https://github.com/cuappdev/podcast-ios/pull/18.diff","patch_url":"https://github.com/cuappdev/podcast-ios/pull/18.patch","issue_url":"https://api.github.com/repos/cuappdev/podcast-ios/issues/18","number":18,"state":"open","locked":false,"title":"Profile View","user":{"login":"drewsdunne","id":1222887,"avatar_url":"https://avatars.githubusercontent.com/u/1222887?v=3","gravatar_id":"","url":"https://api.github.com/users/drewsdunne","html_url":"https://github.com/drewsdunne","followers_url":"https://api.github.com/users/drewsdunne/followers","following_url":"https://api.github.com/users/drewsdunne/following{/other_user}","gists_url":"https://api.github.com/users/drewsdunne/gists{/gist_id}","starred_url":"https://api.github.com/users/drewsdunne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drewsdunne/subscriptions","organizations_url":"https://api.github.com/users/drewsdunne/orgs","repos_url":"https://api.github.com/users/drewsdunne/repos","events_url":"https://api.github.com/users/drewsdunne/events{/privacy}","received_events_url":"https://api.github.com/users/drewsdunne/received_events","type":"User","site_admin":false},"body":"Created the profile view (for tab bar and as a profile detail). Still needs backend integration and once we figure out how our local data is stored will need an update. Design is apparently still working designs so it will need some color updates. Finally the Favorites tableviewcell has not been finalized and will need to be swapped out from the current DiscoverTableViewCell. ","created_at":"2016-11-20T19:41:41Z","updated_at":"2016-11-26T22:17:37Z","closed_at":null,"merged_at":null,"merge_commit_sha":"596d62d2f4911317faf267cfd3ff484a045aa9c9","assignee":{"login":"acheng96","id":8130751,"avatar_url":"https://avatars.githubusercontent.com/u/8130751?v=3","gravatar_id":"","url":"https://api.github.com/users/acheng96","html_url":"https://github.com/acheng96","followers_url":"https://api.github.com/users/acheng96/followers","following_url":"https://api.github.com/users/acheng96/following{/other_user}","gists_url":"https://api.github.com/users/acheng96/gists{/gist_id}","starred_url":"https://api.github.com/users/acheng96/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acheng96/subscriptions","organizations_url":"https://api.github.com/users/acheng96/orgs","repos_url":"https://api.github.com/users/acheng96/repos","events_url":"https://api.github.com/users/acheng96/events{/privacy}","received_events_url":"https://api.github.com/users/acheng96/received_events","type":"User","site_admin":false},"assignees":[{"login":"acheng96","id":8130751,"avatar_url":"https://avatars.githubusercontent.com/u/8130751?v=3","gravatar_id":"","url":"https://api.github.com/users/acheng96","html_url":"https://github.com/acheng96","followers_url":"https://api.github.com/users/acheng96/followers","following_url":"https://api.github.com/users/acheng96/following{/other_user}","gists_url":"https://api.github.com/users/acheng96/gists{/gist_id}","starred_url":"https://api.github.com/users/acheng96/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acheng96/subscriptions","organizations_url":"https://api.github.com/users/acheng96/orgs","repos_url":"https://api.github.com/users/acheng96/repos","events_url":"https://api.github.com/users/acheng96/events{/privacy}","received_events_url":"https://api.github.com/users/acheng96/received_events","type":"User","site_admin":false},{"login":"mrkbryn","id":8836414,"avatar_url":"https://avatars.githubusercontent.com/u/8836414?v=3","gravatar_id":"","url":"https://api.github.com/users/mrkbryn","html_url":"https://github.com/mrkbryn","followers_url":"https://api.github.com/users/mrkbryn/followers","following_url":"https://api.github.com/users/mrkbryn/following{/other_user}","gists_url":"https://api.github.com/users/mrkbryn/gists{/gist_id}","starred_url":"https://api.github.com/users/mrkbryn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrkbryn/subscriptions","organizations_url":"https://api.github.com/users/mrkbryn/orgs","repos_url":"https://api.github.com/users/mrkbryn/repos","events_url":"https://api.github.com/users/mrkbryn/events{/privacy}","received_events_url":"https://api.github.com/users/mrkbryn/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/cuappdev/podcast-ios/pulls/18/commits","review_comments_url":"https://api.github.com/repos/cuappdev/podcast-ios/pulls/18/comments","review_comment_url":"https://api.github.com/repos/cuappdev/podcast-ios/pulls/comments{/number}","comments_url":"https://api.github.com/repos/cuappdev/podcast-ios/issues/18/comments","statuses_url":"https://api.github.com/repos/cuappdev/podcast-ios/statuses/184a15e2c1260cae2e69b9ffdeea31a6201cd7df","head":{"label":"cuappdev:drew/profile","ref":"drew/profile","sha":"184a15e2c1260cae2e69b9ffdeea31a6201cd7df","user":{"login":"cuappdev","id":17533691,"avatar_url":"https://avatars.githubusercontent.com/u/17533691?v=3","gravatar_id":"","url":"https://api.github.com/users/cuappdev","html_url":"https://github.com/cuappdev","followers_url":"https://api.github.com/users/cuappdev/followers","following_url":"https://api.github.com/users/cuappdev/following{/other_user}","gists_url":"https://api.github.com/users/cuappdev/gists{/gist_id}","starred_url":"https://api.github.com/users/cuappdev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cuappdev/subscriptions","organizations_url":"https://api.github.com/users/cuappdev/orgs","repos_url":"https://api.github.com/users/cuappdev/repos","events_url":"https://api.github.com/users/cuappdev/events{/privacy}","received_events_url":"https://api.github.com/users/cuappdev/received_events","type":"Organization","site_admin":false},"repo":{"id":67357239,"name":"podcast-ios","full_name":"cuappdev/podcast-ios","owner":{"login":"cuappdev","id":17533691,"avatar_url":"https://avatars.githubusercontent.com/u/17533691?v=3","gravatar_id":"","url":"https://api.github.com/users/cuappdev","html_url":"https://github.com/cuappdev","followers_url":"https://api.github.com/users/cuappdev/followers","following_url":"https://api.github.com/users/cuappdev/following{/other_user}","gists_url":"https://api.github.com/users/cuappdev/gists{/gist_id}","starred_url":"https://api.github.com/users/cuappdev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cuappdev/subscriptions","organizations_url":"https://api.github.com/users/cuappdev/orgs","repos_url":"https://api.github.com/users/cuappdev/repos","events_url":"https://api.github.com/users/cuappdev/events{/privacy}","received_events_url":"https://api.github.com/users/cuappdev/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/cuappdev/podcast-ios","description":"An open-source iOS app for listening to podcasts.","fork":false,"url":"https://api.github.com/repos/cuappdev/podcast-ios","forks_url":"https://api.github.com/repos/cuappdev/podcast-ios/forks","keys_url":"https://api.github.com/repos/cuappdev/podcast-ios/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cuappdev/podcast-ios/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cuappdev/podcast-ios/teams","hooks_url":"https://api.github.com/repos/cuappdev/podcast-ios/hooks","issue_events_url":"https://api.github.com/repos/cuappdev/podcast-ios/issues/events{/number}","events_url":"https://api.github.com/repos/cuappdev/podcast-ios/events","assignees_url":"https://api.github.com/repos/cuappdev/podcast-ios/assignees{/user}","branches_url":"https://api.github.com/repos/cuappdev/podcast-ios/branches{/branch}","tags_url":"https://api.github.com/repos/cuappdev/podcast-ios/tags","blobs_url":"https://api.github.com/repos/cuappdev/podcast-ios/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cuappdev/podcast-ios/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cuappdev/podcast-ios/git/refs{/sha}","trees_url":"https://api.github.com/repos/cuappdev/podcast-ios/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cuappdev/podcast-ios/statuses/{sha}","languages_url":"https://api.github.com/repos/cuappdev/podcast-ios/languages","stargazers_url":"https://api.github.com/repos/cuappdev/podcast-ios/stargazers","contributors_url":"https://api.github.com/repos/cuappdev/podcast-ios/contributors","subscribers_url":"https://api.github.com/repos/cuappdev/podcast-ios/subscribers","subscription_url":"https://api.github.com/repos/cuappdev/podcast-ios/subscription","commits_url":"https://api.github.com/repos/cuappdev/podcast-ios/commits{/sha}","git_commits_url":"https://api.github.com/repos/cuappdev/podcast-ios/git/commits{/sha}","comments_url":"https://api.github.com/repos/cuappdev/podcast-ios/comments{/number}","issue_comment_url":"https://api.github.com/repos/cuappdev/podcast-ios/issues/comments{/number}","contents_url":"https://api.github.com/repos/cuappdev/podcast-ios/contents/{+path}","compare_url":"https://api.github.com/repos/cuappdev/podcast-ios/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cuappdev/podcast-ios/merges","archive_url":"https://api.github.com/repos/cuappdev/podcast-ios/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cuappdev/podcast-ios/downloads","issues_url":"https://api.github.com/repos/cuappdev/podcast-ios/issues{/number}","pulls_url":"https://api.github.com/repos/cuappdev/podcast-ios/pulls{/number}","milestones_url":"https://api.github.com/repos/cuappdev/podcast-ios/milestones{/number}","notifications_url":"https://api.github.com/repos/cuappdev/podcast-ios/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cuappdev/podcast-ios/labels{/name}","releases_url":"https://api.github.com/repos/cuappdev/podcast-ios/releases{/id}","deployments_url":"https://api.github.com/repos/cuappdev/podcast-ios/deployments","created_at":"2016-09-04T16:54:22Z","updated_at":"2016-10-24T00:38:14Z","pushed_at":"2016-11-20T20:32:11Z","git_url":"git://github.com/cuappdev/podcast-ios.git","ssh_url":"git@github.com:cuappdev/podcast-ios.git","clone_url":"https://github.com/cuappdev/podcast-ios.git","svn_url":"https://github.com/cuappdev/podcast-ios","homepage":"","size":21479,"stargazers_count":2,"watchers_count":2,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":4,"forks":0,"open_issues":4,"watchers":2,"default_branch":"master"}},"base":{"label":"cuappdev:master","ref":"master","sha":"f6394251f0a8dba8e4984a37172e45836e055457","user":{"login":"cuappdev","id":17533691,"avatar_url":"https://avatars.githubusercontent.com/u/17533691?v=3","gravatar_id":"","url":"https://api.github.com/users/cuappdev","html_url":"https://github.com/cuappdev","followers_url":"https://api.github.com/users/cuappdev/followers","following_url":"https://api.github.com/users/cuappdev/following{/other_user}","gists_url":"https://api.github.com/users/cuappdev/gists{/gist_id}","starred_url":"https://api.github.com/users/cuappdev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cuappdev/subscriptions","organizations_url":"https://api.github.com/users/cuappdev/orgs","repos_url":"https://api.github.com/users/cuappdev/repos","events_url":"https://api.github.com/users/cuappdev/events{/privacy}","received_events_url":"https://api.github.com/users/cuappdev/received_events","type":"Organization","site_admin":false},"repo":{"id":67357239,"name":"podcast-ios","full_name":"cuappdev/podcast-ios","owner":{"login":"cuappdev","id":17533691,"avatar_url":"https://avatars.githubusercontent.com/u/17533691?v=3","gravatar_id":"","url":"https://api.github.com/users/cuappdev","html_url":"https://github.com/cuappdev","followers_url":"https://api.github.com/users/cuappdev/followers","following_url":"https://api.github.com/users/cuappdev/following{/other_user}","gists_url":"https://api.github.com/users/cuappdev/gists{/gist_id}","starred_url":"https://api.github.com/users/cuappdev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cuappdev/subscriptions","organizations_url":"https://api.github.com/users/cuappdev/orgs","repos_url":"https://api.github.com/users/cuappdev/repos","events_url":"https://api.github.com/users/cuappdev/events{/privacy}","received_events_url":"https://api.github.com/users/cuappdev/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/cuappdev/podcast-ios","description":"An open-source iOS app for listening to podcasts.","fork":false,"url":"https://api.github.com/repos/cuappdev/podcast-ios","forks_url":"https://api.github.com/repos/cuappdev/podcast-ios/forks","keys_url":"https://api.github.com/repos/cuappdev/podcast-ios/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cuappdev/podcast-ios/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cuappdev/podcast-ios/teams","hooks_url":"https://api.github.com/repos/cuappdev/podcast-ios/hooks","issue_events_url":"https://api.github.com/repos/cuappdev/podcast-ios/issues/events{/number}","events_url":"https://api.github.com/repos/cuappdev/podcast-ios/events","assignees_url":"https://api.github.com/repos/cuappdev/podcast-ios/assignees{/user}","branches_url":"https://api.github.com/repos/cuappdev/podcast-ios/branches{/branch}","tags_url":"https://api.github.com/repos/cuappdev/podcast-ios/tags","blobs_url":"https://api.github.com/repos/cuappdev/podcast-ios/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cuappdev/podcast-ios/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cuappdev/podcast-ios/git/refs{/sha}","trees_url":"https://api.github.com/repos/cuappdev/podcast-ios/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cuappdev/podcast-ios/statuses/{sha}","languages_url":"https://api.github.com/repos/cuappdev/podcast-ios/languages","stargazers_url":"https://api.github.com/repos/cuappdev/podcast-ios/stargazers","contributors_url":"https://api.github.com/repos/cuappdev/podcast-ios/contributors","subscribers_url":"https://api.github.com/repos/cuappdev/podcast-ios/subscribers","subscription_url":"https://api.github.com/repos/cuappdev/podcast-ios/subscription","commits_url":"https://api.github.com/repos/cuappdev/podcast-ios/commits{/sha}","git_commits_url":"https://api.github.com/repos/cuappdev/podcast-ios/git/commits{/sha}","comments_url":"https://api.github.com/repos/cuappdev/podcast-ios/comments{/number}","issue_comment_url":"https://api.github.com/repos/cuappdev/podcast-ios/issues/comments{/number}","contents_url":"https://api.github.com/repos/cuappdev/podcast-ios/contents/{+path}","compare_url":"https://api.github.com/repos/cuappdev/podcast-ios/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cuappdev/podcast-ios/merges","archive_url":"https://api.github.com/repos/cuappdev/podcast-ios/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cuappdev/podcast-ios/downloads","issues_url":"https://api.github.com/repos/cuappdev/podcast-ios/issues{/number}","pulls_url":"https://api.github.com/repos/cuappdev/podcast-ios/pulls{/number}","milestones_url":"https://api.github.com/repos/cuappdev/podcast-ios/milestones{/number}","notifications_url":"https://api.github.com/repos/cuappdev/podcast-ios/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cuappdev/podcast-ios/labels{/name}","releases_url":"https://api.github.com/repos/cuappdev/podcast-ios/releases{/id}","deployments_url":"https://api.github.com/repos/cuappdev/podcast-ios/deployments","created_at":"2016-09-04T16:54:22Z","updated_at":"2016-10-24T00:38:14Z","pushed_at":"2016-11-20T20:32:11Z","git_url":"git://github.com/cuappdev/podcast-ios.git","ssh_url":"git@github.com:cuappdev/podcast-ios.git","clone_url":"https://github.com/cuappdev/podcast-ios.git","svn_url":"https://github.com/cuappdev/podcast-ios","homepage":"","size":21479,"stargazers_count":2,"watchers_count":2,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":4,"forks":0,"open_issues":4,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/cuappdev/podcast-ios/pulls/18"},"html":{"href":"https://github.com/cuappdev/podcast-ios/pull/18"},"issue":{"href":"https://api.github.com/repos/cuappdev/podcast-ios/issues/18"},"comments":{"href":"https://api.github.com/repos/cuappdev/podcast-ios/issues/18/comments"},"review_comments":{"href":"https://api.github.com/repos/cuappdev/podcast-ios/pulls/18/comments"},"review_comment":{"href":"https://api.github.com/repos/cuappdev/podcast-ios/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/cuappdev/podcast-ios/pulls/18/commits"},"statuses":{"href":"https://api.github.com/repos/cuappdev/podcast-ios/statuses/184a15e2c1260cae2e69b9ffdeea31a6201cd7df"}}}}
{"actor":{"display_login":"acheng96"}}