Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EmojiMe #3

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open

EmojiMe #3

wants to merge 6 commits into from

Conversation

max-simon
Copy link

UI update and better user interaction :)

max-simon added 2 commits May 25, 2016 16:56
Better UI
Smileys werden nun nach Augenstellung gedreht.
@max-simon
Copy link
Author

Das Decoding der anderen Parameter klappt leider gar nicht. Ich wollte den einen Decoder nur für das Bild anwenden (siehe endpointByAdding ...), aber Leider codiert er die anderen Parameter trotzdem nicht (parameterEncoding: .URL). Hab es jetzt zu Fuß gemacht, hast Du noch eine bessere Idee?

`// eigener Endpoint, da Authentifikation und Bild
let endPointWithAuthentification = {(target: MicrosoftFaces) -> Endpoint in

// TODO: Fix this!
// Irgendwie so ähnlich wie unten, aber .URL funzt nicht :/
var addString = ""
if let unwrappedParameters = target.parameters where unwrappedParameters.count > 0 {
    addString = "?"
    var wasFirst = true
    for (key, value) in unwrappedParameters {
        if !wasFirst {
            addString += "&"
        } else {
            wasFirst = false
        }
        if key != "body" {
            addString += key + "=" + (value as! String)
        }
    }
    addString = String(addString.characters.dropLast(1))

}


let url = target.baseURL.URLByAppendingPathComponent(target.path).absoluteString + addString
let parameterEncodingPic = Moya.ParameterEncoding.Custom({ requestConvertible, parameters in
    let urlRequest = requestConvertible.URLRequest.mutableCopy() as! NSMutableURLRequest

    if let body = parameters?["body"] as? NSData {
        urlRequest.HTTPBody = body
    }

    return (urlRequest, nil)
})

var endpoint: Endpoint<MicrosoftFaces>

if let pic = target.parameters?["body"] {
    var newParameters = target.parameters
    newParameters?.removeValueForKey("body")

    endpoint = Endpoint<MicrosoftFaces>(
        URL: url,
        sampleResponseClosure: { .NetworkResponse(200, target.sampleData) },
        method: target.method,
        parameters: newParameters,
        parameterEncoding: .URL
    )


    endpoint = endpoint.endpointByAdding(parameters: ["body": pic], parameterEncoding: parameterEncodingPic)

} else {
    endpoint = Endpoint<MicrosoftFaces>(
        URL: url,
        sampleResponseClosure: { .NetworkResponse(200, target.sampleData) },
        method: target.method,
        parameters: target.parameters,
        parameterEncoding: .URL
    )
}


return endpoint.endpointByAddingHTTPHeaderFields([
    "Ocp-Apim-Subscription-Key": target.authKey,
    "Content-Type": "application/octet-stream",
    ])

}
`

API-Abfragen haben unterschiedliche Werte für Gesichtsrechtecke
zurückgegeben -> viele Gesichter nicht erkannt.
@nilsvu
Copy link
Member

nilsvu commented May 28, 2016

Hey Max, so klappts:

    let parameterEncodingPic = Moya.ParameterEncoding.Custom({ requestConvertible, parameters in
        let urlRequest = requestConvertible.URLRequest.mutableCopy() as! NSMutableURLRequest
        guard var parameters = parameters else { return (urlRequest, nil) }

        if let body = parameters["body"] as? NSData {
            urlRequest.HTTPBody = body
            parameters.removeValueForKey("body")
        }

        let urlEncodedParameters = parameters.flatMap { key, value in
            return key + "=" + (value as! String) // FIXME: properly convert to String!
            }.joinWithSeparator("&")
        urlRequest.URL = NSURL(string: urlRequest.URL!.absoluteString + (urlEncodedParameters.isEmpty ? "" : "?") + urlEncodedParameters)

        return (urlRequest, nil)
    })

Noch eine schönere Variante, die Rectangles zu encoden:

            return ["body": imageData, "faceRectangles": faceRectangles.map({ $0.description }).joinWithSeparator(";") ]

@nilsvu
Copy link
Member

nilsvu commented May 28, 2016

Btw. so sollte es im Idealfall klappen, wird dran gearbeitet, kannst ja was zu beisteuern ;) Moya/Moya#114

Fix mal bitte noch grad das Repository, also was ich in der Email schrieb und dass du nicht zwei Xcode Projekte im Repo hast. Außerdem die Tests löschen, wenn die leer sind.

@max-simon
Copy link
Author

Vielen Dank, scheint ja echt für alles ne Funktion zu geben 👀

max-simon added 2 commits May 30, 2016 00:46
Change smiley on single faces by swiping, added 10 new Smileys (only
available on Swiping)
@nilsvu
Copy link
Member

nilsvu commented Jun 5, 2016

Sehr schönes Beispiel, wie wir auf höchst komplexe Technologie anderer Entwickler zurückgreifen und darauf aufbauen können 👏 5/2 Pt. 💯

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants