mailroute 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +18 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +87 -0
- data/Guardfile +11 -0
- data/LICENSE.txt +22 -0
- data/README.md +57 -0
- data/Rakefile +42 -0
- data/lib/mailroute.rb +34 -0
- data/lib/mailroute/check_connection.rb +21 -0
- data/lib/mailroute/configuration.rb +24 -0
- data/lib/mailroute/extensions/active_resource/better_connection_error.rb +10 -0
- data/lib/mailroute/extensions/active_resource/formats.rb +19 -0
- data/lib/mailroute/extensions/active_resource/has_many.rb +13 -0
- data/lib/mailroute/extensions/active_resource/has_one.rb +13 -0
- data/lib/mailroute/extensions/active_resource/meta_information.rb +20 -0
- data/lib/mailroute/extensions/active_resource/urls_without_json_extension.rb +29 -0
- data/lib/mailroute/extensions/object.rb +3 -0
- data/lib/mailroute/extensions/relation.rb +59 -0
- data/lib/mailroute/models/admin.rb +21 -0
- data/lib/mailroute/models/base.rb +193 -0
- data/lib/mailroute/models/branding_info.rb +5 -0
- data/lib/mailroute/models/customer.rb +10 -0
- data/lib/mailroute/models/customer_contact.rb +6 -0
- data/lib/mailroute/models/domain.rb +56 -0
- data/lib/mailroute/models/domain_alias.rb +6 -0
- data/lib/mailroute/models/domain_contact.rb +6 -0
- data/lib/mailroute/models/email_account.rb +53 -0
- data/lib/mailroute/models/email_account_contact.rb +6 -0
- data/lib/mailroute/models/mail_server.rb +6 -0
- data/lib/mailroute/models/notification_account_task.rb +24 -0
- data/lib/mailroute/models/notification_domain_task.rb +6 -0
- data/lib/mailroute/models/outbound_server.rb +6 -0
- data/lib/mailroute/models/policy_domain.rb +6 -0
- data/lib/mailroute/models/policy_user.rb +6 -0
- data/lib/mailroute/models/reseller.rb +10 -0
- data/lib/mailroute/models/reseller_contact.rb +6 -0
- data/lib/mailroute/models/wblist.rb +7 -0
- data/lib/mailroute/version.rb +3 -0
- data/mailroute.gemspec +33 -0
- data/spec/lib/check_connection_spec.rb +43 -0
- data/spec/lib/configuration_spec.rb +17 -0
- data/spec/lib/mailroute/models/admin_spec.rb +13 -0
- data/spec/lib/mailroute/models/base_spec.rb +21 -0
- data/spec/lib/mailroute/models/customer_contact_spec.rb +32 -0
- data/spec/lib/mailroute/models/customer_spec.rb +244 -0
- data/spec/lib/mailroute/models/domain_alias_spec.rb +27 -0
- data/spec/lib/mailroute/models/domain_contact_spec.rb +32 -0
- data/spec/lib/mailroute/models/domain_spec.rb +215 -0
- data/spec/lib/mailroute/models/email_account_contact_spec.rb +32 -0
- data/spec/lib/mailroute/models/email_account_spec.rb +123 -0
- data/spec/lib/mailroute/models/mail_server_spec.rb +27 -0
- data/spec/lib/mailroute/models/notification_account_task_spec.rb +36 -0
- data/spec/lib/mailroute/models/notification_domain_task_spec.rb +19 -0
- data/spec/lib/mailroute/models/outbound_server_spec.rb +24 -0
- data/spec/lib/mailroute/models/reseller_contact_spec.rb +32 -0
- data/spec/lib/mailroute/models/reseller_spec.rb +297 -0
- data/spec/lib/mailroute/models/wblist_spec.rb +46 -0
- data/spec/spec_helper.rb +26 -0
- data/spec/support/custom_matchers.rb +5 -0
- data/spec/support/mailroute_configuration_helper.rb +9 -0
- data/spec/vcr_cassettes/Mailroute/_check_connection/when_configured_with_correct_credentials/should_return_true.yml +41 -0
- data/spec/vcr_cassettes/Mailroute/_check_connection/when_configured_with_incorrect_credentials/should_raise_Unauthorized_error.yml +38 -0
- data/spec/vcr_cassettes/Mailroute_Admin/basic_operations/should_perform_basic_read_operations.yml +38 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_admins/should_return_a_list_of_its_admins.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_branding_info/should_return_its_branding_info.yml +79 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_contacts/should_return_a_list_of_its_contacts.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_admin/.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_admin/should_be_in_the_list_of_the_customer_s_admins.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_admin/should_have_an_id.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_contact/.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_contact/should_have_a_link_to_the_customer.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_contact/should_save_a_new_contact.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_contact/should_save_the_attributes.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_domain/.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_domain/should_have_a_link_to_the_customer.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_domain/should_save_a_new_domain.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_domain/should_save_the_attributes.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_a_reseller_object/should_be_created_with_reseller.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_a_reseller_object/should_have_id.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_referenced_via_id/should_be_created_with_reseller.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_referenced_via_id/should_have_id.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_referenced_via_name/should_be_created_with_reseller.yml +156 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_create_with_reseller/when_reseller_is_referenced_via_name/should_have_id.yml +118 -0
- 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
- data/spec/vcr_cassettes/Mailroute_Customer/_delete_admin/when_deleting_an_existing_admin/should_not_delete_all_admins.yml +152 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_delete_admin/when_trying_to_delete_admin_which_do_not_exist/should_not_fail.yml +79 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_domains/should_return_a_list_of_its_domains.yml +79 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_filter/by_name/should_return_cusomers_with_a_given_name.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_filter/by_name__startswith/should_return_cusomers_with_names_starting_with_given_prefix.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_filter/by_reseller/should_return_all_customers_of_the_given_reseller.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_get/id/.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_get/name/.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Customer/_reseller/should_return_the_customer_s_reseller.yml +79 -0
- data/spec/vcr_cassettes/Mailroute_Customer/basic_operations/should_perform_basic_read_operations.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Customer/total_count/should_return_number_of_customer_which_matches_search_criteria.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Customer/total_count/should_return_number_of_customer_which_matches_search_criteria3.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Customer/total_count/should_return_total_count_of_customers.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_CustomerContact/CRUD/should_create_read_update_and_delete_customer_contacts.yml +340 -0
- data/spec/vcr_cassettes/Mailroute_Domain/_create/should_have_an_id.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Domain/_create/should_save_all_attributes.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Domain/_domain_aliases/should_return_a_list_of_its_domain_aliases.yml +155 -0
- data/spec/vcr_cassettes/Mailroute_Domain/black_white_list/should_blacklist_and_whitelist_emails.yml +386 -0
- data/spec/vcr_cassettes/Mailroute_Domain/has_a_notification_task/should_have_notification_task.yml +249 -0
- data/spec/vcr_cassettes/Mailroute_Domain/has_a_policy/should_have_policy.yml +79 -0
- data/spec/vcr_cassettes/Mailroute_Domain/has_many_aliases/should_list_create_and_delete_domain_aliases.yml +195 -0
- data/spec/vcr_cassettes/Mailroute_Domain/has_many_contacts/should_list_create_and_delete_contacts.yml +379 -0
- data/spec/vcr_cassettes/Mailroute_Domain/has_many_email_accounts/should_be_possible_to_bulk_create_email_accounts.yml +192 -0
- data/spec/vcr_cassettes/Mailroute_Domain/has_many_email_accounts/should_list_and_create_email_accounts.yml +411 -0
- data/spec/vcr_cassettes/Mailroute_Domain/has_many_mail_servers/should_list_create_and_delete_mail_servers.yml +306 -0
- data/spec/vcr_cassettes/Mailroute_Domain/has_many_outbound_servers/should_list_create_and_delete_outbound_servers.yml +306 -0
- data/spec/vcr_cassettes/Mailroute_Domain/move_to_customer/should_move_domain_to_another_customer.yml +230 -0
- data/spec/vcr_cassettes/Mailroute_DomainAlias/should_be_possible_to_create_read_update_and_delete_domain_aliases.yml +532 -0
- data/spec/vcr_cassettes/Mailroute_DomainContact/CRUD/should_create_read_update_and_delete_domain_contacts.yml +340 -0
- data/spec/vcr_cassettes/Mailroute_EmailAccount/_get/by_id/should_return_an_account.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_EmailAccount/_get/by_localpart_and_domain/should_return_an_account.yml +79 -0
- data/spec/vcr_cassettes/Mailroute_EmailAccount/_get/by_localpart_and_domain_id/should_return_an_account.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_EmailAccount/_get/by_localpart_and_domain_name/should_return_an_account.yml +171 -0
- data/spec/vcr_cassettes/Mailroute_EmailAccount/_set_password/should_set_the_password.yml +78 -0
- data/spec/vcr_cassettes/Mailroute_EmailAccount/black_white_list/should_blacklist_and_whitelist_emails.yml +194 -0
- data/spec/vcr_cassettes/Mailroute_EmailAccount/has_contact/should_have_contact.yml +79 -0
- data/spec/vcr_cassettes/Mailroute_EmailAccount/has_domain/should_have_domain.yml +79 -0
- data/spec/vcr_cassettes/Mailroute_EmailAccount/has_notification_task/should_have_notification_task.yml +79 -0
- data/spec/vcr_cassettes/Mailroute_EmailAccount/has_policy/should_have_policy.yml +79 -0
- data/spec/vcr_cassettes/Mailroute_EmailAccount/should_be_possible_to_create_read_update_and_delete_email_accounts.yml +532 -0
- data/spec/vcr_cassettes/Mailroute_EmailAccountContact/CRUD/should_create_read_update_and_delete_email_account_contacts.yml +302 -0
- data/spec/vcr_cassettes/Mailroute_MailServer/should_be_possible_to_create_read_update_and_delete_mail_servers.yml +532 -0
- data/spec/vcr_cassettes/Mailroute_NotificationAccountTask/RU/should_read_and_update_tasks.yml +116 -0
- data/spec/vcr_cassettes/Mailroute_NotificationAccountTask/priorities/should_change_the_priority_of_a_task.yml +344 -0
- data/spec/vcr_cassettes/Mailroute_NotificationDomainTask/RU/should_read_and_update_tasks.yml +116 -0
- data/spec/vcr_cassettes/Mailroute_OutboundServer/CRUD/should_create_read_update_and_delete_outbound_servers.yml +229 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_admins/should_return_a_list_of_its_admins.yml +77 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_all/should_accept_limit_keyword.yml +39 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_all/should_accept_offset_keyword.yml +75 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_all/should_return_a_list_of_resellers.yml +39 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_bulk_create/should_create_several_resellers.yml +158 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_contacts/should_return_a_list_of_its_contacts.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create/should_create_a_new_reseller.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_admin/.yml +6718 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_admin/should_be_in_the_list_of_the_reseller_s_admins.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_admin/should_have_an_id.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_admin/should_have_send_welcome_field_.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/address/.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/city/.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/email/.yml +80 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/should_have_a_link_to_the_reseller.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/should_save_a_new_contact.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_contact/should_save_the_attributes.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/allow_branding/.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/name/.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/should_have_a_link_to_the_reseller.yml +156 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/should_save_a_new_contact.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_create_customer/should_save_the_attributes.yml +118 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_customers/should_return_a_list_of_its_customers.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_delete/should_bulk_delete_a_list_of_resellers.yml +368 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_delete/should_delete_the_reseller.yml +112 -0
- 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
- data/spec/vcr_cassettes/Mailroute_Reseller/_delete_admin/when_deleting_an_existing_admin/should_not_delete_all_admins.yml +152 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_delete_admin/when_trying_to_delete_admin_which_do_not_exist/should_not_fail.yml +79 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_filter/should_return_a_list_of_resellers_which_match_the_filter_query.yml +39 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_raise_error_if_reseller_not_found.yml +37 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_return_the_reseller.yml +37 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_return_the_reseller_if_it_exists.yml +39 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_return_the_reseller_if_it_present.yml +37 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_return_the_reseller_if_it_preset.yml +73 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_find/should_set_the_name.yml +37 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_limit/should_limit_the_number_of_resellers_returned.yml +79 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_list/should_accept_limit_keyword.yml +39 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_list/should_return_a_list_of_resellers.yml +39 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_offset/should_return_different_pages.yml +75 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_order_by/ascending_order/should_return_ordered_result.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_order_by/descending_order/should_return_ordered_result.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_save/should_save_the_changes.yml +116 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/_search/should_return_a_list_of_resellers_which_match_the_search_query.yml +41 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info/branding_info/.yml +75 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info_/branding_info/.yml +39 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info_ix_/branding_info/.yml +2605 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info_x_/branding_info/.yml +37 -0
- data/spec/vcr_cassettes/Mailroute_Reseller/it_should_retrieve_branding_info_xix_/branding_info/.yml +75 -0
- data/spec/vcr_cassettes/Mailroute_ResellerContact/CRUD/should_create_read_update_and_delete_reseller_contacts.yml +340 -0
- data/spec/vcr_cassettes/Mailroute_WBList/WBList/with_domain/should_create_read_and_update_and_delete_wblists.yml +415 -0
- data/spec/vcr_cassettes/Mailroute_WBList/WBList/with_email_account/should_create_read_and_update_and_delete_wblists.yml +267 -0
- data/spec/vcr_cassettes/Valid_Reseller.yml +37 -0
- data/spec/vcr_cassettes/Valid_Reseller_.yml +39 -0
- data/spec/vcr_cassettes/Valid_Reseller_with_Branding_Info.yml +75 -0
- metadata +553 -0
data/.gitignore
ADDED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
mailroute
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.8.7
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
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
|