| File: | lib/WWW/Google/Contacts/Types.pm |
| Coverage: | 100.0% |
| line | stmt | bran | cond | sub | pod | time | code |
|---|---|---|---|---|---|---|---|
| 1 | package WWW::Google::Contacts::Types; | ||||||
| 2 | |||||||
| 3 | 12 | 327 | use MooseX::Types -declare => | ||||
| 4 | [ qw( | ||||||
| 5 | Category | ||||||
| 6 | Name | ||||||
| 7 | PhoneNumber ArrayRefOfPhoneNumber | ||||||
| 8 | Email ArrayRefOfEmail | ||||||
| 9 | IM ArrayRefOfIM | ||||||
| 10 | Organization ArrayRefOfOrganization | ||||||
| 11 | PostalAddress ArrayRefOfPostalAddress | ||||||
| 12 | CalendarLink ArrayRefOfCalendarLink | ||||||
| 13 | Birthday | ||||||
| 14 | ContactEvent ArrayRefOfContactEvent | ||||||
| 15 | ExternalId ArrayRefOfExternalId | ||||||
| 16 | Gender | ||||||
| 17 | GroupMembership ArrayRefOfGroupMembership | ||||||
| 18 | Hobby ArrayRefOfHobby | ||||||
| 19 | Jot ArrayRefOfJot | ||||||
| 20 | Language ArrayRefOfLanguage | ||||||
| 21 | Priority | ||||||
| 22 | Sensitivity | ||||||
| 23 | Relation ArrayRefOfRelation | ||||||
| 24 | UserDefined ArrayRefOfUserDefined | ||||||
| 25 | Website ArrayRefOfWebsite | ||||||
| 26 | Photo | ||||||
| 27 | Group | ||||||
| 28 | 12 12 | 89 34 | ) ]; | ||||
| 29 | |||||||
| 30 | 12 12 12 | 152 41 108 | use MooseX::Types::Moose qw(Str HashRef ArrayRef Any Undef Bool); | ||||
| 31 | |||||||
| 32 | 12 12 12 | 194 51 206 | use WWW::Google::Contacts::Type::Category; | ||||
| 33 | 12 12 12 | 229 50 217 | use WWW::Google::Contacts::Type::Name; | ||||
| 34 | 12 12 12 | 378 51 204 | use WWW::Google::Contacts::Type::PhoneNumber; | ||||
| 35 | 12 12 12 | 149 41 81 | use WWW::Google::Contacts::Type::PhoneNumber; | ||||
| 36 | 12 12 12 | 200 51 214 | use WWW::Google::Contacts::Type::Email; | ||||
| 37 | 12 12 12 | 143 46 80 | use WWW::Google::Contacts::Type::Email; | ||||
| 38 | 12 12 12 | 195 46 202 | use WWW::Google::Contacts::Type::IM; | ||||
| 39 | 12 12 12 | 229 50 213 | use WWW::Google::Contacts::Type::Organization; | ||||
| 40 | 12 12 12 | 223 55 239 | use WWW::Google::Contacts::Type::PostalAddress; | ||||
| 41 | 12 12 12 | 235 49 220 | use WWW::Google::Contacts::Type::Birthday; | ||||
| 42 | 12 12 12 | 238 50 242 | use WWW::Google::Contacts::Type::CalendarLink; | ||||
| 43 | |||||||
| 44 | 12 12 12 | 271 54 209 | use WWW::Google::Contacts::Type::ContactEvent; | ||||
| 45 | 12 12 12 | 225 49 212 | use WWW::Google::Contacts::Type::ExternalId; | ||||
| 46 | 12 12 12 | 282 52 239 | use WWW::Google::Contacts::Type::Gender; | ||||
| 47 | 12 12 12 | 226 53 215 | use WWW::Google::Contacts::Type::GroupMembership; | ||||
| 48 | 12 12 12 | 225 45 210 | use WWW::Google::Contacts::Type::Hobby; | ||||
| 49 | 12 12 12 | 231 51 210 | use WWW::Google::Contacts::Type::Jot; | ||||
| 50 | 12 12 12 | 225 48 211 | use WWW::Google::Contacts::Type::Language; | ||||
| 51 | 12 12 12 | 248 47 207 | use WWW::Google::Contacts::Type::Priority; | ||||
| 52 | 12 12 12 | 222 959 210 | use WWW::Google::Contacts::Type::Relation; | ||||
| 53 | 12 12 12 | 227 50 211 | use WWW::Google::Contacts::Type::UserDefined; | ||||
| 54 | 12 12 12 | 224 49 208 | use WWW::Google::Contacts::Type::Website; | ||||
| 55 | |||||||
| 56 | class_type Group, | ||||||
| 57 | { class => 'WWW::Google::Contacts::Group' }; | ||||||
| 58 | |||||||
| 59 | coerce Group, | ||||||
| 60 | from HashRef, | ||||||
| 61 | via { require WWW::Google::Contacts::Group; WWW::Google::Contacts::Group->new( $_ ) }; | ||||||
| 62 | |||||||
| 63 | class_type Category, | ||||||
| 64 | { class => 'WWW::Google::Contacts::Type::Category' }; | ||||||
| 65 | |||||||
| 66 | coerce Category, | ||||||
| 67 | from Any, | ||||||
| 68 | via { | ||||||
| 69 | WWW::Google::Contacts::Type::Category->new( | ||||||
| 70 | type => 'http://schemas.google.com/g/2005#kind', | ||||||
| 71 | term => 'http://schemas.google.com/contact/2008#contact' | ||||||
| 72 | ); | ||||||
| 73 | }; | ||||||
| 74 | |||||||
| 75 | class_type Name, | ||||||
| 76 | { class => 'WWW::Google::Contacts::Type::Name' }; | ||||||
| 77 | |||||||
| 78 | coerce Name, | ||||||
| 79 | from Str, | ||||||
| 80 | via { WWW::Google::Contacts::Type::Name->new( full_name => $_ ) }, | ||||||
| 81 | from Any, | ||||||
| 82 | via { WWW::Google::Contacts::Type::Name->new( $_ || {} ) }; | ||||||
| 83 | |||||||
| 84 | class_type PhoneNumber, | ||||||
| 85 | { class => 'WWW::Google::Contacts::Type::PhoneNumber' }; | ||||||
| 86 | |||||||
| 87 | coerce PhoneNumber, | ||||||
| 88 | from HashRef, | ||||||
| 89 | via { WWW::Google::Contacts::Type::PhoneNumber->new( $_ ) }, | ||||||
| 90 | from Str, | ||||||
| 91 | via { WWW::Google::Contacts::Type::PhoneNumber->new( type => "mobile", value => $_ ) }; | ||||||
| 92 | |||||||
| 93 | subtype ArrayRefOfPhoneNumber, | ||||||
| 94 | as ArrayRef[ PhoneNumber ]; | ||||||
| 95 | |||||||
| 96 | coerce ArrayRefOfPhoneNumber, | ||||||
| 97 | from ArrayRef, | ||||||
| 98 | via { return [ map { to_PhoneNumber( $_ ) } @{ $_ } ] }, | ||||||
| 99 | from Any, | ||||||
| 100 | via { return [ to_PhoneNumber( $_ ) ] }; | ||||||
| 101 | |||||||
| 102 | class_type Email, | ||||||
| 103 | { class => 'WWW::Google::Contacts::Type::Email' }; | ||||||
| 104 | |||||||
| 105 | coerce Email, | ||||||
| 106 | from HashRef, | ||||||
| 107 | via { WWW::Google::Contacts::Type::Email->new( $_ ) }, | ||||||
| 108 | from Str, | ||||||
| 109 | via { WWW::Google::Contacts::Type::Email->new( type => "home", value => $_ ) }; | ||||||
| 110 | |||||||
| 111 | subtype ArrayRefOfEmail, | ||||||
| 112 | as ArrayRef[ Email ]; | ||||||
| 113 | |||||||
| 114 | coerce ArrayRefOfEmail, | ||||||
| 115 | from ArrayRef, | ||||||
| 116 | via { [ map { to_Email( $_ ) } @{ $_ } ] }, | ||||||
| 117 | from Any, | ||||||
| 118 | via { [ to_Email( $_ ) ] }; | ||||||
| 119 | |||||||
| 120 | class_type IM, | ||||||
| 121 | { class => 'WWW::Google::Contacts::Type::IM' }; | ||||||
| 122 | |||||||
| 123 | coerce IM, | ||||||
| 124 | from HashRef, | ||||||
| 125 | via { WWW::Google::Contacts::Type::IM->new( $_ ) }, | ||||||
| 126 | from Str, | ||||||
| 127 | via { WWW::Google::Contacts::Type::IM->new( value => $_ ) }; | ||||||
| 128 | |||||||
| 129 | subtype ArrayRefOfIM, | ||||||
| 130 | as ArrayRef[ IM ]; | ||||||
| 131 | |||||||
| 132 | coerce ArrayRefOfIM, | ||||||
| 133 | from ArrayRef, | ||||||
| 134 | via { [ map { to_IM( $_ ) } @{ $_ } ] }, | ||||||
| 135 | from Any, | ||||||
| 136 | via { [ to_IM( $_ ) ] }; | ||||||
| 137 | |||||||
| 138 | class_type Organization, | ||||||
| 139 | { class => 'WWW::Google::Contacts::Type::Organization' }; | ||||||
| 140 | |||||||
| 141 | coerce Organization, | ||||||
| 142 | from HashRef, | ||||||
| 143 | via { WWW::Google::Contacts::Type::Organization->new( $_ ) }, | ||||||
| 144 | from Str, | ||||||
| 145 | via { WWW::Google::Contacts::Type::Organization->new( type => "work", name => $_ ) }; | ||||||
| 146 | |||||||
| 147 | subtype ArrayRefOfOrganization, | ||||||
| 148 | as ArrayRef[ Organization ]; | ||||||
| 149 | |||||||
| 150 | coerce ArrayRefOfOrganization, | ||||||
| 151 | from ArrayRef, | ||||||
| 152 | via { [ map { to_Organization( $_ ) } @{ $_ } ] }, | ||||||
| 153 | from Any, | ||||||
| 154 | via { [ to_Organization( $_ ) ] }; | ||||||
| 155 | |||||||
| 156 | class_type PostalAddress, | ||||||
| 157 | { class => 'WWW::Google::Contacts::Type::PostalAddress' }; | ||||||
| 158 | |||||||
| 159 | coerce PostalAddress, | ||||||
| 160 | from HashRef, | ||||||
| 161 | via { WWW::Google::Contacts::Type::PostalAddress->new( $_ ) }, | ||||||
| 162 | from Str, | ||||||
| 163 | via { WWW::Google::Contacts::Type::PostalAddress->new( type => "work", formatted => $_ ) }; | ||||||
| 164 | |||||||
| 165 | subtype ArrayRefOfPostalAddress, | ||||||
| 166 | as ArrayRef[ PostalAddress ]; | ||||||
| 167 | |||||||
| 168 | coerce ArrayRefOfPostalAddress, | ||||||
| 169 | from ArrayRef, | ||||||
| 170 | via { [ map { to_PostalAddress( $_ ) } @{ $_ } ] }, | ||||||
| 171 | from Any, | ||||||
| 172 | via { [ to_PostalAddress( $_ ) ] }; | ||||||
| 173 | |||||||
| 174 | class_type Birthday, | ||||||
| 175 | { class => 'WWW::Google::Contacts::Type::Birthday' }; | ||||||
| 176 | |||||||
| 177 | coerce Birthday, | ||||||
| 178 | from Str, | ||||||
| 179 | via { WWW::Google::Contacts::Type::Birthday->new( when => $_ ) }, | ||||||
| 180 | from HashRef, | ||||||
| 181 | via { WWW::Google::Contacts::Type::Birthday->new( $_ ) }; | ||||||
| 182 | |||||||
| 183 | class_type CalendarLink, | ||||||
| 184 | { class => 'WWW::Google::Contacts::Type::CalendarLink' }; | ||||||
| 185 | |||||||
| 186 | coerce CalendarLink, | ||||||
| 187 | from HashRef, | ||||||
| 188 | via { WWW::Google::Contacts::Type::CalendarLink->new( $_ ) }, | ||||||
| 189 | from Str, | ||||||
| 190 | via { WWW::Google::Contacts::Type::CalendarLink->new( type => "home", href => $_ ) }; | ||||||
| 191 | |||||||
| 192 | subtype ArrayRefOfCalendarLink, | ||||||
| 193 | as ArrayRef[ CalendarLink ]; | ||||||
| 194 | |||||||
| 195 | coerce ArrayRefOfCalendarLink, | ||||||
| 196 | from ArrayRef, | ||||||
| 197 | via { [ map { to_CalendarLink( $_ ) } @{ $_ } ] }, | ||||||
| 198 | from Any, | ||||||
| 199 | via { [ to_CalendarLink( $_ ) ] }; | ||||||
| 200 | |||||||
| 201 | class_type ContactEvent, | ||||||
| 202 | { class => 'WWW::Google::Contacts::Type::ContactEvent' }; | ||||||
| 203 | |||||||
| 204 | coerce ContactEvent, | ||||||
| 205 | from HashRef, | ||||||
| 206 | via { WWW::Google::Contacts::Type::ContactEvent->new( $_ ) }; | ||||||
| 207 | |||||||
| 208 | subtype ArrayRefOfContactEvent, | ||||||
| 209 | as ArrayRef[ ContactEvent ]; | ||||||
| 210 | |||||||
| 211 | coerce ArrayRefOfContactEvent, | ||||||
| 212 | from ArrayRef, | ||||||
| 213 | via { [ map { to_ContactEvent( $_ ) } @{ $_ } ] }, | ||||||
| 214 | from Any, | ||||||
| 215 | via { [ to_ContactEvent( $_ ) ] }; | ||||||
| 216 | |||||||
| 217 | class_type ExternalId, | ||||||
| 218 | { class => 'WWW::Google::Contacts::Type::ExternalId' }; | ||||||
| 219 | |||||||
| 220 | coerce ExternalId, | ||||||
| 221 | from HashRef, | ||||||
| 222 | via { WWW::Google::Contacts::Type::ExternalId->new( $_ ) }; | ||||||
| 223 | |||||||
| 224 | subtype ArrayRefOfExternalId, | ||||||
| 225 | as ArrayRef[ ExternalId ]; | ||||||
| 226 | |||||||
| 227 | coerce ArrayRefOfExternalId, | ||||||
| 228 | from ArrayRef, | ||||||
| 229 | via { [ map { to_ExternalId( $_ ) } @{ $_ } ] }, | ||||||
| 230 | from Any, | ||||||
| 231 | via { [ to_ExternalId( $_ ) ] }; | ||||||
| 232 | |||||||
| 233 | class_type Gender, | ||||||
| 234 | { class => 'WWW::Google::Contacts::Type::Gender' }; | ||||||
| 235 | |||||||
| 236 | coerce Gender, | ||||||
| 237 | from Str, | ||||||
| 238 | via { WWW::Google::Contacts::Type::Gender->new( value => $_ ) }; | ||||||
| 239 | |||||||
| 240 | class_type GroupMembership, | ||||||
| 241 | { class => 'WWW::Google::Contacts::Type::GroupMembership' }; | ||||||
| 242 | |||||||
| 243 | coerce GroupMembership, | ||||||
| 244 | from HashRef, | ||||||
| 245 | via { WWW::Google::Contacts::Type::GroupMembership->new( $_ ) }, | ||||||
| 246 | from Str, | ||||||
| 247 | via { WWW::Google::Contacts::Type::GroupMembership->new( href => $_ ) }, | ||||||
| 248 | from Group, | ||||||
| 249 | via { WWW::Google::Contacts::Type::GroupMembership->new( href => $_->id ) }; | ||||||
| 250 | |||||||
| 251 | subtype ArrayRefOfGroupMembership, | ||||||
| 252 | as ArrayRef[ GroupMembership ]; | ||||||
| 253 | |||||||
| 254 | coerce ArrayRefOfGroupMembership, | ||||||
| 255 | from ArrayRef, | ||||||
| 256 | via { [ map { to_GroupMembership( $_ ) } @{ $_ } ] }, | ||||||
| 257 | from Any, | ||||||
| 258 | via { [ to_GroupMembership( $_ ) ] }; | ||||||
| 259 | |||||||
| 260 | class_type Hobby, | ||||||
| 261 | { class => 'WWW::Google::Contacts::Type::Hobby' }; | ||||||
| 262 | |||||||
| 263 | coerce Hobby, | ||||||
| 264 | from HashRef, | ||||||
| 265 | via { WWW::Google::Contacts::Type::Hobby->new( $_ ) }, | ||||||
| 266 | from Str, | ||||||
| 267 | via { WWW::Google::Contacts::Type::Hobby->new( value => $_ ) }; | ||||||
| 268 | |||||||
| 269 | subtype ArrayRefOfHobby, | ||||||
| 270 | as ArrayRef[ Hobby ]; | ||||||
| 271 | |||||||
| 272 | coerce ArrayRefOfHobby, | ||||||
| 273 | from ArrayRef, | ||||||
| 274 | via { [ map { to_Hobby( $_ ) } @{ $_ } ] }, | ||||||
| 275 | from Any, | ||||||
| 276 | via { [ to_Hobby( $_ ) ] }; | ||||||
| 277 | |||||||
| 278 | class_type Jot, | ||||||
| 279 | { class => 'WWW::Google::Contacts::Type::Jot' }; | ||||||
| 280 | |||||||
| 281 | coerce Jot, | ||||||
| 282 | from HashRef, | ||||||
| 283 | via { WWW::Google::Contacts::Type::Jot->new( $_ ) }, | ||||||
| 284 | from Str, | ||||||
| 285 | via { WWW::Google::Contacts::Type::Jot->new( type => "home", value => $_ ) }; | ||||||
| 286 | |||||||
| 287 | subtype ArrayRefOfJot, | ||||||
| 288 | as ArrayRef[ Jot ]; | ||||||
| 289 | |||||||
| 290 | coerce ArrayRefOfJot, | ||||||
| 291 | from ArrayRef, | ||||||
| 292 | via { [ map { to_Jot( $_ ) } @{ $_ } ] }, | ||||||
| 293 | from Any, | ||||||
| 294 | via { [ to_Jot( $_ ) ] }; | ||||||
| 295 | |||||||
| 296 | class_type Language, | ||||||
| 297 | { class => 'WWW::Google::Contacts::Type::Language' }; | ||||||
| 298 | |||||||
| 299 | coerce Language, | ||||||
| 300 | from HashRef, | ||||||
| 301 | via { WWW::Google::Contacts::Type::Language->new( $_ ) }, | ||||||
| 302 | from Str, | ||||||
| 303 | via { WWW::Google::Contacts::Type::Language->new( value => $_ ) }; | ||||||
| 304 | |||||||
| 305 | subtype ArrayRefOfLanguage, | ||||||
| 306 | as ArrayRef[ Language ]; | ||||||
| 307 | |||||||
| 308 | coerce ArrayRefOfLanguage, | ||||||
| 309 | from ArrayRef, | ||||||
| 310 | via { [ map { to_Language( $_ ) } @{ $_ } ] }, | ||||||
| 311 | from Any, | ||||||
| 312 | via { [ to_Language( $_ ) ] }; | ||||||
| 313 | |||||||
| 314 | class_type Priority, | ||||||
| 315 | { class => 'WWW::Google::Contacts::Type::Priority' }; | ||||||
| 316 | |||||||
| 317 | coerce Priority, | ||||||
| 318 | from Str, | ||||||
| 319 | via { WWW::Google::Contacts::Type::Priority->new( type => $_ ) }; | ||||||
| 320 | |||||||
| 321 | class_type Relation, | ||||||
| 322 | { class => 'WWW::Google::Contacts::Type::Relation' }; | ||||||
| 323 | |||||||
| 324 | coerce Relation, | ||||||
| 325 | from HashRef, | ||||||
| 326 | via { WWW::Google::Contacts::Type::Relation->new( $_ ) }; | ||||||
| 327 | |||||||
| 328 | subtype ArrayRefOfRelation, | ||||||
| 329 | as ArrayRef[ Relation ]; | ||||||
| 330 | |||||||
| 331 | coerce ArrayRefOfRelation, | ||||||
| 332 | from ArrayRef, | ||||||
| 333 | via { [ map { to_Relation( $_ ) } @{ $_ } ] }, | ||||||
| 334 | from Any, | ||||||
| 335 | via { [ to_Relation( $_ ) ] }; | ||||||
| 336 | |||||||
| 337 | class_type UserDefined, | ||||||
| 338 | { class => 'WWW::Google::Contacts::Type::UserDefined' }; | ||||||
| 339 | |||||||
| 340 | coerce UserDefined, | ||||||
| 341 | from HashRef, | ||||||
| 342 | via { WWW::Google::Contacts::Type::UserDefined->new( $_ ) }; | ||||||
| 343 | |||||||
| 344 | subtype ArrayRefOfUserDefined, | ||||||
| 345 | as ArrayRef[ UserDefined ]; | ||||||
| 346 | |||||||
| 347 | coerce ArrayRefOfUserDefined, | ||||||
| 348 | from ArrayRef, | ||||||
| 349 | via { [ map { to_UserDefined( $_ ) } @{ $_ } ] }, | ||||||
| 350 | from HashRef, | ||||||
| 351 | via { | ||||||
| 352 | my $ref = $_; | ||||||
| 353 | return [ to_UserDefined( $ref ) ] if ( defined $ref->{ key } ); | ||||||
| 354 | [ map { to_UserDefined({ key => $_, value => $ref->{ $_ }{ value } }) } keys %{ $ref } ] | ||||||
| 355 | }, | ||||||
| 356 | from Any, | ||||||
| 357 | via { [ to_UserDefined( $_ ) ] }; | ||||||
| 358 | |||||||
| 359 | class_type Website, | ||||||
| 360 | { class => 'WWW::Google::Contacts::Type::Website' }; | ||||||
| 361 | |||||||
| 362 | coerce Website, | ||||||
| 363 | from HashRef, | ||||||
| 364 | via { WWW::Google::Contacts::Type::Website->new( $_ ) }, | ||||||
| 365 | from Str, | ||||||
| 366 | via { WWW::Google::Contacts::Type::Website->new( type => "home", value => $_ ) }; | ||||||
| 367 | |||||||
| 368 | subtype ArrayRefOfWebsite, | ||||||
| 369 | as ArrayRef[ Website ]; | ||||||
| 370 | |||||||
| 371 | coerce ArrayRefOfWebsite, | ||||||
| 372 | from ArrayRef, | ||||||
| 373 | via { [ map { to_Website( $_ ) } @{ $_ } ] }, | ||||||
| 374 | from Any, | ||||||
| 375 | via { [ to_Website( $_ ) ] }; | ||||||
| 376 | |||||||
| 377 | class_type Photo, | ||||||
| 378 | { class => 'WWW::Google::Contacts::Photo' }; | ||||||
| 379 | |||||||
| 380 | coerce Photo, | ||||||
| 381 | from HashRef, | ||||||
| 382 | via { require WWW::Google::Contacts::Photo; WWW::Google::Contacts::Photo->new( $_ ) }; | ||||||