Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions Sources/NetworkLayer/Routes/Instagram+Statuses.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
//
// Instagram+Statuses.swift
// TwitterAPI-iOS
//
// Created by MACHADO KEVIN on 27/01/2019.
// Copyright © 2019 Zerty Color. All rights reserved.
//

import Foundation
import Alamofire

extension Twitter.Statuses: Provider {
typealias Element = [Tweet]

var path: Path {
switch self {
case .homeTimeline:
return "home_timeline.json"
case .userTimeline(let screenName, let userID):
var path = "user_timeline.json"
var first = true
if let screenName = screenName {
path = path+"?screen_name=\(screenName)"
first = false
}
if let userID = userID {
path = path+"\(first ? "?": "&")user_id=\(userID)"
}
return path
case .mentionTimeline:
return "mentions_timeline.json"
}
}
var params: Parameters? {
return nil
}
var method: HTTPMethod {
switch self {
case .homeTimeline:
return .get
case .userTimeline(_):
return .get
case .mentionTimeline:
return .get
}
}

}
31 changes: 0 additions & 31 deletions Sources/NetworkLayer/Routes/Instagram+User.swift

This file was deleted.

6 changes: 4 additions & 2 deletions Sources/NetworkLayer/Routes/Routes.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ import Foundation
import Alamofire

struct Twitter {
enum User {
case info(token: String)
enum Statuses {
case homeTimeline
case userTimeline(screenName: String?, userID: String?)
case mentionTimeline
}
enum Media {
case medias(token: String, count: Int, minMediaId: String, maxMediaId: String)
Expand Down
9 changes: 7 additions & 2 deletions Sources/TwitterAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,13 @@ import Foundation

class TwitterAPI {

func getUser(completion: @escaping (User) -> Void) {
Twitter.User.info(token: "fs").request(completion: completion)
func getUserTimeline(from screenname: String, completion: @escaping ([Tweet]) -> Void) {
Twitter.Statuses.userTimeline(screenName: screenname, userID: nil)
.request(completion: completion)
}

func getUserTimeline(by userId: String, completion: @escaping ([Tweet]) -> Void) {
Twitter.Statuses.userTimeline(screenName: nil, userID: userId)
.request(completion: completion)
}
}
22 changes: 18 additions & 4 deletions Tests/TwitterAPITests/TwitterAPITests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,28 @@

import Foundation
import XCTest
import TwitterAPI
@testable import TwitterAPI

class TwitterAPITests: XCTestCase {

static var allTests = [("testAlwaysSuccess", testAlwaysSuccess)]
func testUserTimelineScreenName() {
let api = Twitter.Statuses.userTimeline(screenName: "djnivek", userID: nil)
XCTAssert(api.path == "user_timeline.json?screen_name=djnivek")
}

func testUserTimelineUserId() {
let api = Twitter.Statuses.userTimeline(screenName: nil, userID: "12")
XCTAssert(api.path == "user_timeline.json?user_id=12")
}

func testUserTimelineScreenNameAndUserId() {
let api = Twitter.Statuses.userTimeline(screenName: "djnivek", userID: "12")
XCTAssert(api.path == "user_timeline.json?screen_name=djnivek&user_id=12")
}

func testAlwaysSuccess() {
XCTAssert(true)
func testUserTimelineEmpty() {
let api = Twitter.Statuses.userTimeline(screenName: nil, userID: nil)
XCTAssert(api.path == "user_timeline.json")
}

}
8 changes: 4 additions & 4 deletions TwitterAPI.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
OBJ_89 /* InstaConst.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_15 /* InstaConst.swift */; };
OBJ_90 /* Instagram+Comment.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_16 /* Instagram+Comment.swift */; };
OBJ_91 /* Instagram+Media.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_17 /* Instagram+Media.swift */; };
OBJ_92 /* Instagram+User.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_18 /* Instagram+User.swift */; };
OBJ_92 /* Instagram+Statuses.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_18 /* Instagram+Statuses.swift */; };
OBJ_93 /* Routes.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_19 /* Routes.swift */; };
OBJ_94 /* TwitterAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_20 /* TwitterAPI.swift */; };
OBJ_96 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Alamofire::Alamofire::Product" /* Alamofire.framework */; };
Expand Down Expand Up @@ -116,7 +116,7 @@
OBJ_15 /* InstaConst.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstaConst.swift; sourceTree = "<group>"; };
OBJ_16 /* Instagram+Comment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Instagram+Comment.swift"; sourceTree = "<group>"; };
OBJ_17 /* Instagram+Media.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Instagram+Media.swift"; sourceTree = "<group>"; };
OBJ_18 /* Instagram+User.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Instagram+User.swift"; sourceTree = "<group>"; };
OBJ_18 /* Instagram+Statuses.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Instagram+Statuses.swift"; sourceTree = "<group>"; };
OBJ_19 /* Routes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Routes.swift; sourceTree = "<group>"; };
OBJ_20 /* TwitterAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterAPI.swift; sourceTree = "<group>"; };
OBJ_23 /* TwitterAPITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterAPITests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -197,7 +197,7 @@
OBJ_15 /* InstaConst.swift */,
OBJ_16 /* Instagram+Comment.swift */,
OBJ_17 /* Instagram+Media.swift */,
OBJ_18 /* Instagram+User.swift */,
OBJ_18 /* Instagram+Statuses.swift */,
OBJ_19 /* Routes.swift */,
);
path = Routes;
Expand Down Expand Up @@ -483,7 +483,7 @@
4AA01DF02218721B00706294 /* UserMention.swift in Sources */,
OBJ_90 /* Instagram+Comment.swift in Sources */,
OBJ_91 /* Instagram+Media.swift in Sources */,
OBJ_92 /* Instagram+User.swift in Sources */,
OBJ_92 /* Instagram+Statuses.swift in Sources */,
4AD4B1352209C7CC001051AA /* Coordinate.swift in Sources */,
4AD4B13B2209C81E001051AA /* Entities.swift in Sources */,
OBJ_93 /* Routes.swift in Sources */,
Expand Down