mailroute 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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