File Coverage

blib/lib/WWW/eNom/Role/Commands.pm
Criterion Covered Total %
statement 19 21 90.4
branch n/a
condition n/a
subroutine 7 7 100.0
pod n/a
total 26 28 92.8


line stmt bran cond sub pod time code
1             package WWW::eNom::Role::Commands;
2              
3 5     5   50497 use Moo::Role;
  5         11  
  5         33  
4 5     5   1787 use strict;
  5         11  
  5         94  
5 5     5   24 use warnings;
  5         18  
  5         137  
6 5     5   24 use utf8;
  5         8  
  5         30  
7              
8 5     5   4193 use Class::Method::Modifiers 2.04 qw(fresh);
  5         7697  
  5         402  
9 5     5   5409 use HTTP::Tiny 0.031;
  5         271294  
  5         239  
10 5     5   4164 use XML::LibXML::Simple 0.91 qw(XMLin);
  0            
  0            
11              
12             our $VERSION = 'v1.3.0'; # VERSION
13              
14             requires "_make_query_string";
15              
16             =begin Pod::Coverage
17              
18             \w+
19              
20             =end Pod::Coverage
21              
22             =cut
23              
24             # Create methods to support eNom API version 7.8:
25             my @commands = qw(
26             AddBulkDomains AddContact AddDomainFolder AddDomainHeader AddHostHeader
27             AddToCart AdvancedDomainSearch AM_AutoRenew AM_Configure AM_GetAccountDetail
28             AM_GetAccounts AssignToDomainFolder AuthorizeTLD CalculateAllHostPackagePricing
29             CalculateHostPackagePricing CancelHostAccount CancelOrder CertChangeApproverEmail
30             CertConfigureCert CertGetApproverEmail CertGetCertDetail CertGetCerts CertModifyOrder
31             CertParseCSR CertReissueCert CertPurchaseCert CertResendApproverEmail
32             CertResendFulfillmentEmail Check CheckLogin CheckNSStatus CommissionAccount
33             Contacts CreateAccount CreateHostAccount CreateSubAccount DeleteAllPOPPaks DeleteContact
34             DeleteCustomerDefinedData DeleteDomainFolder DeleteDomainHeader DeleteFromCart
35             DeleteHostedDomain DeleteHostHeader DeleteNameServer DeletePOP3 DeletePOPPak
36             DeleteRegistration DeleteSubaccount DisableFolderApp DisableServices EnableFolderApp
37             EnableServices Extend Extend_RGP ExtendDomainDNS Forwarding GetAccountInfo GetAccountPassword
38             GetAccountValidation GetAddressBook GetAgreementPage GetAllAccountInfo GetAllDomains
39             GetAllHostAccounts GetAllResellerHostPricing GetBalance GetCartContent GetCatchAll GetCerts
40             GetConfirmationSettings GetContacts GetCusPreferences GetCustomerDefinedData GetCustomerPaymentInfo
41             GetDNS GetDNSStatus GetDomainCount GetDomainExp GetDomainFolderDetail GetDomainFolderList
42             GetDomainHeader GetDomainInfo GetDomainNameID GetDomains GetDomainServices GetDomainSLDTLD
43             GetDomainSRVHosts GetDomainStatus GetDomainSubServices GetDotNameForwarding GetExpiredDomains
44             GetExtAttributes GetExtendInfo GetFilePermissions GetForwarding GetGlobalChangeStatus
45             GetGlobalChangeStatusDetail GetHomeDomainList GetHostAccount GetHostAccounts GetHostHeader GetHosts
46             GetIDNCodes GetIPResolver GetMailHosts GetMetaTag GetNameSuggestions GetNews GetOrderDetail
47             GetOrderList GetPasswordBit GetPOP3 GetPOPExpirations GetPOPForwarding GetProductNews
48             GetProductSelectionList GetRegHosts GetRegistrationStatus GetRegLock GetRenew GetReport
49             GetResellerHostPricing GetResellerInfo GetServiceContact GetSPFHosts GetStorageUsage
50             GetSubAccountDetails GetSubAccountPassword GetSubAccounts GetSubaccountsDetailList GetTLDDetails
51             GetTLDList GetTransHistory GetWebHostingAll GetWhoisContact GetWPPSInfo GM_CancelSubscription
52             GM_CheckDomain GM_GetCancelReasons GM_GetControlPanelLoginURL GM_GetRedirectScript GM_GetStatuses
53             GM_GetSubscriptionDetails GM_GetSubscriptions GM_ReactivateSubscription GM_RenewSubscription
54             GM_UpdateBillingCycle GM_UpdateSubscriptionDetails HostPackageDefine HostPackageDelete HostPackageModify
55             HostPackageView HostParkingPage InsertNewOrder IsFolderEnabled ListDomainHeaders ListHostHeaders
56             ListWebFiles MetaBaseGetValue MetaBaseSetValue ModifyDomainHeader ModifyHostHeader ModifyNS
57             ModifyNSHosting ModifyPOP3 MySQL_GetDBInfo NameSpinner NM_CancelOrder NM_ExtendOrder
58             NM_GetPremiumDomainSettings NM_GetSearchCategories NM_ProcessOrder NM_Search
59             NM_SetPremiumDomainSettings ParseDomain PE_GetCustomerPricing PE_GetDomainPricing PE_GetEapPricing
60             PE_GetPOPPrice PE_GetPremiumPricing PE_GetProductPrice PE_GetResellerPrice PE_GetRetailPrice
61             PE_GetRetailPricing PE_GetRocketPrice PE_GetTLDID PE_SetPricing PP_CancelSubscription PP_CheckUpgrade
62             PP_GetCancelReasons PP_GetControlPanelLoginURL PP_GetStatuses PP_GetSubscriptionDetails PP_GetSubscriptions
63             PP_ReactivateSubscription PP_UpdateSubscriptionDetails PP_ValidatePassword Portal_GetDomainInfo
64             Portal_GetAwardedDomains Portal_GetToken Portal_UpdateAwardedDomains PreConfigure Purchase PurchaseHosting
65             PurchasePOPBundle PurchasePreview PurchaseServices PushDomain Queue_GetInfo Queue_GetExtAttributes
66             Queue_DomainPurchase Queue_GetDomains Queue_GetOrders Queue_GetOrderDetail RAA_GetInfo RAA_ResendNotification
67             RC_CancelSubscription RC_FreeTrialCheck RC_GetLoginToken RC_GetSubscriptionDetails RC_GetSubscriptions
68             RC_RebillSubscription RC_ResetPassword RC_SetBillingCycle RC_SetPassword RC_SetSubscriptionDomain
69             RC_SetSubscriptionName RefillAccount RegisterNameServer RemoveTLD RemoveUnsyncedDomains RenewPOPBundle
70             RenewServices RPT_GetReport SendAccountEmail ServiceSelect SetCatchAll SetCustomerDefinedData SetDNSHost
71             SetDomainSRVHosts SetDomainSubServices SetDotNameForwarding SetFilePermissions SetHosts SetIPResolver
72             SetPakRenew SetPassword SetPOPForwarding SetRegLock SetRenew SetResellerServicesPricing SetResellerTLDPricing
73             SetSPFHosts SetUpPOP3User SL_AutoRenew SL_Configure SL_GetAccountDetail SL_GetAccounts StatusDomain
74             SubAccountDomains SynchAuthInfo TEL_AddCTHUser TEL_GetCTHUserInfo TEL_GetCTHUserList TEL_GetPrivacy TEL_IsCTHUser
75             TEL_UpdateCTHUser TEL_UpdatePrivacy TLD_AddWatchlist TLD_DeleteWatchlist TLD_GetTLD TLD_GetWatchlist
76             TLD_GetWatchlistTlds TLD_Overview TLD_PortalGetAccountInfo TLD_PortalUpdateAccountInfo TM_Check TM_GetNotice
77             TM_UpdateCart TP_CancelOrder TP_CreateOrder TP_GetDetailsByDomain TP_GetOrder TP_GetOrderDetail TP_GetOrderReview
78             TP_GetOrdersByDomain TP_GetOrderStatuses TP_GetTLDInfo TP_ResendEmail TP_ResubmitLocked TP_SubmitOrder
79             TP_UpdateOrderDetail TS_AutoRenew TS_Configure TS_GetAccountDetail TS_GetAccounts UpdateAccountInfo
80             UpdateAccountPricing UpdateCart UpdateCusPreferences UpdateDomainFolder UpdateExpiredDomains
81             UpdateHostPackagePricing UpdateMetaTag UpdateNameServer UpdateNotificationAmount UpdatePushList
82             UpdateRenewalSettings ValidatePassword WBLConfigure WBLGetCategories WBLGetFields WBLGetStatus
83             WebHostCreateDirectory WebHostCreatePOPBox WebHostDeletePOPBox WebHostGetCartItem WebHostGetOverageOptions
84             WebHostGetOverages WebHostGetPackageComponentList WebHostGetPackageMinimums WebHostGetPackages WebHostGetPOPBoxes
85             WebHostGetResellerPackages WebHostGetStats WebHostHelpInfo WebHostSetCustomPackage WebHostSetOverageOptions
86             WebHostUpdatePassword WebHostUpdatePOPPassword WSC_GetAccountInfo WSC_GetAllPackages WSC_GetPricing WSC_Update_Ops
87             XXX_GetMemberId XXX_RemoveMemberId XXX_SetMemberId
88             );
89              
90             has _ua => (is => 'lazy', builder => sub { HTTP::Tiny->new });
91              
92             fresh $_ => __PACKAGE__->_make_command_coderef($_)
93             for @commands;
94              
95             sub _make_command_coderef {
96             my (undef, $command) = @_;
97              
98             return sub {
99             my ($self, @opts) = @_;
100             my $uri = $self->_make_query_string($command, @opts);
101             my $response = $self->_ua->get($uri)->{content};
102             my $response_type = $self->response_type;
103             if ( $response_type eq "xml_simple" ) {
104             $response = XMLin($response);
105             $response->{errors} &&= [ values %{ $response->{errors} } ];
106             $response->{responses} &&= $response->{responses}{response};
107             $response->{responses} = [ $response->{responses} ]
108             if $response->{ResponseCount} == 1;
109             foreach my $key ( keys %{$response} ) {
110             next unless $key =~ /(.*?)(\d+)$/;
111             $response->{$1} = undef if ref $response->{$key};
112             $response->{$1}[ $2 - 1 ] = delete $response->{$key};
113             }
114             }
115             return $response;
116             };
117             }
118              
119             1;