O2Collect.swift 5.9 KB

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