123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- //
- // O2Collect.swift
- // O2Platform
- //
- // Created by 刘振兴 on 16/6/29.
- // Copyright © 2016年 zoneland. All rights reserved.
- //
- import Foundation
- import Alamofire
- import SwiftyJSON
- import CocoaLumberjack
- class O2Collect{
-
- static let T_QUERY = "#QUERY#"
-
- //变量
- var moduleWebContextDict:[String:String]?
-
- var moduleHostAndWebContextDict:[String:JSON]?
-
- var webModuleHostAndWebContextDict:[String:JSON]?
-
- var collectUnitData: O2BindUnitModel?
-
- init(){
- self.moduleWebContextDict = [:]
- self.moduleHostAndWebContextDict = [:]
- self.webModuleHostAndWebContextDict = [:]
- }
-
- /**
- 生成API调用URL
-
- - parameter appContextKey: appContextKey
- - parameter scheme: 请求应用协议
- - parameter query: 查询路径
- - parameter parameter: 请求参数
-
- - returns: 生成的URL
- */
- func generateURLWithAppContextKey(_ appContextKey:String,scheme:String,query:String,parameter:[String:AnyObject]?,coverted:Bool=true,generateTime:Bool=true) -> String?{
- let nodeAPI = O2AuthSDK.shared.centerServerInfo()?.assembles![appContextKey]
- var baseURL = "".appendingFormat("%@://%@:%@%@/%@", nodeAPI?.httpProtocol ?? "http",(nodeAPI?.host)!,String((nodeAPI?.port)!),(nodeAPI?.context)!,query)
- if let t_parameter = parameter {
- for (key,value) in t_parameter {
- baseURL = baseURL.replacingOccurrences(of: key, with:value as! String)
- }
- }
- //return self.generateTimestampWithURL(baseURL)!
- //加入时间截
- if coverted{
- if(generateTime){
- baseURL = self.generateTimestampWithURL(baseURL)!
- }
- return baseURL.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)
- }else{
- if(generateTime){
- baseURL = self.generateTimestampWithURL(baseURL)!
- }
- return baseURL
- }
-
- }
-
-
- /**
- 生成API调用URL
-
- - parameter appContextKey: appContextKey
- - parameter scheme: "http"
- - parameter query: 查询路径
- - parameter parameter: 请求参数
-
- - returns: 生成的URL
- */
- func generateURLWithAppContextKey(_ appContextKey:String,query:String,parameter:[String:AnyObject]?,coverted:Bool=true,generateTime:Bool=true) -> String?{
- return self.generateURLWithAppContextKey(appContextKey, scheme: "http", query: query, parameter: parameter,coverted: coverted,generateTime: generateTime)
- }
-
- /**
- 生成websocket连接地址
- */
- func generateWebsocketURL() -> String {
- if let webServer = O2AuthSDK.shared.centerServerInfo()?.webServer, let communicateNode = O2AuthSDK.shared.centerServerInfo()?.assembles?["x_message_assemble_communicate"] {
- var wsProtocol = "ws://"
- if webServer.httpProtocol == "https" {
- wsProtocol = "wss://"
- }
- let tokenName = O2AuthSDK.shared.tokenName()
- return "\(wsProtocol)\(communicateNode.host ?? ""):\(communicateNode.port ?? 20020)\(communicateNode.context ?? "/x_message_assemble_communicate")/ws/collaboration?\(tokenName)=\(O2AuthSDK.shared.myInfo()?.token ?? "")"
- }
- return ""
- }
-
-
- /**
- 前台请求H5页面路径生成方法
-
- - parameter webAppContextkey: webAppContext上下文
- - parameter query: query路径
- - parameter parameter: 参数字典
-
- - returns: 返回请求的实际URL地址
- */
- func genrateURLWithWebContextKey(_ webAppContextkey:String,query:String,parameter:[String:AnyObject]?,covertd:Bool=true) -> String?{
- let webAPI = O2AuthSDK.shared.centerServerInfo()?.webServer
- var baseURL = "".appendingFormat("%@://%@:%@/%@/%@", webAPI?.httpProtocol ?? "http",(webAPI?.host)!,String((webAPI?.port)!),webAppContextkey,query)
- if let param = parameter {
- for (key,value) in param {
- baseURL = baseURL.replacingOccurrences(of: key, with:value as! String)
- }
- }
- if covertd {
- return self.generateTimestampWithURL(baseURL)?.urlEncoded
- }else{
- return self.generateTimestampWithURL(baseURL)
- }
- }
-
- func genrateURLWithWebContextKey2(_ query:String,parameter:[String:AnyObject]?,covertd:Bool=true) -> String?{
- let webAPI = O2AuthSDK.shared.centerServerInfo()?.webServer
- var baseURL = "".appendingFormat("%@://%@:%@/%@", webAPI?.httpProtocol ?? "http",(webAPI?.host)!,String((webAPI?.port)!),query)
- if let param = parameter {
- for (key,value) in param {
- baseURL = baseURL.replacingOccurrences(of: key, with:value as! String)
- }
- }
- if covertd {
- return self.generateTimestampWithURL(baseURL)?.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)
- }else{
- return self.generateTimestampWithURL(baseURL)
- }
- }
-
- /**
- 对指定的请求路径进行替换生成新的URL
-
- - parameter baseURL: 带有query参数URL
- - parameter requestQuery: 实际的Query上下文参数
-
- - returns: 实际的URL
- */
-
- func setRequestQuery(_ baseURL:String,requestQuery:String)-> String?{
- //return [baseUrl stringByReplacingOccurrencesOfString:T_QUERY withString:requestQuery];
- return baseURL.replacingOccurrences(of: O2Collect.T_QUERY, with: requestQuery)
- }
-
- /**
- 给请求的URL增加参数
-
- - parameter baseURL: 带有参数的URL
- - parameter requestParameter: 参数key.value值对
-
- - returns: 将参数设置为了实际值的URL
- */
- func setRequestParameter(_ baseURL:String,requestParameter:[String:AnyObject]?) -> String?{
- var t_url = baseURL
- if let param = requestParameter {
- for (key,value) in param {
- t_url = t_url.replacingOccurrences(of: key, with: value as! String)
- }
- }
- return t_url
- }
-
- /**
- 生成时间戳
-
- - parameter baseURL: 需要加入时间戳的URL
-
- - returns: 加入时间戳的URL
- */
- func generateTimestampWithURL(_ baseURL:String) -> String? {
- var resultURL:String?
- if baseURL.contains("?") {
- resultURL = baseURL.appending("&" + RandomString.sharedInstance.getRandomStringOfLength(length: 10))
- }else{
- resultURL = baseURL.appending("?" + RandomString.sharedInstance.getRandomStringOfLength(length: 10))
- }
- return resultURL
- }
-
- }
|