/* * Copyright (C) 2011 Collabora Ltd. * Copyright (C) 2011 Philip Withnall * * This library is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 2.1 of the License, or * (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library. If not, see . * * Authors: * Alban Crequy * Philip Withnall */ using Gee; /** * Object representing a web service contact that can have some parameters * associated with it. * * See {@link Folks.AbstractFieldDetails}. * * @since 0.6.0 */ public class Folks.WebServiceFieldDetails : AbstractFieldDetails { /** * Create a new WebServiceFieldDetails. * * @param value the value of the field, a non-empty web service address * @param parameters initial parameters. See * {@link AbstractFieldDetails.parameters}. A `null` value is equivalent to an * empty map of parameters. * * @return a new WebServiceFieldDetails * * @since 0.6.0 */ public WebServiceFieldDetails (string value, MultiMap? parameters = null) { if (value == "") { warning ("Empty web service address passed to " + "WebServiceFieldDetails."); } Object (value: value, parameters: parameters); } /** * {@inheritDoc} * * @since 0.6.0 */ public override bool equal (AbstractFieldDetails that) { return base.equal (that); } /** * {@inheritDoc} * * @since 0.6.0 */ public override uint hash () { return base.hash (); } } /** * Web service contact details. * * @since 0.5.0 */ public interface Folks.WebServiceDetails : Object { /** * A mapping of web service to an (unordered) set of web service addresses. * * Each mapping is from an arbitrary web service identifier to a set of web * service addresses for the contact, listed in no particular order. * * Web service addresses are guaranteed to be unique per web service, but * not necessarily unique amongst all web services. * * @since 0.6.0 */ public abstract Gee.MultiMap web_service_addresses { get; set; } /** * Change the contact's web service addresses. * * It's preferred to call this rather than setting * {@link WebServiceDetails.web_service_addresses} directly, as this method * gives error notification and will only return once the addresses have been * written to the relevant backing store (or the operation's failed). * * @param web_service_addresses the set of addresses * @throws PropertyError if setting the addresses failed * @since 0.6.2 */ public virtual async void change_web_service_addresses ( MultiMap web_service_addresses) throws PropertyError { /* Default implementation. */ throw new PropertyError.NOT_WRITEABLE ( _("Web service addresses are not writeable on this contact.")); } }