azure 0.1.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/ChangeLog.txt +5 -0
  4. data/Gemfile +16 -3
  5. data/README.md +344 -2
  6. data/Rakefile +66 -37
  7. data/azure.gemspec +30 -11
  8. data/lib/azure.rb +35 -4
  9. data/lib/azure/blob/blob.rb +32 -0
  10. data/lib/azure/blob/blob_service.rb +1423 -0
  11. data/lib/azure/blob/block.rb +31 -0
  12. data/lib/azure/blob/container.rb +32 -0
  13. data/lib/azure/blob/serialization.rb +285 -0
  14. data/lib/azure/core.rb +32 -0
  15. data/lib/azure/core/auth/authorizer.rb +36 -0
  16. data/lib/azure/core/auth/shared_key.rb +21 -6
  17. data/lib/azure/core/auth/shared_key_lite.rb +17 -3
  18. data/lib/azure/core/auth/signer.rb +48 -0
  19. data/lib/azure/core/configuration.rb +152 -0
  20. data/lib/azure/core/error.rb +22 -0
  21. data/lib/azure/core/filtered_service.rb +44 -0
  22. data/lib/azure/core/http/debug_filter.rb +36 -0
  23. data/lib/azure/core/http/http_error.rb +84 -0
  24. data/lib/azure/core/http/http_filter.rb +53 -0
  25. data/lib/azure/core/http/http_request.rb +157 -0
  26. data/lib/azure/core/http/http_response.rb +133 -0
  27. data/lib/azure/core/http/retry_policy.rb +68 -0
  28. data/lib/azure/core/http/signer_filter.rb +34 -0
  29. data/lib/azure/core/service.rb +38 -32
  30. data/lib/azure/core/signed_service.rb +43 -0
  31. data/lib/azure/queue/message.rb +30 -0
  32. data/lib/azure/queue/queue.rb +29 -0
  33. data/lib/azure/queue/queue_service.rb +568 -0
  34. data/lib/azure/queue/serialization.rb +103 -0
  35. data/lib/azure/service/access_policy.rb +26 -0
  36. data/lib/azure/service/enumeration_results.rb +21 -0
  37. data/lib/azure/service/logging.rb +32 -0
  38. data/lib/azure/service/metrics.rb +31 -0
  39. data/lib/azure/service/retention_policy.rb +25 -0
  40. data/lib/azure/service/serialization.rb +240 -0
  41. data/lib/azure/service/signed_identifier.rb +30 -0
  42. data/lib/azure/service/storage_service.rb +79 -0
  43. data/lib/azure/service/storage_service_properties.rb +32 -0
  44. data/lib/azure/service_bus/action.rb +21 -0
  45. data/lib/azure/service_bus/auth/wrap_service.rb +59 -46
  46. data/lib/azure/service_bus/auth/wrap_signer.rb +69 -0
  47. data/lib/azure/service_bus/brokered_message.rb +36 -51
  48. data/lib/azure/service_bus/brokered_message_serializer.rb +48 -34
  49. data/lib/azure/service_bus/correlation_filter.rb +45 -0
  50. data/lib/azure/service_bus/empty_rule_action.rb +30 -0
  51. data/lib/azure/service_bus/false_filter.rb +38 -0
  52. data/lib/azure/service_bus/filter.rb +21 -0
  53. data/lib/azure/{core/utils → service_bus}/interval.rb +29 -22
  54. data/lib/azure/service_bus/queue.rb +230 -0
  55. data/lib/azure/service_bus/resource.rb +109 -0
  56. data/lib/azure/service_bus/rule.rb +98 -0
  57. data/lib/azure/service_bus/rule_aspect.rb +34 -0
  58. data/lib/azure/service_bus/serialization.rb +160 -0
  59. data/lib/azure/service_bus/service_bus_service.rb +819 -12
  60. data/lib/azure/service_bus/sql_filter.rb +50 -0
  61. data/lib/azure/service_bus/sql_rule_action.rb +50 -0
  62. data/lib/azure/service_bus/subscription.rb +184 -0
  63. data/lib/azure/service_bus/topic.rb +187 -0
  64. data/lib/azure/service_bus/true_filter.rb +38 -0
  65. data/lib/azure/{tables → table}/auth/shared_key.rb +33 -12
  66. data/lib/azure/table/auth/shared_key_lite.rb +44 -0
  67. data/lib/azure/table/batch.rb +330 -0
  68. data/lib/azure/table/batch_response.rb +117 -0
  69. data/lib/azure/table/edmtype.rb +127 -0
  70. data/lib/azure/table/entity.rb +31 -0
  71. data/lib/azure/table/guid.rb +24 -0
  72. data/lib/azure/table/query.rb +112 -0
  73. data/lib/azure/table/serialization.rb +105 -0
  74. data/lib/azure/table/table_service.rb +557 -0
  75. data/lib/azure/version.rb +31 -0
  76. data/test/fixtures/container_acl.xml +11 -0
  77. data/test/fixtures/{error.xml → http_error.xml} +0 -0
  78. data/test/fixtures/list_blobs.xml +121 -0
  79. data/test/fixtures/list_block_all_with_none_committed.xml +22 -0
  80. data/test/fixtures/list_blocks_all.xml +23 -0
  81. data/test/fixtures/list_blocks_committed.xml +13 -0
  82. data/test/fixtures/list_containers.xml +38 -0
  83. data/test/fixtures/list_page_ranges.xml +11 -0
  84. data/test/fixtures/logging.xml +11 -0
  85. data/test/fixtures/metrics.xml +10 -0
  86. data/test/fixtures/queues.xml +1 -1
  87. data/test/fixtures/retention_policy.xml +5 -0
  88. data/test/fixtures/storage_service_properties.xml +23 -0
  89. data/test/integration/blob/blob_metadata_test.rb +75 -0
  90. data/test/integration/blob/blob_pages_test.rb +119 -0
  91. data/test/integration/blob/blob_properties_test.rb +77 -0
  92. data/test/integration/blob/block_blob_test.rb +254 -0
  93. data/test/integration/blob/container/container_acl_test.rb +69 -0
  94. data/test/integration/blob/container/container_metadata_test.rb +50 -0
  95. data/test/integration/blob/container/create_container_test.rb +60 -0
  96. data/test/integration/blob/container/delete_container_test.rb +39 -0
  97. data/test/integration/blob/container/get_container_properties_test.rb +48 -0
  98. data/test/integration/blob/container/list_containers_test.rb +79 -0
  99. data/test/integration/blob/container/root_container_test.rb +50 -0
  100. data/test/integration/blob/copy_blob_test.rb +113 -0
  101. data/test/integration/blob/create_blob_snapshot_test.rb +80 -0
  102. data/test/integration/blob/create_page_blob_test.rb +83 -0
  103. data/test/integration/blob/delete_blob_test.rb +159 -0
  104. data/test/integration/blob/get_blob_test.rb +65 -0
  105. data/test/integration/blob/informative_errors_test.rb +39 -0
  106. data/test/integration/blob/lease/acquire_lease_test.rb +36 -0
  107. data/test/integration/blob/lease/break_lease_test.rb +40 -0
  108. data/test/integration/blob/lease/release_lease_test.rb +40 -0
  109. data/test/integration/blob/lease/renew_lease_test.rb +42 -0
  110. data/test/integration/blob/list_blobs_test.rb +113 -0
  111. data/test/integration/queue/clear_messages_test.rb +42 -0
  112. data/test/integration/queue/create_message_test.rb +75 -0
  113. data/test/integration/queue/create_queue_test.rb +50 -0
  114. data/test/integration/queue/delete_message_test.rb +67 -0
  115. data/test/integration/queue/delete_queue_test.rb +45 -0
  116. data/test/integration/queue/informative_errors_test.rb +42 -0
  117. data/test/integration/queue/list_messages_encoded_test.rb +79 -0
  118. data/test/integration/queue/list_messages_test.rb +79 -0
  119. data/test/integration/queue/list_queues_test.rb +44 -0
  120. data/test/integration/queue/peek_messages_test.rb +59 -0
  121. data/test/integration/queue/queue_metadata_test.rb +40 -0
  122. data/test/integration/queue/update_message_test.rb +74 -0
  123. data/test/integration/service_bus/informative_errors_test.rb +37 -0
  124. data/test/integration/service_bus/queues_scenario_test.rb +200 -0
  125. data/test/integration/service_bus/queues_test.rb +266 -0
  126. data/test/integration/service_bus/rules_test.rb +145 -0
  127. data/test/integration/service_bus/scenario_test.rb +102 -0
  128. data/test/integration/service_bus/subscriptions_test.rb +211 -0
  129. data/test/integration/service_bus/topics_scenario_test.rb +406 -0
  130. data/test/integration/service_bus/topics_test.rb +129 -0
  131. data/test/integration/table/create_table_test.rb +36 -0
  132. data/test/integration/table/delete_entity_batch_test.rb +107 -0
  133. data/test/integration/table/delete_entity_test.rb +94 -0
  134. data/test/integration/table/delete_table_test.rb +40 -0
  135. data/test/integration/table/get_table_test.rb +37 -0
  136. data/test/integration/table/informative_errors_test.rb +39 -0
  137. data/test/integration/table/insert_entity_batch_test.rb +100 -0
  138. data/test/integration/table/insert_entity_test.rb +88 -0
  139. data/test/integration/table/insert_or_merge_entity_batch_test.rb +159 -0
  140. data/test/integration/table/insert_or_merge_entity_test.rb +143 -0
  141. data/test/integration/table/insert_or_replace_entity_batch_test.rb +152 -0
  142. data/test/integration/table/insert_or_replace_entity_test.rb +137 -0
  143. data/test/integration/table/merge_entity_batch_test.rb +128 -0
  144. data/test/integration/table/merge_entity_test.rb +113 -0
  145. data/test/integration/table/query_entities_test.rb +195 -0
  146. data/test/integration/table/query_tables_test.rb +43 -0
  147. data/test/integration/table/query_test.rb +251 -0
  148. data/test/integration/table/table_acl_test.rb +52 -0
  149. data/test/integration/table/update_entity_batch_test.rb +149 -0
  150. data/test/integration/table/update_entity_test.rb +131 -0
  151. data/test/integration/test_helper.rb +23 -9
  152. data/test/support/env.rb +15 -1
  153. data/test/support/fixtures.rb +14 -0
  154. data/test/support/name_generator.rb +74 -0
  155. data/test/support/stubs.rb +14 -0
  156. data/test/test_helper.rb +43 -3
  157. data/test/unit/blob/blob_service_test.rb +1947 -0
  158. data/test/unit/core/auth/shared_key_lite_test.rb +51 -0
  159. data/test/unit/core/auth/shared_key_test.rb +58 -0
  160. data/test/unit/core/auth/signer_test.rb +30 -0
  161. data/test/unit/core/http/http_error_test.rb +57 -0
  162. data/test/unit/core/http/http_request_test.rb +66 -0
  163. data/test/unit/core/http/http_response_test.rb +45 -0
  164. data/test/unit/service/serialization_test.rb +502 -0
  165. data/test/unit/service/storage_service_test.rb +291 -0
  166. data/test/unit/table/edmtype_test.rb +108 -0
  167. metadata +231 -230
  168. data/Gemfile.lock +0 -36
  169. data/lib/azure/atom.rb +0 -170
  170. data/lib/azure/auth.rb +0 -29
  171. data/lib/azure/blobs.rb +0 -620
  172. data/lib/azure/blobs/blob.rb +0 -360
  173. data/lib/azure/blobs/container.rb +0 -209
  174. data/lib/azure/blobs/service.rb +0 -396
  175. data/lib/azure/blobs/shared_access_signature.rb +0 -84
  176. data/lib/azure/blobs/uri.rb +0 -60
  177. data/lib/azure/configuration.rb +0 -121
  178. data/lib/azure/core/collection.rb +0 -118
  179. data/lib/azure/core/signer.rb +0 -32
  180. data/lib/azure/core/utils/queryable.rb +0 -74
  181. data/lib/azure/core/utils/storage_service_properties.rb +0 -83
  182. data/lib/azure/core/utils/string.rb +0 -59
  183. data/lib/azure/error.rb +0 -72
  184. data/lib/azure/queues.rb +0 -272
  185. data/lib/azure/queues/message.rb +0 -174
  186. data/lib/azure/queues/queue.rb +0 -187
  187. data/lib/azure/queues/service.rb +0 -263
  188. data/lib/azure/queues/service_properties.rb +0 -152
  189. data/lib/azure/queues/uri.rb +0 -78
  190. data/lib/azure/request.rb +0 -102
  191. data/lib/azure/response.rb +0 -93
  192. data/lib/azure/service_bus.rb +0 -4
  193. data/lib/azure/service_bus/auth/authorizer.rb +0 -22
  194. data/lib/azure/service_bus/auth/uri.rb +0 -52
  195. data/lib/azure/service_bus/auth/wrap.rb +0 -37
  196. data/lib/azure/service_bus/auth/wrap_token.rb +0 -45
  197. data/lib/azure/service_bus/auth/wrap_token_manager.rb +0 -46
  198. data/lib/azure/service_bus/queues.rb +0 -194
  199. data/lib/azure/service_bus/queues/queue.rb +0 -100
  200. data/lib/azure/service_bus/queues/queue_serializer.rb +0 -51
  201. data/lib/azure/service_bus/queues/service.rb +0 -154
  202. data/lib/azure/service_bus/queues/uri.rb +0 -80
  203. data/lib/azure/service_bus/rules.rb +0 -110
  204. data/lib/azure/service_bus/rules/rule.rb +0 -97
  205. data/lib/azure/service_bus/rules/service.rb +0 -122
  206. data/lib/azure/service_bus/rules/uri.rb +0 -39
  207. data/lib/azure/service_bus/subscriptions.rb +0 -170
  208. data/lib/azure/service_bus/subscriptions/service.rb +0 -133
  209. data/lib/azure/service_bus/subscriptions/subscription.rb +0 -164
  210. data/lib/azure/service_bus/subscriptions/subscription_serializer.rb +0 -74
  211. data/lib/azure/service_bus/subscriptions/uri.rb +0 -71
  212. data/lib/azure/service_bus/topics.rb +0 -120
  213. data/lib/azure/service_bus/topics/service.rb +0 -98
  214. data/lib/azure/service_bus/topics/topic.rb +0 -122
  215. data/lib/azure/service_bus/topics/topic_serializer.rb +0 -44
  216. data/lib/azure/service_bus/topics/uri.rb +0 -58
  217. data/lib/azure/service_runtime/client/goal_state_pipe_monitor.rb +0 -21
  218. data/lib/azure/service_runtime/client/goal_state_protocol.rb +0 -18
  219. data/lib/azure/service_runtime/client/runtime_client.rb +0 -135
  220. data/lib/azure/service_runtime/deployment.rb +0 -24
  221. data/lib/azure/service_runtime/local_resource.rb +0 -15
  222. data/lib/azure/service_runtime/role.rb +0 -17
  223. data/lib/azure/service_runtime/role_environment.rb +0 -206
  224. data/lib/azure/service_runtime/role_environment_change.rb +0 -32
  225. data/lib/azure/service_runtime/role_instance.rb +0 -35
  226. data/lib/azure/service_runtime/role_instance_endpoint.rb +0 -14
  227. data/lib/azure/tables.rb +0 -215
  228. data/lib/azure/tables/auth/shared_key_lite.rb +0 -30
  229. data/lib/azure/tables/entities_collection.rb +0 -66
  230. data/lib/azure/tables/entity.rb +0 -127
  231. data/lib/azure/tables/service.rb +0 -211
  232. data/lib/azure/tables/table.rb +0 -129
  233. data/lib/azure/tables/tables_collection.rb +0 -62
  234. data/lib/azure/tables/types.rb +0 -65
  235. data/lib/azure/tables/uri.rb +0 -62
  236. data/test/integration/blobs/auth_test.rb +0 -19
  237. data/test/integration/blobs/blob_test.rb +0 -61
  238. data/test/integration/blobs/clear_page_range_test.rb +0 -19
  239. data/test/integration/blobs/copy_test.rb +0 -33
  240. data/test/integration/blobs/create_blobs_test.rb +0 -51
  241. data/test/integration/blobs/create_container_test.rb +0 -13
  242. data/test/integration/blobs/create_snapshot_test.rb +0 -17
  243. data/test/integration/blobs/delete_blob_snapshots_test.rb +0 -19
  244. data/test/integration/blobs/delete_blobs_test.rb +0 -25
  245. data/test/integration/blobs/delete_container_test.rb +0 -24
  246. data/test/integration/blobs/delete_snapshot_test.rb +0 -17
  247. data/test/integration/blobs/get_blob_snapshot_test.rb +0 -18
  248. data/test/integration/blobs/get_blobs_test.rb +0 -31
  249. data/test/integration/blobs/get_page_range_test.rb +0 -19
  250. data/test/integration/blobs/list_blobs_test.rb +0 -39
  251. data/test/integration/blobs/list_containers_test.rb +0 -28
  252. data/test/integration/blobs/manage_blob_leases_test.rb +0 -45
  253. data/test/integration/blobs/manage_blob_metadata_test.rb +0 -51
  254. data/test/integration/blobs/manage_blob_properties_test.rb +0 -25
  255. data/test/integration/blobs/manage_blob_service_properties_test.rb +0 -38
  256. data/test/integration/blobs/manage_container_metadata_test.rb +0 -46
  257. data/test/integration/blobs/manage_container_permissions_test.rb +0 -17
  258. data/test/integration/blobs/update_page_range_test.rb +0 -20
  259. data/test/integration/queues/clear_messages_test.rb +0 -22
  260. data/test/integration/queues/create_queue_test.rb +0 -13
  261. data/test/integration/queues/delete_message_test.rb +0 -42
  262. data/test/integration/queues/delete_queue_test.rb +0 -24
  263. data/test/integration/queues/get_messages_test.rb +0 -39
  264. data/test/integration/queues/list_queues_test.rb +0 -43
  265. data/test/integration/queues/manage_queue_metadata_test.rb +0 -45
  266. data/test/integration/queues/manage_queue_service_properties_test.rb +0 -27
  267. data/test/integration/queues/peek_messages_test.rb +0 -55
  268. data/test/integration/queues/put_message_test.rb +0 -31
  269. data/test/integration/queues/update_message_test.rb +0 -46
  270. data/test/integration/service_bus/auth_test.rb +0 -18
  271. data/test/integration/service_bus/queues/create_queue_test.rb +0 -25
  272. data/test/integration/service_bus/queues/delete_message_from_queue_test.rb +0 -29
  273. data/test/integration/service_bus/queues/delete_queue_test.rb +0 -25
  274. data/test/integration/service_bus/queues/get_queue_test.rb +0 -23
  275. data/test/integration/service_bus/queues/list_queues_test.rb +0 -39
  276. data/test/integration/service_bus/queues/peek_message_from_queue_test.rb +0 -34
  277. data/test/integration/service_bus/queues/read_and_delete_message_from_queue_test.rb +0 -31
  278. data/test/integration/service_bus/queues/send_message_to_queue_test.rb +0 -22
  279. data/test/integration/service_bus/queues/unlock_message_from_queue_test.rb +0 -36
  280. data/test/integration/service_bus/rules/create_rule_test.rb +0 -19
  281. data/test/integration/service_bus/rules/delete_rule_test.rb +0 -17
  282. data/test/integration/service_bus/rules/get_rule_test.rb +0 -21
  283. data/test/integration/service_bus/rules/list_rules_test.rb +0 -24
  284. data/test/integration/service_bus/rules/rule_test.rb +0 -16
  285. data/test/integration/service_bus/subscriptions/create_subscription_test.rb +0 -25
  286. data/test/integration/service_bus/subscriptions/delete_message_from_subscription_test.rb +0 -31
  287. data/test/integration/service_bus/subscriptions/delete_subscription_test.rb +0 -30
  288. data/test/integration/service_bus/subscriptions/fetch_subscription_test.rb +0 -28
  289. data/test/integration/service_bus/subscriptions/list_subscriptions_test.rb +0 -23
  290. data/test/integration/service_bus/subscriptions/peek_lock_message_from_subscription_test.rb +0 -42
  291. data/test/integration/service_bus/subscriptions/read_delete_message_from_subscription_test.rb +0 -36
  292. data/test/integration/service_bus/subscriptions/subscription_test.rb +0 -31
  293. data/test/integration/service_bus/subscriptions/unlock_message_from_subscription_test.rb +0 -43
  294. data/test/integration/service_bus/topics/create_topic_test.rb +0 -25
  295. data/test/integration/service_bus/topics/delete_topic_test.rb +0 -25
  296. data/test/integration/service_bus/topics/get_topic_test.rb +0 -23
  297. data/test/integration/service_bus/topics/list_topics_test.rb +0 -39
  298. data/test/integration/service_bus/topics/send_message_to_topic_test.rb +0 -23
  299. data/test/integration/tables/auth_test.rb +0 -29
  300. data/test/integration/tables/creating_tables_test.rb +0 -16
  301. data/test/integration/tables/delete_entity_test.rb +0 -39
  302. data/test/integration/tables/deleting_table_test.rb +0 -22
  303. data/test/integration/tables/insert_entity_test.rb +0 -23
  304. data/test/integration/tables/merge_entity_test.rb +0 -28
  305. data/test/integration/tables/query_entities_test.rb +0 -131
  306. data/test/integration/tables/query_tables_test.rb +0 -63
  307. data/test/integration/tables/update_entity_test.rb +0 -54
  308. data/test/support/blobs.rb +0 -12
  309. data/test/support/table_names.rb +0 -44
  310. data/test/unit/atom_test.rb +0 -58
  311. data/test/unit/auth_test.rb +0 -24
  312. data/test/unit/blobs/blob_test.rb +0 -5
  313. data/test/unit/blobs/container_test.rb +0 -67
  314. data/test/unit/blobs/service_test.rb +0 -17
  315. data/test/unit/blobs/shared_access_signature_test.rb +0 -66
  316. data/test/unit/blobs_test.rb +0 -156
  317. data/test/unit/core/service_test.rb +0 -57
  318. data/test/unit/core/utils/interval_test.rb +0 -70
  319. data/test/unit/core/utils/queryable_test.rb +0 -69
  320. data/test/unit/core/utils/storage_service_properties_test.rb +0 -66
  321. data/test/unit/error_test.rb +0 -39
  322. data/test/unit/queues/message_test.rb +0 -40
  323. data/test/unit/queues/queue_test.rb +0 -64
  324. data/test/unit/queues/service_properties.rb +0 -35
  325. data/test/unit/request_test.rb +0 -38
  326. data/test/unit/response_test.rb +0 -43
  327. data/test/unit/service_bus/auth/authorizer_test.rb +0 -27
  328. data/test/unit/service_bus/auth/wrap_token_test.rb +0 -28
  329. data/test/unit/service_bus/queues/queue_test.rb +0 -38
  330. data/test/unit/service_bus/topics/topic_test.rb +0 -33
  331. data/test/unit/service_runtime/data/goalstate.xml +0 -9
  332. data/test/unit/service_runtime/data/roleenvironmentdata.xml +0 -29
  333. data/test/unit/service_runtime/data/runtime.xml +0 -6
  334. data/test/unit/service_runtime/role_environment_test.rb +0 -144
  335. data/test/unit/tables/auth/shared_key_lite_test.rb +0 -39
  336. data/test/unit/tables/auth/shared_key_test.rb +0 -45
  337. data/test/unit/tables/entities_collection_test.rb +0 -39
  338. data/test/unit/tables/entity_test.rb +0 -72
  339. data/test/unit/tables/table_test.rb +0 -57
  340. data/test/unit/tables_test.rb +0 -302
  341. data/test/unit/types_test.rb +0 -67
