Module: Azure::Service::Serialization::ClassMethods
- Included in:
- Azure::Service::Serialization
- Defined in:
- lib/azure/service/serialization.rb
Instance Method Summary collapse
- #access_policy_from_xml(xml) ⇒ Object
- #ary_from_node(node) ⇒ Object
- #cors_from_xml(xml) ⇒ Object
- #cors_rule_from_xml(xml) ⇒ Object
- #cors_rule_to_xml(cors_rule, xml) ⇒ Object
- #cors_to_xml(cors, xml) ⇒ Object
- #enumeration_results_from_xml(xml, results) ⇒ Object
- #expect_node(node_name, xml) ⇒ Object
- #hour_metrics_to_xml(metrics, xml) ⇒ Object
- #logging_from_xml(xml) ⇒ Object
- #logging_to_xml(logging, xml) ⇒ Object
- #metadata_from_headers(headers) ⇒ Object
- #metadata_from_xml(xml) ⇒ Object
- #metrics_from_xml(xml) ⇒ Object
- #metrics_to_xml_children(metrics, xml) ⇒ Object
- #minute_metrics_to_xml(metrics, xml) ⇒ Object
- #retention_policy_from_xml(xml) ⇒ Object
- #retention_policy_to_xml(retention_policy, xml) ⇒ Object
- #service_properties_from_xml(xml) ⇒ Object
- #service_properties_to_xml(properties) ⇒ Object
- #signed_identifier_from_xml(xml) ⇒ Object
- #signed_identifiers_from_xml(xml) ⇒ Object
- #signed_identifiers_to_xml(signed_identifiers) ⇒ Object
- #slopify(xml) ⇒ Object
- #to_bool(s) ⇒ Object
Instance Method Details
#access_policy_from_xml(xml) ⇒ Object
79 80 81 82 83 84 85 86 87 88 |
# File 'lib/azure/service/serialization.rb', line 79 def access_policy_from_xml(xml) xml = slopify(xml) expect_node("AccessPolicy", xml) AccessPolicy.new do |policy| policy.start = xml.Start.text if (xml > "Start").any? policy.expiry = xml.Expiry.text if (xml > "Expiry").any? policy. = xml.Permission.text if (xml > "Permission").any? end end |
#ary_from_node(node) ⇒ Object
246 247 248 |
# File 'lib/azure/service/serialization.rb', line 246 def ary_from_node(node) node.text.split(",").map {|s| s.strip} end |
#cors_from_xml(xml) ⇒ Object
224 225 226 227 228 229 230 231 |
# File 'lib/azure/service/serialization.rb', line 224 def cors_from_xml(xml) xml = slopify(xml) expect_node("Cors", xml) Cors.new do |cors| cors.cors_rules = xml.children.to_a.map {|child| cors_rule_from_xml(child)} end end |
#cors_rule_from_xml(xml) ⇒ Object
233 234 235 236 237 238 239 240 241 242 243 244 |
# File 'lib/azure/service/serialization.rb', line 233 def cors_rule_from_xml(xml) xml = slopify(xml) expect_node("CorsRule", xml) CorsRule.new do |cors_rule| cors_rule.allowed_origins = ary_from_node(xml.AllowedOrigins) if (xml > "AllowedOrigins").any? cors_rule.allowed_methods = ary_from_node(xml.AllowedMethods) if (xml > "AllowedMethods").any? cors_rule.max_age_in_seconds = xml.MaxAgeInSeconds.text.to_i if (xml > "MaxAgeInSeconds").any? cors_rule.exposed_headers = ary_from_node(xml.ExposedHeaders) if (xml > "ExposedHeaders").any? cors_rule.allowed_headers = ary_from_node(xml.AllowedHeaders) if (xml > "AllowedHeaders").any? end end |
#cors_rule_to_xml(cors_rule, xml) ⇒ Object
214 215 216 217 218 219 220 221 222 |
# File 'lib/azure/service/serialization.rb', line 214 def cors_rule_to_xml(cors_rule, xml) xml.CorsRule { xml.AllowedOrigins cors_rule.allowed_origins.join(",") if cors_rule.allowed_origins xml.AllowedMethods cors_rule.allowed_methods.join(",") if cors_rule.allowed_methods xml.MaxAgeInSeconds cors_rule.max_age_in_seconds if cors_rule.max_age_in_seconds xml.ExposedHeaders cors_rule.exposed_headers.join(",") if cors_rule.exposed_headers xml.AllowedHeaders cors_rule.allowed_headers.join(",") if cors_rule.allowed_headers } end |
#cors_to_xml(cors, xml) ⇒ Object
206 207 208 209 210 211 212 |
# File 'lib/azure/service/serialization.rb', line 206 def cors_to_xml(cors, xml) xml.Cors { cors.cors_rules.to_a.each do |cors_rule| cors_rule_to_xml(cors_rule, xml) end } end |
#enumeration_results_from_xml(xml, results) ⇒ Object
90 91 92 93 94 95 96 97 98 |
# File 'lib/azure/service/serialization.rb', line 90 def enumeration_results_from_xml(xml, results) xml = slopify(xml) expect_node("EnumerationResults", xml) results = results || EnumerationResults.new; results.continuation_token = xml.NextMarker.text if (xml > "NextMarker").any? results end |
#expect_node(node_name, xml) ⇒ Object
287 288 289 |
# File 'lib/azure/service/serialization.rb', line 287 def expect_node(node_name, xml) raise "Xml is not a #{node_name} node." unless xml.name == node_name end |
#hour_metrics_to_xml(metrics, xml) ⇒ Object
160 161 162 163 164 |
# File 'lib/azure/service/serialization.rb', line 160 def hour_metrics_to_xml(metrics, xml) xml.HourMetrics { metrics_to_xml_children(metrics, xml) } end |
#logging_from_xml(xml) ⇒ Object
193 194 195 196 197 198 199 200 201 202 203 204 |
# File 'lib/azure/service/serialization.rb', line 193 def logging_from_xml(xml) xml = slopify(xml) expect_node("Logging", xml) Logging.new do |logging| logging.version = xml.Version.text if (xml > "Version").any? logging.delete = to_bool(xml.Delete.text) if (xml > "Delete").any? logging.read = to_bool(xml.Read.text) if (xml > "Read").any? logging.write = to_bool(xml.Write.text) if (xml > "Write").any? logging.retention_policy = retention_policy_from_xml(xml.RetentionPolicy) end end |
#logging_to_xml(logging, xml) ⇒ Object
183 184 185 186 187 188 189 190 191 |
# File 'lib/azure/service/serialization.rb', line 183 def logging_to_xml(logging, xml) xml.Logging { xml.Version logging.version if logging.version xml.Delete logging.delete unless logging.delete == nil xml.Read logging.read unless logging.read == nil xml.Write logging.write unless logging.write == nil retention_policy_to_xml(logging.retention_policy, xml) if logging.retention_policy } end |
#metadata_from_headers(headers) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/azure/service/serialization.rb', line 119 def (headers) = {} headers.each { |k, v| if key = k[/^x-ms-meta-(.*)/, 1] if .has_key? key [key] = [[key]] unless [key].respond_to? :push [key].push(v) else [key] = v end end } end |
#metadata_from_xml(xml) ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/azure/service/serialization.rb', line 100 def (xml) xml = slopify(xml) expect_node("Metadata", xml) = {} xml.children.each { || key = .name.downcase if .has_key? key [key] = [[key]] unless [key].respond_to? :push [key].push(.text) else [key] = .text end } end |
#metrics_from_xml(xml) ⇒ Object
172 173 174 175 176 177 178 179 180 181 |
# File 'lib/azure/service/serialization.rb', line 172 def metrics_from_xml(xml) xml = slopify(xml) Metrics.new do |metrics| metrics.version = xml.Version.text if (xml > "Version").any? metrics.enabled = to_bool(xml.Enabled.text) if (xml > "Enabled").any? metrics.include_apis = to_bool(xml.IncludeAPIs.text) if (xml > "IncludeAPIs").any? metrics.retention_policy = retention_policy_from_xml(xml.RetentionPolicy) end end |
#metrics_to_xml_children(metrics, xml) ⇒ Object
153 154 155 156 157 158 |
# File 'lib/azure/service/serialization.rb', line 153 def metrics_to_xml_children(metrics, xml) xml.Version metrics.version if metrics.version xml.Enabled metrics.enabled unless metrics.enabled == nil xml.IncludeAPIs metrics.include_apis unless metrics.include_apis == nil retention_policy_to_xml(metrics.retention_policy, xml) if metrics.retention_policy end |
#minute_metrics_to_xml(metrics, xml) ⇒ Object
166 167 168 169 170 |
# File 'lib/azure/service/serialization.rb', line 166 def minute_metrics_to_xml(metrics, xml) xml.MinuteMetrics { metrics_to_xml_children(metrics, xml) } end |
#retention_policy_from_xml(xml) ⇒ Object
143 144 145 146 147 148 149 150 151 |
# File 'lib/azure/service/serialization.rb', line 143 def retention_policy_from_xml(xml) xml = slopify(xml) expect_node("RetentionPolicy", xml) RetentionPolicy.new do |policy| policy.enabled = to_bool(xml.Enabled.text) if (xml > "Enabled").any? policy.days = xml.Days.text.to_i if (xml > "Days").any? end end |
#retention_policy_to_xml(retention_policy, xml) ⇒ Object
136 137 138 139 140 141 |
# File 'lib/azure/service/serialization.rb', line 136 def retention_policy_to_xml(retention_policy, xml) xml.RetentionPolicy { xml.Enabled retention_policy.enabled unless retention_policy.enabled == nil xml.Days retention_policy.days if retention_policy.days } end |
#service_properties_from_xml(xml) ⇒ Object
263 264 265 266 267 268 269 270 271 272 273 274 |
# File 'lib/azure/service/serialization.rb', line 263 def service_properties_from_xml(xml) xml = slopify(xml) expect_node("StorageServiceProperties", xml) StorageServiceProperties.new do |props| props.default_service_version = xml.DefaultServiceVersion.text if (xml > "DefaultServiceVersion").any? props.logging = logging_from_xml(xml.Logging) props.hour_metrics = metrics_from_xml(xml.HourMetrics) props.minute_metrics = metrics_from_xml(xml.MinuteMetrics) props.cors = cors_from_xml(xml.Cors) end end |
#service_properties_to_xml(properties) ⇒ Object
250 251 252 253 254 255 256 257 258 259 260 261 |
# File 'lib/azure/service/serialization.rb', line 250 def service_properties_to_xml(properties) builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml| xml.StorageServiceProperties { xml.DefaultServiceVersion(properties.default_service_version) if properties.default_service_version logging_to_xml(properties.logging, xml) if properties.logging hour_metrics_to_xml(properties.hour_metrics, xml) if properties.hour_metrics minute_metrics_to_xml(properties.minute_metrics, xml) if properties.minute_metrics cors_to_xml(properties.cors, xml) if properties.cors } end builder.to_xml end |
#signed_identifier_from_xml(xml) ⇒ Object
69 70 71 72 73 74 75 76 77 |
# File 'lib/azure/service/serialization.rb', line 69 def signed_identifier_from_xml(xml) xml = slopify(xml) expect_node("SignedIdentifier", xml) SignedIdentifier.new do |identifier| identifier.id = xml.Id.text if (xml > "Id").any? identifier.access_policy = access_policy_from_xml(xml.AccessPolicy) if (xml > "AccessPolicy").any? end end |
#signed_identifiers_from_xml(xml) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/azure/service/serialization.rb', line 33 def signed_identifiers_from_xml(xml) xml = slopify(xml) expect_node("SignedIdentifiers", xml) identifiers = [] return identifiers unless (xml > "SignedIdentifier").any? if xml.SignedIdentifier.count == 0 identifiers.push(signed_identifier_from_xml(xml.SignedIdentifier)) else xml.SignedIdentifier.each { |identifier_node| identifiers.push(signed_identifier_from_xml(identifier_node)) } end identifiers end |
#signed_identifiers_to_xml(signed_identifiers) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/azure/service/serialization.rb', line 51 def signed_identifiers_to_xml(signed_identifiers) builder = Nokogiri::XML::Builder.new(:encoding=>"utf-8") do |xml| xml.SignedIdentifiers { signed_identifiers.each do |identifier| xml.SignedIdentifier { xml.Id identifier.id xml.AccessPolicy { xml.Start identifier.access_policy.start xml.Expiry identifier.access_policy.expiry xml.Permission identifier.access_policy. } } end } end builder.to_xml end |
#slopify(xml) ⇒ Object
280 281 282 283 284 285 |
# File 'lib/azure/service/serialization.rb', line 280 def slopify(xml) node = (xml.is_a? String) ? Nokogiri.Slop(xml).root : xml node.slop! if node.is_a? Nokogiri::XML::Document unless node.respond_to? :method_missing node = node.root if node.is_a? Nokogiri::XML::Document node end |
#to_bool(s) ⇒ Object
276 277 278 |
# File 'lib/azure/service/serialization.rb', line 276 def to_bool(s) (s || "").downcase == 'true' end |