mailroute 0.0.1

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 (190) hide show
  1. data/.gitignore +18 -0
  2. data/.ruby-gemset +1 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +6 -0
  6. data/Gemfile.lock +87 -0
  7. data/Guardfile +11 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +57 -0
  10. data/Rakefile +42 -0
  11. data/lib/mailroute.rb +34 -0
  12. data/lib/mailroute/check_connection.rb +21 -0
  13. data/lib/mailroute/configuration.rb +24 -0
  14. data/lib/mailroute/extensions/active_resource/better_connection_error.rb +10 -0
  15. data/lib/mailroute/extensions/active_resource/formats.rb +19 -0
  16. data/lib/mailroute/extensions/active_resource/has_many.rb +13 -0
  17. data/lib/mailroute/extensions/active_resource/has_one.rb +13 -0
  18. data/lib/mailroute/extensions/active_resource/meta_information.rb +20 -0
  19. data/lib/mailroute/extensions/active_resource/urls_without_json_extension.rb +29 -0
  20. data/lib/mailroute/extensions/object.rb +3 -0
  21. data/lib/mailroute/extensions/relation.rb +59 -0
  22. data/lib/mailroute/models/admin.rb +21 -0
  23. data/lib/mailroute/models/base.rb +193 -0
  24. data/lib/mailroute/models/branding_info.rb +5 -0
  25. data/lib/mailroute/models/customer.rb +10 -0
  26. data/lib/mailroute/models/customer_contact.rb +6 -0
  27. data/lib/mailroute/models/domain.rb +56 -0
  28. data/lib/mailroute/models/domain_alias.rb +6 -0
  29. data/lib/mailroute/models/domain_contact.rb +6 -0
  30. data/lib/mailroute/models/email_account.rb +53 -0
  31. data/lib/mailroute/models/email_account_contact.rb +6 -0
  32. data/lib/mailroute/models/mail_server.rb +6 -0
  33. data/lib/mailroute/models/notification_account_task.rb +24 -0
  34. data/lib/mailroute/models/notification_domain_task.rb +6 -0
  35. data/lib/mailroute/models/outbound_server.rb +6 -0
  36. data/lib/mailroute/models/policy_domain.rb +6 -0
  37. data/lib/mailroute/models/policy_user.rb +6 -0
  38. data/lib/mailroute/models/reseller.rb +10 -0
  39. data/lib/mailroute/models/reseller_contact.rb +6 -0
  40. data/lib/mailroute/models/wblist.rb +7 -0
  41. data/lib/mailroute/version.rb +3 -0
  42. data/mailroute.gemspec +33 -0
  43. data/spec/lib/check_connection_spec.rb +43 -0
  44. data/spec/lib/configuration_spec.rb +17 -0
  45. data/spec/lib/mailroute/models/admin_spec.rb +13 -0
  46. data/spec/lib/mailroute/models/base_spec.rb +21 -0
  47. data/spec/lib/mailroute/models/customer_contact_spec.rb +32 -0
  48. data/spec/lib/mailroute/models/customer_spec.rb +244 -0
  49. data/spec/lib/mailroute/models/domain_alias_spec.rb +27 -0
  50. data/spec/lib/mailroute/models/domain_contact_spec.rb +32 -0
  51. data/spec/lib/mailroute/models/domain_spec.rb +215 -0
  52. data/spec/lib/mailroute/models/email_account_contact_spec.rb +32 -0
  53. data/spec/lib/mailroute/models/email_account_spec.rb +123 -0
  54. data/spec/lib/mailroute/models/mail_server_spec.rb +27 -0
  55. data/spec/lib/mailroute/models/notification_account_task_spec.rb +36 -0
  56. data/spec/lib/mailroute/models/notification_domain_task_spec.rb +19 -0
  57. data/spec/lib/mailroute/models/outbound_server_spec.rb +24 -0
  58. data/spec/lib/mailroute/models/reseller_contact_spec.rb +32 -0
  59. data/spec/lib/mailroute/models/reseller_spec.rb +297 -0
  60. data/spec/lib/mailroute/models/wblist_spec.rb +46 -0
  61. data/spec/spec_helper.rb +26 -0
  62. data/spec/support/custom_matchers.rb +5 -0
  63. data/spec/support/mailroute_configuration_helper.rb +9 -0
  64. data/spec/vcr_cassettes/Mailroute/_check_connection/when_configured_with_correct_credentials/should_return_true.yml +41 -0
  65. data/spec/vcr_cassettes/Mailroute/_check_connection/when_configured_with_incorrect_credentials/should_raise_Unauthorized_error.yml +38 -0
  66. data/spec/vcr_cassettes/Mailroute_Admin/basic_operations/should_perform_basic_read_operations.yml +38 -0
  67. data/spec/vcr_cassettes/Mailroute_Customer/_admins/should_return_a_list_of_its_admins.yml +41 -0
  68. data/spec/vcr_cassettes/Mailroute_Customer/_branding_info/should_return_its_branding_info.yml +79 -0
  69. data/spec/vcr_cassettes/Mailroute_Customer/_contacts/should_return_a_list_of_its_contacts.yml +41 -0
  70. data/spec/vcr_cassettes/Mailroute_Customer/_create_admin/.yml +80 -0
  71. data/spec/vcr_cassettes/Mailroute_Customer/_create_admin/should_be_in_the_list_of_the_customer_s_admins.yml +118 -0
  72. data/spec/vcr_cassettes/Mailroute_Customer/_create_admin/should_have_an_id.yml +80 -0
  73. data/spec/vcr_cassettes/Mailroute_Customer/_create_contact/.yml +80 -0
  74. data/spec/vcr_cassettes/Mailroute_Customer/_create_contact/should_have_a_link_to_the_customer.yml +118 -0
  75. data/spec/vcr_cassettes/Mailroute_Customer/_create_contact/should_save_a_new_contact.yml +118 -0
  76. data/spec/vcr_cassettes/Mailroute_Customer/_create_contact/should_save_the_attributes.yml +118 -0
  77. data/spec/vcr_cassettes/Mailroute_Customer/_create_domain/.yml +80 -0
  78. data/spec/vcr_cassettes/Mailroute_Customer/_create_domain/should_have_a_link_to_the_customer.yml +118 -0
  79. data/spec/vcr_cassettes/Mailroute_Customer/_create_domain/should_save_a_new_domain.yml +118 -0
  80. data/spec/vcr_cassettes/Mailroute_Customer/_create_domain/should_save_the_attributes.yml +118 -0
  81. data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_a_reseller_object/should_be_created_with_reseller.yml +118 -0
  82. data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_a_reseller_object/should_have_id.yml +80 -0
  83. data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_referenced_via_id/should_be_created_with_reseller.yml +118 -0
  84. data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_referenced_via_id/should_have_id.yml +80 -0
  85. data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_referenced_via_name/should_be_created_with_reseller.yml +156 -0
  86. data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_referenced_via_name/should_have_id.yml +118 -0
  87. data/spec/vcr_cassettes/Mailroute_Customer/_delete_admin/when_deleting_an_existing_admin/should_not_be_in_the_list_of_the_customer_s_admins.yml +152 -0
  88. data/spec/vcr_cassettes/Mailroute_Customer/_delete_admin/when_deleting_an_existing_admin/should_not_delete_all_admins.yml +152 -0
  89. data/spec/vcr_cassettes/Mailroute_Customer/_delete_admin/when_trying_to_delete_admin_which_do_not_exist/should_not_fail.yml +79 -0
  90. data/spec/vcr_cassettes/Mailroute_Customer/_domains/should_return_a_list_of_its_domains.yml +79 -0
  91. data/spec/vcr_cassettes/Mailroute_Customer/_filter/by_name/should_return_cusomers_with_a_given_name.yml +41 -0
  92. data/spec/vcr_cassettes/Mailroute_Customer/_filter/by_name__startswith/should_return_cusomers_with_names_starting_with_given_prefix.yml +41 -0
  93. data/spec/vcr_cassettes/Mailroute_Customer/_filter/by_reseller/should_return_all_customers_of_the_given_reseller.yml +41 -0
  94. data/spec/vcr_cassettes/Mailroute_Customer/_get/id/.yml +41 -0
  95. data/spec/vcr_cassettes/Mailroute_Customer/_get/name/.yml +41 -0
  96. data/spec/vcr_cassettes/Mailroute_Customer/_reseller/should_return_the_customer_s_reseller.yml +79 -0
  97. data/spec/vcr_cassettes/Mailroute_Customer/basic_operations/should_perform_basic_read_operations.yml +41 -0
  98. data/spec/vcr_cassettes/Mailroute_Customer/total_count/should_return_number_of_customer_which_matches_search_criteria.yml +41 -0
  99. data/spec/vcr_cassettes/Mailroute_Customer/total_count/should_return_number_of_customer_which_matches_search_criteria3.yml +41 -0
  100. data/spec/vcr_cassettes/Mailroute_Customer/total_count/should_return_total_count_of_customers.yml +41 -0
  101. data/spec/vcr_cassettes/Mailroute_CustomerContact/CRUD/should_create_read_update_and_delete_customer_contacts.yml +340 -0
  102. data/spec/vcr_cassettes/Mailroute_Domain/_create/should_have_an_id.yml +80 -0
  103. data/spec/vcr_cassettes/Mailroute_Domain/_create/should_save_all_attributes.yml +80 -0
  104. data/spec/vcr_cassettes/Mailroute_Domain/_domain_aliases/should_return_a_list_of_its_domain_aliases.yml +155 -0
  105. data/spec/vcr_cassettes/Mailroute_Domain/black_white_list/should_blacklist_and_whitelist_emails.yml +386 -0
  106. data/spec/vcr_cassettes/Mailroute_Domain/has_a_notification_task/should_have_notification_task.yml +249 -0
  107. data/spec/vcr_cassettes/Mailroute_Domain/has_a_policy/should_have_policy.yml +79 -0
  108. data/spec/vcr_cassettes/Mailroute_Domain/has_many_aliases/should_list_create_and_delete_domain_aliases.yml +195 -0
  109. data/spec/vcr_cassettes/Mailroute_Domain/has_many_contacts/should_list_create_and_delete_contacts.yml +379 -0
  110. data/spec/vcr_cassettes/Mailroute_Domain/has_many_email_accounts/should_be_possible_to_bulk_create_email_accounts.yml +192 -0
  111. data/spec/vcr_cassettes/Mailroute_Domain/has_many_email_accounts/should_list_and_create_email_accounts.yml +411 -0
  112. data/spec/vcr_cassettes/Mailroute_Domain/has_many_mail_servers/should_list_create_and_delete_mail_servers.yml +306 -0
  113. data/spec/vcr_cassettes/Mailroute_Domain/has_many_outbound_servers/should_list_create_and_delete_outbound_servers.yml +306 -0
  114. data/spec/vcr_cassettes/Mailroute_Domain/move_to_customer/should_move_domain_to_another_customer.yml +230 -0
  115. data/spec/vcr_cassettes/Mailroute_DomainAlias/should_be_possible_to_create_read_update_and_delete_domain_aliases.yml +532 -0
  116. data/spec/vcr_cassettes/Mailroute_DomainContact/CRUD/should_create_read_update_and_delete_domain_contacts.yml +340 -0
  117. data/spec/vcr_cassettes/Mailroute_EmailAccount/_get/by_id/should_return_an_account.yml +41 -0
  118. data/spec/vcr_cassettes/Mailroute_EmailAccount/_get/by_localpart_and_domain/should_return_an_account.yml +79 -0
  119. data/spec/vcr_cassettes/Mailroute_EmailAccount/_get/by_localpart_and_domain_id/should_return_an_account.yml +41 -0
  120. data/spec/vcr_cassettes/Mailroute_EmailAccount/_get/by_localpart_and_domain_name/should_return_an_account.yml +171 -0
  121. data/spec/vcr_cassettes/Mailroute_EmailAccount/_set_password/should_set_the_password.yml +78 -0
  122. data/spec/vcr_cassettes/Mailroute_EmailAccount/black_white_list/should_blacklist_and_whitelist_emails.yml +194 -0
  123. data/spec/vcr_cassettes/Mailroute_EmailAccount/has_contact/should_have_contact.yml +79 -0
  124. data/spec/vcr_cassettes/Mailroute_EmailAccount/has_domain/should_have_domain.yml +79 -0
  125. data/spec/vcr_cassettes/Mailroute_EmailAccount/has_notification_task/should_have_notification_task.yml +79 -0
  126. data/spec/vcr_cassettes/Mailroute_EmailAccount/has_policy/should_have_policy.yml +79 -0
  127. data/spec/vcr_cassettes/Mailroute_EmailAccount/should_be_possible_to_create_read_update_and_delete_email_accounts.yml +532 -0
  128. data/spec/vcr_cassettes/Mailroute_EmailAccountContact/CRUD/should_create_read_update_and_delete_email_account_contacts.yml +302 -0
  129. data/spec/vcr_cassettes/Mailroute_MailServer/should_be_possible_to_create_read_update_and_delete_mail_servers.yml +532 -0
  130. data/spec/vcr_cassettes/Mailroute_NotificationAccountTask/RU/should_read_and_update_tasks.yml +116 -0
  131. data/spec/vcr_cassettes/Mailroute_NotificationAccountTask/priorities/should_change_the_priority_of_a_task.yml +344 -0
  132. data/spec/vcr_cassettes/Mailroute_NotificationDomainTask/RU/should_read_and_update_tasks.yml +116 -0
  133. data/spec/vcr_cassettes/Mailroute_OutboundServer/CRUD/should_create_read_update_and_delete_outbound_servers.yml +229 -0
  134. data/spec/vcr_cassettes/Mailroute_Reseller/_admins/should_return_a_list_of_its_admins.yml +77 -0
  135. data/spec/vcr_cassettes/Mailroute_Reseller/_all/should_accept_limit_keyword.yml +39 -0
  136. data/spec/vcr_cassettes/Mailroute_Reseller/_all/should_accept_offset_keyword.yml +75 -0
  137. data/spec/vcr_cassettes/Mailroute_Reseller/_all/should_return_a_list_of_resellers.yml +39 -0
  138. data/spec/vcr_cassettes/Mailroute_Reseller/_bulk_create/should_create_several_resellers.yml +158 -0
  139. data/spec/vcr_cassettes/Mailroute_Reseller/_contacts/should_return_a_list_of_its_contacts.yml +41 -0
  140. data/spec/vcr_cassettes/Mailroute_Reseller/_create/should_create_a_new_reseller.yml +80 -0
  141. data/spec/vcr_cassettes/Mailroute_Reseller/_create_admin/.yml +6718 -0
  142. data/spec/vcr_cassettes/Mailroute_Reseller/_create_admin/should_be_in_the_list_of_the_reseller_s_admins.yml +118 -0
  143. data/spec/vcr_cassettes/Mailroute_Reseller/_create_admin/should_have_an_id.yml +80 -0
  144. data/spec/vcr_cassettes/Mailroute_Reseller/_create_admin/should_have_send_welcome_field_.yml +80 -0
  145. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/.yml +80 -0
  146. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/address/.yml +80 -0
  147. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/city/.yml +80 -0
  148. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/email/.yml +80 -0
  149. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/should_have_a_link_to_the_reseller.yml +118 -0
  150. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/should_save_a_new_contact.yml +118 -0
  151. data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/should_save_the_attributes.yml +118 -0
  152. data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/.yml +118 -0
  153. data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/allow_branding/.yml +118 -0
  154. data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/name/.yml +118 -0
  155. data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/should_have_a_link_to_the_reseller.yml +156 -0
  156. data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/should_save_a_new_contact.yml +118 -0
  157. data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/should_save_the_attributes.yml +118 -0
  158. data/spec/vcr_cassettes/Mailroute_Reseller/_customers/should_return_a_list_of_its_customers.yml +41 -0
  159. data/spec/vcr_cassettes/Mailroute_Reseller/_delete/should_bulk_delete_a_list_of_resellers.yml +368 -0
  160. data/spec/vcr_cassettes/Mailroute_Reseller/_delete/should_delete_the_reseller.yml +112 -0
  161. data/spec/vcr_cassettes/Mailroute_Reseller/_delete_admin/when_deleting_an_existing_admin/should_not_be_in_the_list_of_the_reseller_s_admins.yml +225 -0
  162. data/spec/vcr_cassettes/Mailroute_Reseller/_delete_admin/when_deleting_an_existing_admin/should_not_delete_all_admins.yml +152 -0
  163. data/spec/vcr_cassettes/Mailroute_Reseller/_delete_admin/when_trying_to_delete_admin_which_do_not_exist/should_not_fail.yml +79 -0
  164. data/spec/vcr_cassettes/Mailroute_Reseller/_filter/should_return_a_list_of_resellers_which_match_the_filter_query.yml +39 -0
  165. data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_raise_error_if_reseller_not_found.yml +37 -0
  166. data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_return_the_reseller.yml +37 -0
  167. data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_return_the_reseller_if_it_exists.yml +39 -0
  168. data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_return_the_reseller_if_it_present.yml +37 -0
  169. data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_return_the_reseller_if_it_preset.yml +73 -0
  170. data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_set_the_name.yml +37 -0
  171. data/spec/vcr_cassettes/Mailroute_Reseller/_limit/should_limit_the_number_of_resellers_returned.yml +79 -0
  172. data/spec/vcr_cassettes/Mailroute_Reseller/_list/should_accept_limit_keyword.yml +39 -0
  173. data/spec/vcr_cassettes/Mailroute_Reseller/_list/should_return_a_list_of_resellers.yml +39 -0
  174. data/spec/vcr_cassettes/Mailroute_Reseller/_offset/should_return_different_pages.yml +75 -0
  175. data/spec/vcr_cassettes/Mailroute_Reseller/_order_by/ascending_order/should_return_ordered_result.yml +41 -0
  176. data/spec/vcr_cassettes/Mailroute_Reseller/_order_by/descending_order/should_return_ordered_result.yml +41 -0
  177. data/spec/vcr_cassettes/Mailroute_Reseller/_save/should_save_the_changes.yml +116 -0
  178. data/spec/vcr_cassettes/Mailroute_Reseller/_search/should_return_a_list_of_resellers_which_match_the_search_query.yml +41 -0
  179. data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info/branding_info/.yml +75 -0
  180. data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info_/branding_info/.yml +39 -0
  181. data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info_ix_/branding_info/.yml +2605 -0
  182. data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info_x_/branding_info/.yml +37 -0
  183. data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info_xix_/branding_info/.yml +75 -0
  184. data/spec/vcr_cassettes/Mailroute_ResellerContact/CRUD/should_create_read_update_and_delete_reseller_contacts.yml +340 -0
  185. data/spec/vcr_cassettes/Mailroute_WBList/WBList/with_domain/should_create_read_and_update_and_delete_wblists.yml +415 -0
  186. data/spec/vcr_cassettes/Mailroute_WBList/WBList/with_email_account/should_create_read_and_update_and_delete_wblists.yml +267 -0
  187. data/spec/vcr_cassettes/Valid_Reseller.yml +37 -0
  188. data/spec/vcr_cassettes/Valid_Reseller_.yml +39 -0
  189. data/spec/vcr_cassettes/Valid_Reseller_with_Branding_Info.yml +75 -0
  190. metadata +553 -0
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ InstalledFiles
7
+ _yardoc
8
+ coverage
9
+ doc/
10
+ lib/bundler/man
11
+ pkg
12
+ rdoc
13
+ spec/reports
14
+ test/tmp
15
+ test/version_tmp
16
+ tmp
17
+ tags
18
+ vendor/bundle
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ mailroute
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 1.8.7
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ rvm:
2
+ - '1.9.3'
3
+ - '1.8.7'
4
+ - '2.0.0'
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in mailroute.gemspec
4
+ gemspec
5
+
6
+ gem 'simplecov', :require => false, :group => :test
data/Gemfile.lock ADDED
@@ -0,0 +1,87 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ mailroute (0.0.1)
5
+ activeresource
6
+ json_pure
7
+ rest-client
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ activemodel (3.2.12)
13
+ activesupport (= 3.2.12)
14
+ builder (~> 3.0.0)
15
+ activeresource (3.2.12)
16
+ activemodel (= 3.2.12)
17
+ activesupport (= 3.2.12)
18
+ activesupport (3.2.12)
19
+ i18n (~> 0.6)
20
+ multi_json (~> 1.0)
21
+ addressable (2.3.3)
22
+ awesome_print (1.1.0)
23
+ builder (3.0.4)
24
+ coderay (1.0.9)
25
+ crack (0.3.2)
26
+ diff-lcs (1.2.1)
27
+ ffi (1.4.0)
28
+ guard (1.6.2)
29
+ listen (>= 0.6.0)
30
+ lumberjack (>= 1.0.2)
31
+ pry (>= 0.9.10)
32
+ terminal-table (>= 1.4.3)
33
+ thor (>= 0.14.6)
34
+ guard-rspec (2.4.1)
35
+ guard (>= 1.1)
36
+ rspec (~> 2.11)
37
+ i18n (0.6.2)
38
+ json_pure (1.7.7)
39
+ listen (0.7.3)
40
+ lumberjack (1.0.2)
41
+ method_source (0.8.1)
42
+ mime-types (1.21)
43
+ multi_json (1.6.1)
44
+ pry (0.9.12)
45
+ coderay (~> 1.0.5)
46
+ method_source (~> 0.8)
47
+ slop (~> 3.4)
48
+ rake (10.0.3)
49
+ rb-fsevent (0.9.3)
50
+ rb-inotify (0.9.0)
51
+ ffi (>= 0.5.0)
52
+ rest-client (1.6.7)
53
+ mime-types (>= 1.16)
54
+ rspec (2.13.0)
55
+ rspec-core (~> 2.13.0)
56
+ rspec-expectations (~> 2.13.0)
57
+ rspec-mocks (~> 2.13.0)
58
+ rspec-core (2.13.0)
59
+ rspec-expectations (2.13.0)
60
+ diff-lcs (>= 1.1.3, < 2.0)
61
+ rspec-mocks (2.13.0)
62
+ simplecov (0.7.1)
63
+ multi_json (~> 1.0)
64
+ simplecov-html (~> 0.7.1)
65
+ simplecov-html (0.7.1)
66
+ slop (3.4.3)
67
+ terminal-table (1.4.5)
68
+ thor (0.17.0)
69
+ vcr (2.4.0)
70
+ webmock (1.9.3)
71
+ addressable (>= 2.2.7)
72
+ crack (>= 0.3.2)
73
+
74
+ PLATFORMS
75
+ ruby
76
+
77
+ DEPENDENCIES
78
+ awesome_print
79
+ bundler
80
+ guard-rspec
81
+ mailroute!
82
+ rake
83
+ rb-fsevent
84
+ rb-inotify
85
+ simplecov
86
+ vcr
87
+ webmock
data/Guardfile ADDED
@@ -0,0 +1,11 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+ guard 'rspec' do
4
+ watch(%r{^spec/.+_spec\.rb$})
5
+ watch(%r{^lib/(.+)\.rb$}) { 'spec' }
6
+ watch('lib/mailroute.rb') { 'spec' }
7
+ watch('spec/spec_helper.rb') { 'spec' }
8
+ # watch(%r{^spec/vcr_cassettes}) { 'spec' }
9
+ watch(%r{^spec/support/.*\.rb$}) { 'spec' }
10
+ end
11
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Viktar Basharymau
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # Mailroute [![Build Status](https://secure.travis-ci.org/MailRoute/mailroute_ruby.png)](http://travis-ci.org/MailRoute/mailroute_ruby)
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'mailroute'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install mailroute
18
+
19
+ ## Usage
20
+
21
+ Mailroute.configure(
22
+ :username => '<username here>',
23
+ :apikey => '0d1a...a33'
24
+ )
25
+
26
+ # Make sure that Mailroute configured properly
27
+ Mailroute.check_connection #=> true
28
+
29
+ Mailroute::Reseller.all #=> [...]
30
+
31
+ Mailroute::Reseller.get(249) #=> Reseller<...>
32
+
33
+ ## Contributing
34
+
35
+ 1. Fork it
36
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
37
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
38
+ 4. Push to the branch (`git push origin my-new-feature`)
39
+ 5. Create new Pull Request
40
+
41
+
42
+ ## TODO
43
+
44
+ 1. clean up vcr cassettes
45
+ <del>2. refactor extensions/activeresource.rb - it's a mess</del>
46
+ <del>3. implement Reseller.count</del>
47
+ <del>4. travisci label</del>
48
+ 5. check number of API calls in tests
49
+ 6. better error handling when reseller already exists
50
+ <del>7. to_many: ["email_account", "localpart_aliases", {"blank"=>false, "default"=>"No default provided.", "help_text"=>"Many related resources. Can be either a list of URIs or list of individually nested resource data.", "nullable"=>true, "readonly"=>true, "related_type"=>"to_many", "type"=>"related", "unique"=>false}]</del>
51
+ 8. better validation exceptions
52
+ 9. refactor base.rb
53
+ 10. domain.bulk_create_email_accounts 501
54
+ <del>11. mailroute.Policy.get_default_policy()</del>
55
+ 12. domain.get_quarantine()
56
+ 13. double-check get by name
57
+
data/Rakefile ADDED
@@ -0,0 +1,42 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
7
+
8
+ desc 'Ungzips response bodies in VCR cassettes'
9
+ task 'vcr:ungzip' do
10
+ require 'awesome_print'
11
+ require 'vcr'
12
+ require 'yaml'
13
+ require 'multi_json'
14
+
15
+ VCR.configure do |c|
16
+ c.cassette_library_dir = 'spec/vcr_cassettes'
17
+ c.hook_into :webmock
18
+ end
19
+
20
+ def process(input_file)
21
+ puts input_file
22
+ cassette = VCR.insert_cassette(input_file.sub(/\.yml$/, '').sub('spec/vcr_cassettes/', ''), :record => :all)
23
+ new_interactions = cassette.send(:new_recorded_interactions)
24
+ def new_interactions.none?
25
+ false
26
+ end
27
+
28
+ cassette.send(:previously_recorded_interactions).each do |interaction|
29
+ interaction.request.headers['Accept-Encoding'] = ['identity']
30
+ if interaction.response.headers['Content-Encoding'] == ['gzip']
31
+ interaction.response.headers.delete('Content-Encoding')
32
+ interaction.response.body = Zlib::GzipReader.new(StringIO.new(interaction.response.body)).read
33
+ end
34
+ end
35
+
36
+ cassette.eject
37
+ end
38
+
39
+ Dir['spec/vcr_cassettes/**/{*.yml,.yml}'].each do |input_file|
40
+ process input_file
41
+ end
42
+ end
data/lib/mailroute.rb ADDED
@@ -0,0 +1,34 @@
1
+ require 'rest-client'
2
+ require 'active_resource'
3
+ require 'json/pure'
4
+
5
+ require 'mailroute/version'
6
+ require 'mailroute/extensions/object'
7
+ require 'mailroute/configuration'
8
+ require 'mailroute/check_connection'
9
+ require 'mailroute/extensions/relation'
10
+ require 'mailroute/extensions/active_resource/formats'
11
+ require 'mailroute/extensions/active_resource/urls_without_json_extension'
12
+ require 'mailroute/extensions/active_resource/better_connection_error'
13
+ require 'mailroute/extensions/active_resource/has_one'
14
+ require 'mailroute/extensions/active_resource/has_many'
15
+ require 'mailroute/extensions/active_resource/meta_information'
16
+ require 'mailroute/models/base'
17
+ require 'mailroute/models/reseller_contact'
18
+ require 'mailroute/models/admin'
19
+ require 'mailroute/models/reseller'
20
+ require 'mailroute/models/branding_info'
21
+ require 'mailroute/models/domain_alias'
22
+ require 'mailroute/models/policy_user'
23
+ require 'mailroute/models/notification_account_task'
24
+ require 'mailroute/models/email_account_contact'
25
+ require 'mailroute/models/wblist'
26
+ require 'mailroute/models/email_account'
27
+ require 'mailroute/models/mail_server'
28
+ require 'mailroute/models/outbound_server'
29
+ require 'mailroute/models/domain_contact'
30
+ require 'mailroute/models/policy_domain'
31
+ require 'mailroute/models/notification_domain_task'
32
+ require 'mailroute/models/domain'
33
+ require 'mailroute/models/customer_contact'
34
+ require 'mailroute/models/customer'
@@ -0,0 +1,21 @@
1
+ module Mailroute
2
+ class Client
3
+ def initialize(username, apikey)
4
+ @username = username
5
+ @apikey = apikey
6
+ end
7
+
8
+ def check_connection
9
+ response = RestClient.get 'https://admin-dev.mailroute.net/api/v1/reseller/',
10
+ 'Accept' => 'application/json',
11
+ 'Content-Type' => 'application/json',
12
+ 'Authorization' => "ApiKey #@username:#@apikey"
13
+ response.code == 200
14
+ end
15
+ end
16
+
17
+
18
+ def self.check_connection
19
+ Client.new(username, apikey).check_connection
20
+ end
21
+ end
@@ -0,0 +1,24 @@
1
+ module Mailroute
2
+ class << self
3
+ attr_reader :username, :apikey, :url
4
+
5
+ def configure(options)
6
+ options = default_options.merge(options)
7
+
8
+ @username = options[:username]
9
+ @apikey = options[:apikey]
10
+ @url = options[:url]
11
+
12
+ Mailroute::Base.headers['Authorization'] = "ApiKey #@username:#@apikey"
13
+ Mailroute::Base.site = @url
14
+ end
15
+
16
+ def default_options
17
+ {
18
+ :username => ENV['MAILROUTE_USERNAME'],
19
+ :apikey => ENV['MAILROUTE_API_KEY'],
20
+ :url => ENV['MAILROUTE_URL']
21
+ }.dup
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,10 @@
1
+ class ActiveResource::ConnectionError
2
+ # TODO: get rid of monkey patching
3
+ def to_s
4
+ message = "Failed."
5
+ message << " Response code = #{response.code}." if response.respond_to?(:code)
6
+ message << " Response message = #{response.message}." if response.respond_to?(:message)
7
+ message << " Response body = #{response.body}." if response.respond_to?(:body)
8
+ message
9
+ end
10
+ end
@@ -0,0 +1,19 @@
1
+ module ActiveResource
2
+ module Formats
3
+ def self.remove_root(data)
4
+ if collection?(data)
5
+ array = data['objects']
6
+ array.instance_variable_set('@_meta', data['meta'])
7
+ array
8
+ else
9
+ data
10
+ end
11
+ end
12
+
13
+ private
14
+
15
+ def self.collection?(data)
16
+ data['objects'] && data['meta']
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ class HasMany < Struct.new(:klass, :model, :options)
2
+ def inverse
3
+ ActiveSupport::Inflector.underscore(klass.to_s.split('::').last)
4
+ end
5
+
6
+ def foreign_class
7
+ options[:class] || Mailroute.const_get(ActiveSupport::Inflector.classify(model))
8
+ end
9
+
10
+ def pk
11
+ options[:pk]
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ class HasOne < Struct.new(:klass, :model, :options)
2
+ def inverse
3
+ ActiveSupport::Inflector.underscore(klass.to_s.split('::').last)
4
+ end
5
+
6
+ def foreign_class
7
+ options[:class] || Mailroute.const_get(ActiveSupport::Inflector.classify(model))
8
+ end
9
+
10
+ def pk
11
+ options[:pk]
12
+ end
13
+ end
@@ -0,0 +1,20 @@
1
+ class MetaInformation
2
+ attr_reader :associations
3
+
4
+ def initialize(klass)
5
+ @associations = {}
6
+ @klass = klass
7
+ end
8
+
9
+ def add_has_one(model, options)
10
+ @associations[model] = HasOne.new(@klass, model, options)
11
+ end
12
+
13
+ def add_has_many(model, options)
14
+ @associations[model] = HasMany.new(@klass, model, options)
15
+ end
16
+
17
+ def add_has_admins(options)
18
+ add_has_many(:admins, options)
19
+ end
20
+ end
@@ -0,0 +1,29 @@
1
+ module ActiveResource
2
+ module Extensions
3
+ module UrlsWithoutJsonExtension
4
+ module ClassMethods
5
+ def element_path_with_extension(*args)
6
+ element_path_without_extension(*args).gsub(/.json|.xml/,'/')
7
+ end
8
+ def new_element_path_with_extension(*args)
9
+ new_element_path_without_extension(*args).gsub(/.json|.xml/,'/')
10
+ end
11
+ def collection_path_with_extension(*args)
12
+
13
+ collection_path_without_extension(*args).gsub(/.json|.xml/,'/')
14
+ end
15
+ end
16
+
17
+ def self.included(base)
18
+ base.class_eval do
19
+ extend ClassMethods
20
+ class << self
21
+ alias_method_chain :element_path, :extension
22
+ alias_method_chain :new_element_path, :extension
23
+ alias_method_chain :collection_path, :extension
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end