O2Collect.swift 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. //
  2. // O2Collect.swift
  3. // O2Platform
  4. //
  5. // Created by 刘振兴 on 16/6/29.
  6. // Copyright © 2016年 zoneland. All rights reserved.
  7. //
  8. import Foundation
  9. import Alamofire
  10. import SwiftyJSON
  11. import EZSwiftExtensions
  12. import CocoaLumberjack
  13. import O2OA_Auth_SDK
  14. class O2Collect{
  15. static let T_QUERY = "#QUERY#"
  16. //变量
  17. var moduleWebContextDict:[String:String]?
  18. var moduleHostAndWebContextDict:[String:JSON]?
  19. var webModuleHostAndWebContextDict:[String:JSON]?
  20. var collectUnitData: O2BindUnitModel?
  21. init(){
  22. self.moduleWebContextDict = [:]
  23. self.moduleHostAndWebContextDict = [:]
  24. self.webModuleHostAndWebContextDict = [:]
  25. }
  26. /**
  27. 生成API调用URL
  28. - parameter appContextKey: appContextKey
  29. - parameter scheme: 请求应用协议
  30. - parameter query: 查询路径
  31. - parameter parameter: 请求参数
  32. - returns: 生成的URL
  33. */
  34. func generateURLWithAppContextKey(_ appContextKey:String,scheme:String,query:String,parameter:[String:AnyObject]?,coverted:Bool=true,generateTime:Bool=true) -> String?{
  35. let nodeAPI = O2AuthSDK.shared.centerServerInfo()?.assembles![appContextKey]
  36. var baseURL = "".appendingFormat("%@://%@:%@%@/%@", nodeAPI?.httpProtocol ?? "http",(nodeAPI?.host)!,String((nodeAPI?.port)!),(nodeAPI?.context)!,query)
  37. if let t_parameter = parameter {
  38. for (key,value) in t_parameter {
  39. baseURL = baseURL.replacingOccurrences(of: key, with:value as! String)
  40. }
  41. }
  42. //return self.generateTimestampWithURL(baseURL)!
  43. //加入时间截
  44. if coverted{
  45. if(generateTime){
  46. baseURL = self.generateTimestampWithURL(baseURL)!
  47. }
  48. return baseURL.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)
  49. }else{
  50. if(generateTime){
  51. baseURL = self.generateTimestampWithURL(baseURL)!
  52. }
  53. return baseURL
  54. }
  55. }
  56. /**
  57. 生成API调用URL
  58. - parameter appContextKey: appContextKey
  59. - parameter scheme: "http"
  60. - parameter query: 查询路径
  61. - parameter parameter: 请求参数
  62. - returns: 生成的URL
  63. */
  64. func generateURLWithAppContextKey(_ appContextKey:String,query:String,parameter:[String:AnyObject]?,coverted:Bool=true,generateTime:Bool=true) -> String?{
  65. return self.generateURLWithAppContextKey(appContextKey, scheme: "http", query: query, parameter: parameter,coverted: coverted,generateTime: generateTime)
  66. }
  67. /**
  68. 前台请求H5页面路径生成方法
  69. - parameter webAppContextkey: webAppContext上下文
  70. - parameter query: query路径
  71. - parameter parameter: 参数字典
  72. - returns: 返回请求的实际URL地址
  73. */
  74. func genrateURLWithWebContextKey(_ webAppContextkey:String,query:String,parameter:[String:AnyObject]?,covertd:Bool=true) -> String?{
  75. let webAPI = O2AuthSDK.shared.centerServerInfo()?.webServer
  76. var baseURL = "".appendingFormat("%@://%@:%@/%@/%@", webAPI?.httpProtocol ?? "http",(webAPI?.host)!,String((webAPI?.port)!),webAppContextkey,query)
  77. if let param = parameter {
  78. for (key,value) in param {
  79. baseURL = baseURL.replacingOccurrences(of: key, with:value as! String)
  80. }
  81. }
  82. if covertd {
  83. return self.generateTimestampWithURL(baseURL)?.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)
  84. }else{
  85. return self.generateTimestampWithURL(baseURL)
  86. }
  87. }
  88. func genrateURLWithWebContextKey2(_ query:String,parameter:[String:AnyObject]?,covertd:Bool=true) -> String?{
  89. let webAPI = O2AuthSDK.shared.centerServerInfo()?.webServer
  90. var baseURL = "".appendingFormat("%@://%@:%@/%@", webAPI?.httpProtocol ?? "http",(webAPI?.host)!,String((webAPI?.port)!),query)
  91. if let param = parameter {
  92. for (key,value) in param {
  93. baseURL = baseURL.replacingOccurrences(of: key, with:value as! String)
  94. }
  95. }
  96. if covertd {
  97. return self.generateTimestampWithURL(baseURL)?.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)
  98. }else{
  99. return self.generateTimestampWithURL(baseURL)
  100. }
  101. }
  102. /**
  103. 对指定的请求路径进行替换生成新的URL
  104. - parameter baseURL: 带有query参数URL
  105. - parameter requestQuery: 实际的Query上下文参数
  106. - returns: 实际的URL
  107. */
  108. func setRequestQuery(_ baseURL:String,requestQuery:String)-> String?{
  109. //return [baseUrl stringByReplacingOccurrencesOfString:T_QUERY withString:requestQuery];
  110. return baseURL.replacingOccurrences(of: O2Collect.T_QUERY, with: requestQuery)
  111. }
  112. /**
  113. 给请求的URL增加参数
  114. - parameter baseURL: 带有参数的URL
  115. - parameter requestParameter: 参数key.value值对
  116. - returns: 将参数设置为了实际值的URL
  117. */
  118. func setRequestParameter(_ baseURL:String,requestParameter:[String:AnyObject]?) -> String?{
  119. var t_url = baseURL
  120. if let param = requestParameter {
  121. for (key,value) in param {
  122. t_url = t_url.replacingOccurrences(of: key, with: value as! String)
  123. }
  124. }
  125. return t_url
  126. }
  127. /**
  128. 生成时间戳
  129. - parameter baseURL: 需要加入时间戳的URL
  130. - returns: 加入时间戳的URL
  131. */
  132. func generateTimestampWithURL(_ baseURL:String) -> String? {
  133. var resultURL:String?
  134. if baseURL.contains("?") {
  135. resultURL = baseURL.appending("&" + RandomString.sharedInstance.getRandomStringOfLength(length: 10))
  136. }else{
  137. resultURL = baseURL.appending("?" + RandomString.sharedInstance.getRandomStringOfLength(length: 10))
  138. }
  139. return resultURL
  140. }
  141. }