@@ -1,211 +0,0 @@
1
- require "azure/core/service"
2
- require "azure/core/utils/queryable"
3
- require "azure/tables/auth/shared_key"
4
- require "azure/tables/auth/shared_key_lite"
5
- require "azure/tables/uri"
6
- require "azure/atom"
7
-
8
- module Azure
9
- module Tables
10
- class Service < Core::Service
11
- def initialize(signer=Azure::Tables::Auth::SharedKey.new)
12
- super(signer)
13
- end
14
- end
15
-
16
- module Services
17
- # Public: Get a list of tables from the server.
18
- class QueryTables < Service
19
- include Core::Utils::Queryable
20
-
21
- # Public: Invoke the service.
22
- #
23
- # query - A hash of options.
24
- # :filter - A string to filter results.
25
- # :top - Returns only the top n tables from the set.
26
- #
27
- # To read more about supported query filters check this link.
28
- # http://msdn.microsoft.com/en-us/library/windowsazure/dd894031
29
- #
30
- # Returns a Response.
31
- def call(query)
32
- uri = Tables::URI.collection
33
- query.delete(:select)
34
- uri.query = build_query(query)
35
- super(:get, uri) do |request|
36
- request.headers["DataServiceVersion"] = "2.0;NetFx"
37
- end
38
- end
39
- end
40
-
41
- # Public: Find a single table by name.
42
- class FetchTable < Service
43
- # Public: Invoke the service.
44
- #
45
- # name - The name of the table.
46
- #
47
- # Returns a Response.
48
- def call(name)
49
- uri = Tables::URI.table(name)
50
- super(:get, uri)
51
- end
52
- end
53
-
54
- # Public: Create a table.
55
- class CreateTable < Service
56
- # Public: Invoke the service.
57
- #
58
- # table_name - A String with the table name.
59
- #
60
- # Returns a Response.
61
- def call(table_name)
62
- body = Atom::Entry.new do |entry|
63
- entry.properties["TableName"] = table_name
64
- end
65
-
66
- super(:post, Tables::URI.collection, body.to_xml)
67
- end
68
- end
69
-
70
- # Public: Delete a table.
71
- class DeleteTable < Service
72
- # Public: Invoke the service.
73
- #
74
- # table_name - A String with the table name.
75
- #
76
- # Returns a Response.
77
- def call(table_name)
78
- super(:delete, Tables::URI.table(table_name))
79
- end
80
- end
81
-
82
- # Public: Insert an entity into a table.
83
- class InsertEntity < Service
84
- # Public: Invoke the service.
85
- #
86
- # table_name - A String with the table name.
87
- # attributes - A Hash of entity attributes. The hash *must* contain the
88
- # keys: "PartitionKey" and "RowKey".
89
- #
90
- # Returns a Response.
91
- def call(table_name, attributes)
92
- body = Atom::Entry.new do |entry|
93
- entry.updated = Time.now.utc
94
- entry.properties.merge(attributes)
95
- end
96
-
97
- super(:post, Tables::URI.entities(table_name), body.to_xml)
98
- end
99
- end
100
-
101
- # Public: Replace the attributes of an existing entity.
102
- class ReplaceEntity < Service
103
- # Public: Invoke the service.
104
- #
105
- # table_name - A String with the table name.
106
- # attributes - A Hash of entity attributes. The hash *must* contain the
107
- # keys: "PartitionKey" and "RowKey".
108
- # etag - The condition to perform the update. "*" will force an
109
- # unconditional update.
110
- #
111
- # Returns a Response.
112
- def call(table_name, attributes, etag)
113
- uri = Tables::URI.entities(
114
- table_name,
115
- attributes.fetch("PartitionKey"),
116
- attributes.fetch("RowKey")
117
- )
118
-
119
- body = Atom::Entry.new do |entry|
120
- entry.id = uri
121
- entry.updated = Time.now.utc
122
- entry.properties.merge(attributes)
123
- end
124
-
125
- super(:put, uri, body.to_xml) do |request|
126
- request.headers["If-Match"] = etag
127
- end
128
- end
129
- end
130
-
131
- # Public: Update only certain properties of an entity.
132
- class MergeEntity < Service
133
- # Public: Invoke the service.
134
- #
135
- # uri - The URI of the Entity we're updating.
136
- # attributes - A Hash of new entity attributes.
137
- # etag - The condition to perform the update. "*" will force an
138
- # unconditional update.
139
- #
140
- # Returns a Response.
141
- def call(uri, attributes, etag)
142
- body = Atom::Entry.new do |entry|
143
- entry.id = uri
144
- entry.updated = Time.now.utc
145
- entry.properties.merge(attributes)
146
- end
147
-
148
- super(:post, uri, body.to_xml) do |request|
149
- request.headers["If-Match"] = etag
150
- request.headers["X-HTTP-Method"] = "MERGE"
151
- end
152
- end
153
- end
154
-
155
- # Public: Delete an Entity
156
- class DeleteEntity < Service
157
- # Public: Invoke the service.
158
- #
159
- # uri - The URI of the Entity we're deleting.
160
- # etag - The condition to perform the update. "*" will force an
161
- # unconditional update.
162
- #
163
- # Returns a Response.
164
- def call(uri, etag)
165
- super(:delete, uri) do |request|
166
- request.headers["If-Match"] = etag
167
- end
168
- end
169
- end
170
-
171
- # Public: Get entities from a given table.
172
- class QueryEntities < Service
173
- include Core::Utils::Queryable
174
-
175
- # Public: Invoke the service.
176
- #
177
- # table_name - A String with the table name.
178
- # query - A hash of options.
179
- # :partition_key - Only get entities with this PartitionKey
180
- # (optional, but :row_key must also be
181
- # included).
182
- # :row_key - Only get entities with this RowKey
183
- # (optional, but :partition_key must also
184
- # be included).
185
- # :select - An array with property names. Only these
186
- # properties are provided from the
187
- # returned returned set of entities.
188
- # :filter - A string to filter results.
189
- # :top - Returns only the top n tables or entities from the set.
190
- #
191
- # To read more about supported query filters check this link.
192
- # http://msdn.microsoft.com/en-us/library/windowsazure/dd894031
193
- #
194
- # Returns a Response.
195
- def call(table_name, query)
196
- uri = Tables::URI.entities(
197
- table_name,
198
- query.fetch(:partition_key, nil),
199
- query.fetch(:row_key, nil)
200
- )
201
-
202
- uri.query = build_query(query)
203
-
204
- super(:get, uri) do |request|
205
- request.headers["DataServiceVersion"] = "2.0;NetFx"
206
- end
207
- end
208
- end
209
- end
210
- end
211
- end
@@ -1,129 +0,0 @@
1
- require "azure/tables"
2
- require "azure/tables/uri"
3
- require "azure/error"
4
- require "uri"
5
-
6
- module Azure
7
- module Tables
8
- # Public: Representation of a Table in the storage system.
9
- class Table
10
- include Azure::ErrorHandler
11
-
12
- # Get the Table's URI.
13
- #
14
- # Returns a URI.
15
- attr :url
16
-
17
- # Get the Table's name.
18
- #
19
- # Returns a String.
20
- attr :name
21
-
22
- # Public: Instantiate a table from an Atom entry.
23
- #
24
- # entry - An Atom::Entry element.
25
- #
26
- # Returns a Table.
27
- def self.from_entry(entry)
28
- name = entry.content.m_properties.children.first.content
29
- new(name, ::URI.parse(entry.id))
30
- end
31
-
32
- # Public: Instantiate a table from an error object.
33
- #
34
- # error - An Azure::Error.
35
- #
36
- # Returns a Table.
37
- def self.from_error(error)
38
- table = new(nil, nil)
39
- table.error = error
40
- table
41
- end
42
-
43
- # Public: Create a Table. The resulting table will be invalid if the
44
- # create operation fails.
45
- #
46
- # name - The name of the table.
47
- # service - The Table service to perform external calls.
48
- #
49
- # Returns a Table.
50
- def self.create(name, service=Azure::Tables)
51
- service.create(name)
52
- end
53
-
54
- # Public: Find a Table by name. If no table matches the provided name, nil
55
- # is returned.
56
- #
57
- # name - The name of the table.
58
- #
59
- # Returns a Table or nil.
60
- def self.[](name)
61
- fetch(name) { nil }
62
- end
63
-
64
- # Public: Find a Table by name. If no table matches the provided name,
65
- # execute the given block, or raise ArgumentError.
66
- #
67
- # name - The name of the table.
68
- # service - The Table service to perform external calls.
69
- #
70
- # Yields the error returned by the server in case the table wasn't found.
71
- #
72
- # Returns a Table.
73
- # Raises ArgumentError if the table isn't found and no block is given.
74
- def self.fetch(name, service=Azure::Tables, &block)
75
- block ||= -> { raise ArgumentError, "Can't find Table named '#{name}'" }
76
- table = service.fetch(name)
77
- table.valid? ? table : block.call(table.error)
78
- end
79
-
80
- # Public: Initialize the table.
81
- #
82
- # name - A String with the name of the table.
83
- # url - The URI of the table in the service.
84
- # service - The Table service to perform external calls.
85
- def initialize(name, url=Azure::Tables::URI.table(name), service=Azure::Tables)
86
- @name = name
87
- @url = url
88
- @service = service
89
- end
90
-
91
- # Public: Compare two tables to see if they are the same.
92
- #
93
- # other - A table.
94
- #
95
- # Returns true|false.
96
- def ==(other)
97
- name == other.name
98
- end
99
-
100
- # Public: Deletes this table from the storage service.
101
- #
102
- # Returns true|false to indicate whether the delete was successful or not.
103
- def delete
104
- @service.delete(self)
105
- end
106
-
107
- # Public: Insert a new entity into this table. If the operation fails, an
108
- # error will be added to the entity.
109
- #
110
- # entity - An Azure::Tables::Entity.
111
- #
112
- # Returns the entity.
113
- def insert(entity)
114
- @service.insert_entity(self, entity)
115
- end
116
-
117
- # Public: Query for entities in this table.
118
- #
119
- # Returns a list of entities.
120
- def entities(query={})
121
- if query.key?(:partition_key) && query.key?(:row_key)
122
- @service.query_entity(self, query.delete(:partition_key), query.delete(:row_key), query)
123
- else
124
- @service.query_entities(self, query)
125
- end
126
- end
127
- end
128
- end
129
- end
@@ -1,62 +0,0 @@
1
- require "azure/tables"
2
-
3
- module Azure
4
- module Tables
5
-
6
- class TablesCollection < Array
7
-
8
- # Public: Create an Azure::Tables::TablesCollection instance.
9
- #
10
- # query - A Hash with the query options passed to the server to get the tables.
11
- #
12
- # Returns the instance.
13
- def initialize(query = {}, service = Azure::Tables)
14
- @query = query
15
- @service = service
16
- end
17
-
18
- # Public: Creates an Azure::Tables::TablesCollection from entries feed.
19
- #
20
- # entries - An array of xml entries.
21
- # query - A Hash with the query options passed to the server to get the tables.
22
- #
23
- # Returns an instance of Azure::Tables::EntitiesCollection.
24
- def self.from_entries(entries, query = {}, service = Azure::Tables)
25
- collection = self.new(query, service)
26
-
27
- entries.each do |entry|
28
- collection << Table.from_entry(entry)
29
- end
30
-
31
- collection
32
- end
33
-
34
- # Public: Set continuation tokens for this collection
35
- def continuation_token(next_table_name)
36
- @next_table_name = next_table_name
37
- end
38
-
39
- # Public: Indicates if the collection is a paginated result.
40
- # http://msdn.microsoft.com/en-us/library/windowsazure/dd135718
41
- #
42
- # Returs boolean.
43
- def paginated?
44
- @next_table_name ? true : false
45
- end
46
-
47
- # Public: Returns continuation results if exists.
48
- #
49
- # Returns an instance of Azure::Tables::TablesCollection
50
- def next
51
- return nil if !paginated?
52
-
53
- query = @query.merge({
54
- "NextTableName" => @next_table_name
55
- })
56
-
57
- @service.all(query)
58
- end
59
-
60
- end
61
- end
62
- end
@@ -1,65 +0,0 @@
1
- require "time"
2
- require "date"
3
- require "delegate"
4
-
5
- module Azure
6
- module Tables
7
- module Types
8
- # Public: Get the type of an object.
9
- #
10
- # value - An Object.
11
- #
12
- # Returns a String.
13
- def self.type_of(value)
14
- case value
15
- when Float
16
- "Edm.Double"
17
- when Date, Time, DateTime
18
- "Edm.DateTime"
19
- when Integer
20
- value.abs < 2**31 ? "Edm.Int32" : "Edm.Int64"
21
- when TrueClass, FalseClass
22
- "Edm.Boolean"
23
- when GUID
24
- "Edm.Guid"
25
- else
26
- "Edm.String"
27
- end
28
- end
29
-
30
- # Public: Convert a raw value (as a String) into an object of the proper
31
- # type.
32
- #
33
- # value - A String serialization of an object.
34
- # type - A String with the Edm datatype.
35
- #
36
- # Returns an Object.
37
- def self.cast(serialized, type)
38
- case type
39
- when "Edm.Double"
40
- Float(serialized)
41
- when "Edm.DateTime"
42
- Time.parse(serialized)
43
- when "Edm.Int32", "Edm.Int64"
44
- Integer(serialized)
45
- when "Edm.Boolean"
46
- /true/i === serialized
47
- else
48
- serialized.to_s
49
- end
50
- end
51
- end
52
-
53
- # Public: Wrapper around strings to represent GUIDs in the Azure Platform.
54
- #
55
- # Example
56
- #
57
- # entity = Azure::Tables::Entity.new(
58
- # "PartitionKey" => "part1",
59
- # "RowKey" => "row1",
60
- # "Id" => Azure::Tables::GUID.new("123456-123123123-123123")
61
- # )
62
- class GUID < SimpleDelegator
63
- end
64
- end
65
- end