2007-09-23 Jorn Baayen * NEWS: * configure.ac: Release 0.6. 2007-09-21 Jorn Baayen * libgupnp/gupnp-control-point.c: (load_description): * libgupnp/gupnp-service-info.c: (got_scpd_url), (gupnp_service_info_get_introspection_async): Add pending GET requests to pending_gets before sending off the message, and remove them again before emitting any callbacks on response. 2007-09-21 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose), (subscription_expire), (subscribe_got_response), (subscribe): * libgupnp/gupnp-service.c: (gupnp_service_dispose), (gupnp_service_notify_valist), (notify_got_response), (notify_subscriber): Cancel all pending SoupMessages on dispose. 2007-09-20 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (unsubscribe): subscription_timeout_id can be 0 (when we are resubscribing). 2007-09-20 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose), (gupnp_control_point_finalize), (process_service_list), (process_device_list), (description_loaded), (got_description_url), (load_description), (gupnp_control_point_resource_unavailable): * libgupnp/gupnp-device-info-private.h: * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_dispose), (gupnp_device_info_class_init), (gupnp_device_info_get_service): * libgupnp/gupnp-device-proxy-private.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service), (_gupnp_device_proxy_new): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property), (gupnp_service_info_dispose), (gupnp_service_info_class_init): * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (_gupnp_service_proxy_new): * libgupnp/xml-util.c: * libgupnp/xml-util.h: Introduce a wrapper object for xmlDocs. Each proxy takes a reference on the xmlDoc wrapper it uses. 2007-09-18 Zeeshan Ali * libgupnp/gvalue-util.c: Accept 'yes' and 'no' as boolean values as well. 2007-09-17 Jorn Baayen * libgupnp/gupnp-service-proxy.c: Specify the reason why notify subscription failed in subscription-lost signal. 2007-09-17 Zeeshan Ali * libgupnp/gupnp-service.c: Specify the reason why notify failed in the error to the notify-failed signal. 2007-09-10 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose): * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose), (finish_action_msg), (server_handler), (subscribe), (unsubscribe), (gupnp_service_proxy_set_subscribed): Always unsubscribe proxy on dispose, but do it asynchronously. This means that the unsubscribe request may not always be sent on exit. The UPnP spec, however, does not require this to happen. This should fix bug #500 as well. 2007-09-09 Jorn Baayen * libgupnp/gupnp-service-info.h: * tests/test-introspection.c: (print_state_variables): Mark GUPnPServiceIntrospectionCallback() 'error' argument as 'const'. 2007-09-09 Zeeshan Ali Jorn Baayen * tests/test-introspection.c: Correct the order of arguments in a function call, and free GError in sync code only. 2007-09-08 Zeeshan Ali * libgupnp/gupnp-device-info.c: gupnp_device_info_get_model_number() returns model number and not model description. 2007-09-08 Jorn Baayen * libgupnp/gupnp-control-point.c: (got_description_url): * libgupnp/gupnp-service-info.c: (got_scpd_url): * libgupnp/gupnp-service-proxy.c: (action_got_response), (finish_action_msg): Do not double-free message structures on cancel. 2007-09-05 Zeeshan Ali * libgupnp/gupnp-device-info.c: BUGFIX: Don't use a NULL pointer. 2007-09-03 Zeeshan Ali * libgupnp/accept-language.c: * libgupnp/accept-language.h: * libgupnp/gena-protocol.h: * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-context.c: * libgupnp/gupnp-context.h: * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-control-point.h: * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy-private.h: * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-device-proxy.h: * libgupnp/gupnp-device.c: * libgupnp/gupnp-device.h: * libgupnp/gupnp-error-private.h: * libgupnp/gupnp-error.c: * libgupnp/gupnp-error.h: * libgupnp/gupnp-root-device.c: * libgupnp/gupnp-root-device.h: * libgupnp/gupnp-service-info.c: * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-introspection-private.h: * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-introspection.h: * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-service-proxy.h: * libgupnp/gupnp-service.h: * libgupnp/gupnp-types-private.h: * libgupnp/gupnp-types.c: * libgupnp/gupnp-types.h: * libgupnp/gupnp.h: * libgupnp/gvalue-util.c: * libgupnp/gvalue-util.h: * libgupnp/xml-util.c: * libgupnp/xml-util.h: * tests/test-browsing.c: * tests/test-introspection.c: * tests/test-proxy.c: Remove trailing whitespace. * tests/test-server.c: - Remove trailing whitespace. - Provide "UpdateID" in response of Browse action. 2007-09-03 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: Use gvalue_util_set_value_from_string() for conversion from G_TYPE_STRING. 2007-08-30 Jorn Baayen * libgupnp/gupnp-device-info.c: (gupnp_device_info_list_device_types), (gupnp_device_info_get_device), (gupnp_device_info_list_service_types): Clarify subresource retrieval in docs. 2007-08-29 Jorn Baayen * configure.in: Bump version number to 0.4.99. 2007-08-28 Zeeshan Ali Jorn Baayen * libgupnp/gupnp-service.c: * libgupnp/gupnp-service.h: * doc/gupnp-sections.txt: - Add gupnp_service_signals_autoconnect () - Remove whitespace * configure.ac: * gupnp-1.0.pc.in: * gupnp-1.0-uninstalled.pc.in: Require gmodule. * tests/Makefile.am: * tests/test-server.c: Modify the test server to utilize gupnp_service_signals_autoconnect(). 2007-08-26 Jorn Baayen * gupnp-1.0-uninstalled.pc.in: * gupnp-1.0.pc.in: Move libsoup back into Requires.. we do include it in public headers after all. 2007-08-23 Jorn Baayen * gupnp-1.0-uninstalled.pc.in: * gupnp-1.0.pc.in: Move libsoup and uuid reqs to Requires.Private, and remove the shared-mime-data req altogether. 2007-08-21 Jorn Baayen * NEWS: * configure.ac: Release gupnp 0.4. 2007-08-14 Jorn Baayen * libgupnp/gupnp-device.c: (gupnp_device_class_init): Remove unused function. 2007-08-13 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-service-proxy.c: (write_in_parameter), (read_out_parameter): * libgupnp/gupnp-service.c: (gupnp_service_action_set_value), (create_property_set): * libgupnp/gvalue-util.c: * libgupnp/gvalue-util.h: * libgupnp/xml-util.c: (xml_util_node_get_content_value): Add more elaborate GValue conversion functions and use them instead of old conversion code. 2007-08-09 Jorn Baayen * configure.ac: Bump version number to 0.3.99. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_send_action_valist), (gupnp_service_proxy_send_action_hash), (gupnp_service_proxy_begin_action), (begin_action_msg), (action_got_response), (finish_action_msg), (write_in_parameter), (gupnp_service_proxy_begin_action_valist), (gupnp_service_proxy_begin_action_hash), (gupnp_service_proxy_end_action), (check_action_response), (read_out_parameter), (gupnp_service_proxy_end_action_valist): * libgupnp/gupnp-service-proxy.h: Added a new series of functions for sending actions taking hash tables of parameter name-GValue pairs. * libgupnp/gupnp-service.c: (gupnp_service_action_get_valist), (gupnp_service_action_set_valist), (gupnp_service_notify_valist): Don't fail completely on GValue collection errors. * doc/gupnp-sections.txt: Added the new _hash() functions. 2007-08-08 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (set_variable_type), (state_variable_search_func), (gupnp_service_introspection_get_state_variable), (action_search_func), (gupnp_service_introspection_get_action): * libgupnp/gupnp-service-introspection.h: - Add methods to reteive state variable and action by name. - Default value of 'step' in state variable info should be '1' for compatibility with GtkSpinButton API. 2007-08-07 Zeeshan Ali * Makefile.am: * configure.ac: * gupnp-1.0-uninstalled.pc.in: Enable the users to build/link against uninstalled gupnp. 2007-08-03 Jorn Baayen * libgupnp/gupnp-service.c: (gupnp_service_constructor): Only include evented state variables in the initial event message. 2007-08-02 Jorn Baayen * NEWS: * configure.ac: Release 0.3. 2007-08-01 Jorn Baayen * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device): * libgupnp/gupnp-device.c: (gupnp_device_get_device): Allow embedded devices to have their own UDNs. 2007-07-27 Priit Laes * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): Use G_VA_COPY to get things build on some weird architectures. 2007-07-26 Jorn Baayen * configure.ac: Bump version number to 0.2. 2007-07-26 Zeeshan Ali * libgupnp/gupnp-service.c: (new_action_response_node): A small fix to the last change from jorn to fix the build. 2007-07-26 Jorn Baayen * libgupnp/gupnp-control-point.c: (process_service_list), (process_device_list), (gupnp_control_point_resource_unavailable): * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_get_property), (gupnp_device_info_finalize), (gupnp_device_info_class_init), (gupnp_device_info_get_url_base), (gupnp_device_info_get_udn), (gupnp_device_info_get_device_type), (gupnp_device_info_get_friendly_name), (gupnp_device_info_get_manufacturer), (gupnp_device_info_get_manufacturer_url), (gupnp_device_info_get_model_description), (gupnp_device_info_get_model_name), (gupnp_device_info_get_model_number), (gupnp_device_info_get_model_url), (gupnp_device_info_get_serial_number): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_service): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property), (gupnp_service_info_get_property), (gupnp_service_info_dispose), (gupnp_service_info_finalize), (gupnp_service_info_class_init), (gupnp_service_info_get_url_base), (gupnp_service_info_get_udn), (gupnp_service_info_get_service_type), (gupnp_service_info_get_id), (gupnp_service_info_get_scpd_url), (gupnp_service_info_get_control_url): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist), (gupnp_service_proxy_get_subscribed), (_gupnp_service_proxy_new): * libgupnp/gupnp-service.c: (new_action_response_node): * tests/test-browsing.c: (device_proxy_available_cb): * tests/test-introspection.c: (service_proxy_unavailable_cb): Handle the case where no serviceType (or deviceType) is specified in the description document: - ControlPoint saves the discovered types into the proxies, so that unavailability can be detected even if the description document is bogus. - Service and ServiceProxy warn if serviceType is not specified. This has the side effect that the return value of _get_{device,service}_type() now returns a const. Also added additional checks. 2007-07-26 Zeeshan Ali * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy-private.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service), (_gupnp_device_proxy_new): * libgupnp/gupnp-device.c: (gupnp_device_get_device), (gupnp_device_get_service), (_gupnp_device_new): * libgupnp/gupnp-service-info.c: * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (_gupnp_service_proxy_new): * libgupnp/gupnp-service.c: (_gupnp_service_new): Make it clear to the user that return value of gupnp_{device,service}_info_get_url_base() must not be freed o modified. 2007-07-26 Jorn Baayen * libgupnp/gupnp-service-proxy.h: * libgupnp/gupnp-service.h: Cosmetic changes. 2007-07-26 Jorn Baayen * doc/gupnp-sections.txt: * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy.h: Document callback prototypes. * libgupnp/gupnp-service-info.c: (got_scpd_url), (gupnp_service_info_get_introspection_async): * tests/test-introspection.c: (print_state_variables): Switch the order of the 'error' and 'user-data' arguments in the async introspection retrieval callback, so that 'user-data' is now last for consistency. 2007-07-26 Jorn Baayen * gupnp-1.0.pc.in: List all dependencies. 2007-07-26 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (gupnp_service_action_arg_info_free), (gupnp_service_action_info_free), (gupnp_service_introspection_finalize), (get_actions), (get_state_variables), (construct_introspection_info), (collect_action_names), (collect_variable_names), (gupnp_service_introspection_new), (gupnp_service_introspection_list_action_names), (gupnp_service_introspection_list_actions), (gupnp_service_introspection_list_state_variables), (gupnp_service_introspection_list_state_variable_names): Get rid of the hashtables since the function that needed them have been removed. 2007-07-25 Zeeshan Ali * libgupnp/gupnp-service-introspection.h: Fix struct docs for gtk-doc. 2007-07-25 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-introspection.h: Add docs for structs and only mention once the extremely dependency on the availability of SCPD. :) 2007-07-25 Jorn Baayen * libgupnp/gupnp-service-introspection.c: Added a comment warning people against using introspection in regular apps. 2007-07-25 Jorn Baayen A doc/gupnp-sections.txt: * libgupnp/gupnp-error.c: * libgupnp/gupnp-service-introspection.h: * libgupnp/gupnp-service.h: * libgupnp/gupnp-types.c: Doc polish. 2007-07-25 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-introspection.h: Remove unneeded functions. 2007-07-25 Jorn Baayen * README: Added text from website. 2007-07-25 Jorn Baayen * libgupnp/gupnp-device.c: (gupnp_device_get_device), (gupnp_device_get_service), (gupnp_device_get_property), (gupnp_device_dispose), (gupnp_device_init), (gupnp_device_class_init), (_gupnp_device_find_element_for_udn): * libgupnp/gupnp-root-device.c: (gupnp_root_device_new): * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service.c: (gupnp_service_action_return_error), (gupnp_service_constructor), (gupnp_service_set_property), (gupnp_service_get_property), (gupnp_service_dispose), (gupnp_service_finalize), (gupnp_service_class_init), (notify_got_response), (notify_subscriber), (create_property_set), (flush_notifications), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify), (_gupnp_service_new): Devices and Services reference their RootDevice. On RootDevice unavailability Service purges its subscriptions. * tests/test-server.c: (main): Unref content_dir. 2007-07-25 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose): * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose), (subscribe_got_response), (gupnp_service_proxy_set_subscribed): Unsubscribe proxies automatically only at control point dispose. 2007-07-25 Jorn Baayen * libgupnp/gupnp-control-point.c: (load_description), (gupnp_control_point_resource_unavailable): Destroy proxy before destroying the associated xmlDoc. * libgupnp/gupnp-error.h: * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_introspection), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist), (subscription_expire), (subscribe), (unsubscribe): * libgupnp/gupnp-service.c: (notify_subscriber): Better invalid URL error handling. * tests/Makefile.am: R tests/test-client.c: A tests/test-browsing.c: (device_proxy_unavailable_cb): A tests/test-proxy.c: Split out test-client into test-browsing and test-proxy better illustrating how to use the API. 2007-07-25 Jorn Baayen * libgupnp/gupnp-service.c: (gupnp_service_init), (gupnp_service_finalize), (notify_got_response): Create & destroy notify queue. * libgupnp/gupnp-service.h: Added 'const' to constant signal arguments. * tests/test-client.c: (device_proxy_unavailable_cb), (service_proxy_available_cb): Connect to 'subscription-lost' signal. * tests/test-server.c: (browse_cb), (query_cb), (main): Connect to 'notify-failed' signal. Print action locales. Test gupnp_service_notify(). 2007-07-25 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (subscribe_got_response): Remove server handler on all subscription errors. 2007-07-25 Jorn Baayen * libgupnp/gupnp-marshal.list: * libgupnp/gupnp-service.c: (gupnp_service_class_init): Don't box the to-be-filled GValue. * tests/test-client.c: (notify_cb), (service_proxy_available_cb): * tests/test-server.c: (browse_cb), (main): Test event notification. 2007-07-25 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (server_handler): Remove debug spew. 2007-07-25 Jorn Baayen * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-types.c: Doc polish. 2007-07-24 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (gupnp_service_state_variable_info_free), (gupnp_service_action_info_free), (gupnp_service_introspection_finalize), (set_string_value_limits), (get_action_arguments), (action_argument_list_free), (get_actions), (collect_hash_keys), (collect_action_arguments), (collect_actions), (collect_state_variables): * libgupnp/gupnp-service-introspection.h: * libgupnp/gupnp-service.c: (gupnp_service_constructor): * tests/test-introspection.c: (print_action_arguments), (print_actions), (print_state_variables): Use GList instead of GSList for compatibility with the rest of the library. 2007-07-24 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (server_handler): Don't allow g_main_context_iteration() to block. 2007-07-24 Jorn Baayen * configure.ac: Depend on gssdp 0.3. * libgupnp/gupnp-control-point.c: (gupnp_control_point_resource_unavailable): Don't depend on deleted list items in loop. 2007-07-24 Jorn Baayen * NEWS: Added news items for 0.2. 2007-07-23 Jorn Baayen * libgupnp/gupnp-control-point.c: (load_description): * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_introspection), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-proxy.c: (subscription_expire), (subscribe), (unsubscribe): * libgupnp/gupnp-service.c: (notify_subscriber): Warn on invalid URL (don't crash!). 2007-07-23 Jorn Baayen * libgupnp/gupnp-marshal.list: * libgupnp/gupnp-service-proxy.c: (server_handler), (subscription_expire), (subscribe_got_response), (subscribe): * libgupnp/gupnp-service.c: (parse_timeout), (subscribe), (subscription_server_handler), (gupnp_service_constructor), (gupnp_service_finalize), (gupnp_service_class_init), (gupnp_service_notify), (gupnp_service_notify_valist), (notify_got_response), (notify_subscriber), (create_property_set), (flush_notifications), (gupnp_service_notify_value): * libgupnp/gupnp-service.h: Handle multiple callbacks URLs. Send initial event message. 2007-07-23 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (construct_introspection_info), (collect_hash_keys), (gupnp_service_introspection_list_action_names), (gupnp_service_introspection_list_state_variable_names): * libgupnp/gupnp-service-introspection.h: - Add _list_state_variable_names() method. - a minor optimization. * tests/test-introspection.c: (service_proxy_available_cb): centralize the error handling. 2007-07-23 Jorn Baayen * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_introspection), (got_scpd_url): * libgupnp/gupnp-service-introspection.c: (gupnp_service_introspection_set_property), (gupnp_service_introspection_finalize): Don't keep xmlDoc around longer than necessary. 2007-07-23 Zeeshan Ali Jorn Baayen * libgupnp/gupnp-error.c: * libgupnp/gupnp-error-private.h: * libgupnp/gupnp-service-proxy.c: Add & use server error utility functions. * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_introspection), (scpd_loaded), (got_scpd_url), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-info.h: Report non-programmer errors using GError. * libgupnp/gupnp-service-introspection.c: (gupnp_service_introspection_set_property), (construct_introspection_info), (gupnp_service_introspection_new), (gupnp_service_introspection_get_state_variable): Fix some typos and conditions. * tests/test-introspection.c: (got_introspection), (service_proxy_available_cb): Update the test app to use the new GError-using API. 2007-07-11 Jorn Baayen * libgupnp/gupnp-error.h: * libgupnp/gupnp-service-proxy.c: (set_error_literal), (gupnp_service_proxy_end_action_valist): Propagate UPnPError codes. 2007-07-11 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): Set error if no controlURL is defined. 2007-07-08 Jorn Baayen * libgupnp/gupnp-control-point.c: (got_description_url), (load_description): Fix description doc refcounting bugs. 2007-07-08 Jorn Baayen * libgupnp/gupnp-control-point.c: (description_loaded): * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property): Each info object stores its own copy of the URLBase SoupUri. 2007-07-08 Jorn Baayen * libgupnp/gupnp-control-point.c: (process_service_list), (process_device_list), (load_description), (gupnp_control_point_resource_unavailable): * libgupnp/gupnp-service-proxy-private.h: Correct constructor argument order. Plug leak. Update ref count on cached description doc correctly. 2007-07-08 Zeeshan Ali Jorn Baayen * libgupnp/gupnp-service-info.c: (get_scpd_url_data_free), (gupnp_service_info_class_init), (gupnp_service_info_get_introspection), (scpd_ready), (got_scpd_url), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-info.h: Use a callback instead of a signal. * tests/test-introspection.c: (interrupt_signal_handler), (got_introspection), (service_proxy_available_cb), (main): - Use the new callback API. - Terminate cleanly on SIGTERM. * tests/test-client.c: (interrupt_signal_handler), (main): * tests/test-server.c: (interrupt_signal_handler), (main): Terminate cleanly on SIGTERM. 2007-07-07 Jorn Baayen * doc/gupnp-docs.sgml: * libgupnp/gupnp-types.h: Include gupnp-types in doc TOC. 2007-07-07 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose): * libgupnp/gupnp-service-info.c: (gupnp_service_info_dispose): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_cancel_action): Set message status to SOUP_STATUS_CANCELLED before cancelling. * libgupnp/gupnp-service-proxy.c: Elaborate begin_action() comments. 2007-07-07 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-types-private.h: * libgupnp/gupnp-types.c: (gupnp_type_to_string): * libgupnp/gupnp-types.h: Make private gupnp_data_type_to_gtype(). Add gupnp_value_get_string() macro. * libgupnp/xml-util.c: (xml_util_node_get_content_value): Smarter value transformation like in ServiceProxy. 2007-07-07 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_resource_unavailable): Handle resource-unavailable in the same way. 2007-07-07 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_finalize), (process_service_list), (process_device_list), (description_loaded), (got_description_url): * libgupnp/gupnp-device-proxy-private.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service): * libgupnp/gupnp-device.c: (gupnp_device_get_device), (gupnp_device_get_service), (_gupnp_device_find_element_for_udn): * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_get_subscribed): * libgupnp/gupnp-service.c: (gupnp_service_thaw_notify): Create proxies for all, not just one, matching devices and services. 2007-07-07 Jorn Baayen * libgupnp/gupnp-service-info.c: (gupnp_service_info_get_property), (gupnp_service_info_dispose): Rearrange some code. 2007-07-07 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-service-info.c: * libgupnp/gupnp-service-introspection-private.h: * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-introspection.h: * libgupnp/gupnp.h: Make introspection constructor private. 2007-07-07 Jorn Baayen * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-types.c: Handle conversion of strings to GUPnP string-based types. 2007-07-06 Zeeshan Ali Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-types.h: * libgupnp/gupnp-types.c: (gupnp_type_to_string), (gupnp_bin_base64_get_type), (gupnp_bin_hex_get_type), (gupnp_date_get_type), (gupnp_date_time_get_type), (gupnp_date_time_tz_get_type), (gupnp_time_get_type), (gupnp_time_tz_get_type), (gupnp_uri_get_type), (gupnp_uuid_get_type), (gupnp_data_type_to_gtype): Introduce new types for some UPnP data types that do not have a direct equivalent in glib. * libgupnp/xml-util.c: (xml_util_get_attribute_contents): * libgupnp/xml-util.h: Add helper function for getting the contents of an attribute. * libgupnp/gupnp-service-introspection.c: (gupnp_service_state_variable_info_free), (gupnp_service_introspection_set_property), (gupnp_service_introspection_finalize), (gupnp_service_introspection_class_init), (set_variable_type), (get_state_variable), (get_action_argument), (contstruct_introspection_info), (gupnp_service_introspection_new): * libgupnp/gupnp-service-introspection.h: - Use the new GUPnP types instead of string type for some UPnP types. - Take a pointer to SCPD xml instead of it's url in the constructor and leave the download of the document to the caller. - Expect documents to specify 'sendEvents' as an attribute of the state variable node. * libgupnp/gupnp-service-info.c: (gupnp_service_info_init), (get_scpd_url_data_free), (gupnp_service_info_dispose), (gupnp_service_info_class_init), (get_scpd), (gupnp_service_info_get_introspection), (scpd_ready), (got_scpd_url), (gupnp_service_info_get_introspection_async): * libgupnp/gupnp-service-info.h: - Handle the SCPD GET for and provide introspection's constructor a pointer to the xml document rather than the SCPD URL. - Provide an asynchronous way of geting the introspection object. * tests/test-introspection.c: (print_state_variables), (got_introspection), (service_proxy_available_cb), (main): Provide a way to specify that the introspection object be created/requested asynchronously through a command-line argument. 2007-07-04 Zeeshan Ali * libgupnp/gupnp-service-introspection.c: (gupnp_service_state_variable_info_free), (gupnp_service_action_info_free), (gupnp_service_introspection_finalize), (set_variable_limits), (set_variable_type), (get_action_argument), (gupnp_service_action_arg_info_free), (collect_action_names), (collect_action_arguments), (collect_actions), (collect_state_variables), (gupnp_service_introspection_list_action_names), (gupnp_service_introspection_list_action_arguments), (gupnp_service_introspection_list_actions), (gupnp_service_introspection_list_state_variables), (gupnp_service_introspection_get_state_variable): * libgupnp/gupnp-service-introspection.h: * tests/test-introspection.c: (print_action_arguments), (print_actions), (print_state_variables): - Return local copies of data to avoid malloc()s and free()s. - Cache the returned GSLists to avoid allocating the list each time. - return a 'const' from each function and update doc comments to make it very clear to the user that the return data can't be modified or freed. - Rename 'gtype' field to 'type' for consistancy. - Introduce an enum type for the direction of the action argument and use that instead of a string. - Add a function for getting state variable information by name. 2007-07-01 Jorn Baayen * libgupnp/gupnp-service-proxy.c: Remove unused includes. 2007-07-01 Jorn Baayen * libgupnp/gupnp-device-info.c: (gupnp_device_info_list_device_types), (gupnp_device_info_list_service_types): Use xml_util_get_child_element_content_glib(). 2007-07-01 Jorn Baayen * doc/gupnp-docs.sgml: * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-device-info.c: (gupnp_device_info_class_init): * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-device.c: * libgupnp/gupnp-service-info.c: (gupnp_service_info_class_init): * libgupnp/gupnp-service-introspection.c: * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-service.c: Documentation updates. 2007-07-01 Jorn Baayen * libgupnp/gupnp-service-introspection.c: (gupnp_service_introspection_finalize), (contstruct_introspection_info): Added small optimization + missing NULL checks. 2007-07-01 Jorn Baayen * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-device-proxy.c: (_gupnp_device_proxy_new_from_doc): * libgupnp/gupnp-root-device.c: (gupnp_root_device_constructor): * libgupnp/gupnp-service-info.c: (gupnp_service_info_finalize), (gupnp_service_info_get_udn): * libgupnp/gupnp-service-introspection.c: (set_variable_type), (get_state_variable), (get_action_argument), (get_actions), (get_state_variables): * libgupnp/gupnp-service-proxy.c: (_gupnp_service_proxy_new_from_doc): * libgupnp/xml-util.c: (xml_util_get_element): * libgupnp/xml-util.h: Add more shared XML helpers. 2007-07-01 Jorn Baayen * libgupnp/gupnp-device-info.c: (get_property), (gupnp_device_info_get_friendly_name), (gupnp_device_info_get_manufacturer), (gupnp_device_info_get_model_name), (gupnp_device_info_get_model_number): Use get_url_property() for all URL properties. 2007-07-01 Jorn Baayen * libgupnp/gupnp-service.c: (gupnp_service_class_init): Use G_TYPE_VALUE for "value" argument on "query-variable" signal. 2007-07-01 Jorn Baayen * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_get_property), (gupnp_device_info_finalize), (gupnp_device_info_class_init), (icon_parse): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service), (_gupnp_device_proxy_new_from_doc), (_gupnp_device_proxy_new_from_element): * libgupnp/gupnp-device.c: (gupnp_device_get_device), (gupnp_device_get_service), (_gupnp_device_new_from_element): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property), (gupnp_service_info_get_property), (gupnp_service_info_finalize), (gupnp_service_info_class_init), (get_url_property): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (_gupnp_service_proxy_new_from_doc), (_gupnp_service_proxy_new_from_element): * libgupnp/gupnp-service.c: (_gupnp_service_new_from_element): Store URL base as SoupUri, and use description file location as URL base if no base is specified explicitly. * libgupnp/gupnp-root-device.c: (gupnp_root_device_finalize), (gupnp_root_device_set_property), (gupnp_root_device_get_property), (gupnp_root_device_constructor): * libgupnp/gupnp-root-device.h: Remove API for setting URL base as the explicit specification of a URL base is discouraged. Don't autohost description file. * tests/test-server.c: (main): Updated for changed API. 2007-06-30 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action): Use M-POST when POST fails. 2007-06-30 Jorn Baayen * libgupnp/gupnp-error.h: * libgupnp/gupnp-service.c: (gupnp_service_action_return_error): Fill in description automatically for known error codes. * libgupnp/gupnp-service-proxy.c: (convert_error_code): Handle unknown error codes. 2007-06-30 Jorn Baayen * libgupnp/gupnp-error.c: * libgupnp/gupnp-error.h: * libgupnp/gupnp-service-proxy.c: (set_error_literal), (convert_error_code), (gupnp_service_proxy_end_action_valist), (subscription_expire), (subscribe_got_response): * libgupnp/gupnp-service.c: (notify_got_response): More detailed erroring. 2007-06-30 Jorn Baayen * libgupnp/gupnp-error.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist), (set_error_literal), (gupnp_service_proxy_end_action_valist), (subscribe_got_response): * libgupnp/gupnp-service.c: (notify_got_response): Don't report GValue errors through GError, and define error codes. 2007-06-30 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_end_action), (gupnp_service_proxy_end_action_valist): Added set_error_literal() helper function. 2007-06-30 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_end_action_valist): Handle SOAP Faults. * libgupnp/gupnp-service.c: (gupnp_service_action_set_value), (gupnp_service_action_return_error): Return SOAP Fault in correct format. * tests/test-client.c: (service_proxy_available_cb): Return on error. 2007-06-30 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (subscribe_got_response): Remove obsolete comment and correct warning message. * libgupnp/gupnp-service.c: (subscription_response), (subscription_timeout), (parse_timeout), (subscribe), (resubscribe): Return correct timeout to subscriber. 2007-06-30 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_resource_unavailable): Remove unavailable device from correct list! 2007-06-29 Jorn Baayen * AUTHORS: Added Zeeshan. 2007-06-29 Zeeshan Ali reviewed by: Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp.h: * libgupnp/gupnp-service-introspection.c: (gupnp_service_introspection_init), (gupnp_service_introspection_set_property), (gupnp_service_introspection_get_property), (gupnp_service_introspection_dispose), (gupnp_service_introspection_finalize), (gupnp_service_introspection_class_init), (get_scpd), (set_default_value), (set_string_value_limits), (set_value_limit_by_name), (set_variable_limits), (set_variable_type), (get_state_variable), (get_action_argument), (get_action_arguments), (action_argument_list_free), (get_actions), (get_state_variables), (contstruct_introspection_info), (collect_action_names), (collect_action_arguments), (collect_actions), (collect_allowed_values), (copy_state_variable), (collect_state_variables), (gupnp_service_introspection_new), (gupnp_service_introspection_list_action_names), (gupnp_service_introspection_list_action_arguments), (gupnp_service_introspection_list_actions), (gupnp_service_action_arg_info_free), (gupnp_service_action_info_free), (gupnp_service_introspection_list_state_variables), (gupnp_service_state_variable_info_free): * libgupnp/gupnp-service-introspection.h: Add service introspection support. * libgupnp/gupnp-service-info.c: (gupnp_service_proxy_request_introspection): * libgupnp/gupnp-service-info.h: - Add service introspection support. * tests/Makefile.am: * tests/test-introspection.c: (print_action_arguments), (print_actions), (print_state_variables), (service_proxy_available_cb), (service_proxy_unavailable_cb), (main): Add a test application for the introspection API. 2007-06-27 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_send_action_valist): Only run the main loop if it hasn't been quit before yet. Fixes a hang. 2007-06-27 Jorn Baayen * libgupnp/gupnp-service.c: (subscription_data_free), (subscribe), (gupnp_service_constructor), (gupnp_service_finalize), (gupnp_service_class_init), (gupnp_service_notify_valist), (notify_got_response), (notify_subscriber), (flush_notifications), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify): * libgupnp/gupnp-service.h: Implement notification. 2007-06-27 Jorn Baayen * configure.ac: Depend on uuid. * libgupnp/gena-protocol.h: Added minimum timeout value. * libgupnp/gupnp-context.c: (gupnp_context_class_init): Use minimum timeout value. * libgupnp/gupnp-service.c: (gupnp_service_action_return_error), (gupnp_service_init), (query_state_variable), (control_server_handler), (subscription_response), (generate_sid), (subscription_timeout), (parse_timeout), (subscribe), (resubscribe), (unsubscribe), (subscription_server_handler), (gupnp_service_constructor), (gupnp_service_finalize), (gupnp_service_class_init), (gupnp_service_notify), (gupnp_service_notify_valist), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify), (_gupnp_service_new_from_element): Implement subscription. 2007-06-27 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-error.h: * libgupnp/gupnp-service.c: (gupnp_service_action_return_error), (query_state_variable), (control_server_handler): * libgupnp/gupnp-service.h: * libgupnp/upnp-protocol.h: More flexible error handling. 2007-06-27 Jorn Baayen * libgupnp/gupnp-service.c: (gupnp_service_action_get_value), (gupnp_service_action_set_valist), (gupnp_service_action_set_value), (gupnp_service_action_return), (gupnp_service_action_return_error), (gupnp_service_init), (new_action_response_node), (query_state_variable), (control_server_handler), (gupnp_service_notify_valist), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify), (_gupnp_service_new_from_element): * libgupnp/gupnp-service.h: Fully implement actioning. * libgupnp/Makefile.am: * libgupnp/gupnp-error.h: * libgupnp/upnp-protocol.h: Added error codes and descriptions. * libgupnp/xml-util.c: (xml_util_node_get_content_int): * libgupnp/xml-util.h: Added xml_util_node_get_content_value() for retrieving xmlNode contents as GValues. * libgupnp/gupnp-service-proxy.c: (server_handler): Use xml_util_node_get_content_value(). * tests/test-server.c: (browse_cb): Test actioning. 2007-06-26 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_end_action_valist): Small cleanup. * libgupnp/gupnp-service.c: (gupnp_service_action_get_locales), (gupnp_service_action_get), (gupnp_service_action_get_valist), (gupnp_service_action_get_value), (gupnp_service_action_set), (gupnp_service_action_set_valist), (gupnp_service_action_set_value), (gupnp_service_action_return), (gupnp_service_action_return_error), (gupnp_service_class_init), (gupnp_service_notify), (gupnp_service_notify_valist), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify): Boilerplate code. 2007-06-26 Jorn Baayen * libgupnp/gupnp-service.c: (query_state_variable), (control_server_handler): Implement QueryStateVariable. 2007-06-26 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): * libgupnp/gupnp-service.c: (gupnp_service_action_get_name), (gupnp_service_action_get_locales), (gupnp_service_action_set_value), (gupnp_service_action_return), (gupnp_service_action_return_error), (gupnp_service_init), (query_state_variable), (control_server_handler), (subscription_server_handler), (gupnp_service_constructor), (gupnp_service_dispose), (gupnp_service_finalize), (gupnp_service_class_init), (gupnp_service_notify), (gupnp_service_notify_valist), (gupnp_service_notify_value), (gupnp_service_freeze_notify), (gupnp_service_thaw_notify), (_gupnp_service_new_from_element): * libgupnp/gupnp-service.h: Basic server-side actioning. No argument handling yet. * tests/test-server.c: (browse_cb), (main): Test actioning. 2007-06-26 Jorn Baayen * libgupnp/accept-language.c: (accept_language_get_header): * libgupnp/accept-language.h: Cleanup, additional functions to convert between locale and HTTP language tag representations. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): Updated for accept-language function rename. * configure.ac: Depend on shared-mime-data. * libgupnp/Makefile.am: * libgupnp/xdgmime/Makefile.am: * libgupnp/xdgmime/xdgmime.c: * libgupnp/xdgmime/xdgmime.h: * libgupnp/xdgmime/xdgmimealias.c: * libgupnp/xdgmime/xdgmimealias.h: * libgupnp/xdgmime/xdgmimecache.c: * libgupnp/xdgmime/xdgmimecache.h: * libgupnp/xdgmime/xdgmimeglob.c: * libgupnp/xdgmime/xdgmimeglob.h: * libgupnp/xdgmime/xdgmimeint.c: * libgupnp/xdgmime/xdgmimeint.h: * libgupnp/xdgmime/xdgmimemagic.c: * libgupnp/xdgmime/xdgmimemagic.h: * libgupnp/xdgmime/xdgmimeparent.c: * libgupnp/xdgmime/xdgmimeparent.h: * libgupnp/gupnp-context.c: (hosting_server_handler): Use xdgmime to set correct Content-Type HTTP headers. * tests/test-server.c: (main): Print port number on startup. 2007-06-22 Jorn Baayen * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_get_udn): Re-use get_property() in one more spot. * libgupnp/gupnp-service.h: Added G_GNUC_NULL_TERMINATED. * libgupnp/gupnp-root-device.c: (server_handler), (fill_resource_group), (gupnp_root_device_constructor): * libgupnp/xml-util.c: (xml_util_node_get_content_int): * libgupnp/xml-util.h: Move some XML utils to xml-util.c 2007-06-22 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/accept-language.c: * libgupnp/accept-language.h: * libgupnp/gupnp-context.c: (gupnp_context_get_subscription_timeout), (hosting_server_handler), (unregister_hosting_server_handler): Proper Accept-Language support. * libgupnp/gupnp-device.c: (gupnp_device_get_service): * libgupnp/gupnp-service-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action), (gupnp_service_proxy_begin_action_valist): * libgupnp/gupnp-service.c: (gupnp_service_action_get_name), (gupnp_service_thaw_notify): * libgupnp/gupnp-service.h: Handle service object creation. 2007-06-19 Jorn Baayen * doc/Makefile.am: * doc/api-design.txt: Remove obsolete API design document. * libgupnp/gupnp-device.c: Small doc correction. * libgupnp/Makefile.am: * libgupnp/gupnp-service.c: * libgupnp/gupnp-service.h: Added Service skels. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init): Delete obsolete code. 2007-06-19 Jorn Baayen * libgupnp/gupnp-context.c: (_gupnp_context_get_session), (gupnp_context_get_subscription_timeout): * libgupnp/gupnp-context.h: * tests/test-server.c: (main): Add regular web server functionality. 2007-06-19 Jorn Baayen * libgupnp/gupnp-control-point.c: (description_loaded): * libgupnp/gupnp-device-proxy-private.h: * libgupnp/gupnp-device-proxy.c: (_gupnp_device_proxy_find_element_for_udn): * libgupnp/gupnp-device-proxy.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (find_service_element_for_type): * libgupnp/gupnp-service-proxy.h: Make ServiceProxy and DeviceProxy constructors private. 2007-06-19 Jorn Baayen * libgupnp/gupnp-context.c: (gupnp_context_dispose): * libgupnp/gupnp-control-point.c: (gupnp_control_point_dispose): * libgupnp/gupnp-root-device.c: (gupnp_root_device_finalize), (gupnp_root_device_dispose): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose): Chain up to parent class dispose and finalize methods. 2007-06-19 Jorn Baayen * libgupnp/gupnp-context.c: (gupnp_context_init): Remove unnecessary initialisations. 2007-06-19 Jorn Baayen * libgupnp/gupnp-context.c: (gupnp_context_class_init): * libgupnp/gupnp-device-info.c: (gupnp_device_info_class_init): * libgupnp/gupnp-service-info.c: (gupnp_service_info_class_init): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init): Added G_PARAM_STATIC_{NAME,NICK,BLURB}. 2007-06-19 Jorn Baayen * tests/test-server.c: (main): Use g_object_weak_ref() to destroy the description document when the root device is finalized. 2007-06-19 Jorn Baayen * libgupnp/gupnp-root-device.c: (fill_resource_group): Do not overwrite 'element' with child elements as it is still needed later. * tests/Makefile.am: * tests/test-server.c: D tests/test.c: A tests/test-client.c: Added server test case. 2007-06-18 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-device.c: * libgupnp/gupnp-root-device.c: * libgupnp/gupnp-root-device.h: Implement Device and RootDevice. * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_class_init): Detect UDN if not explicitly specified. * libgupnp/gupnp-control-point.c: (parse_usn): * libgupnp/gupnp-service.h: Fix typos. * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-device-proxy.h: No need for a private structure any more. 2007-06-14 Jorn Baayen * libgupnp/gupnp-context.c: (get_default_host_ip): Set IP to 127.0.0.1 if no non-loopback device could be found. * libgupnp/gupnp-device-info.c: (gupnp_device_info_set_property), (gupnp_device_info_get_property), (gupnp_device_info_dispose), (gupnp_device_info_finalize), (gupnp_device_info_class_init), (gupnp_device_info_get_context), (gupnp_device_info_get_location), (gupnp_device_info_get_url_base), (gupnp_device_info_get_udn), (get_property), (gupnp_device_info_get_serial_number), (gupnp_device_info_get_upc), (icon_parse), (icon_free), (gupnp_device_info_get_icon_url), (gupnp_device_info_list_devices), (gupnp_device_info_list_device_types), (gupnp_device_info_get_device), (gupnp_device_info_list_services), (gupnp_device_info_list_service_types), (gupnp_device_info_get_service): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_new): * libgupnp/gupnp-service-info.c: (gupnp_service_info_set_property), (gupnp_service_info_get_property), (gupnp_service_info_dispose), (gupnp_service_info_finalize), (gupnp_service_info_class_init), (gupnp_service_info_get_context), (gupnp_service_info_get_location), (gupnp_service_info_get_url_base), (gupnp_service_info_get_udn), (get_property), (get_url_property): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init), (gupnp_service_proxy_new): Add 'context' and 'url-base' properties to info classes. * libgupnp/gupnp-service.h: * libgupnp/gupnp-root-device.h: Server side API changes. 2007-06-11 Jorn Baayen * libgupnp/gupnp-root-device.h: * libgupnp/gupnp-service.h: API tweaks. 2007-06-11 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-device.h: * libgupnp/gupnp-root-device.h: * libgupnp/gupnp-service.h: * libgupnp/gupnp.h: Headers for server side. These are not final yet. 2007-05-30 Jorn Baayen * libgupnp/gupnp-control-point.c: (gupnp_control_point_resource_unavailable): Remove unavailable proxies from cache. 2007-05-29 Jorn Baayen * configure.ac: Bump version to 0.1.99. * libgupnp/gupnp-device-info.c: (gupnp_device_info_get_icon_url): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_get_url_base), (gupnp_device_proxy_get_device), (gupnp_device_proxy_get_service), (gupnp_device_proxy_init), (gupnp_device_proxy_class_init): * libgupnp/gupnp-device-proxy.h: Move device subdevice and service retreival from DeviceProxy to DeviceInfo. This so that client and server side code can expose identical info API. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action), (get_current_language), (action_got_response), (gupnp_service_proxy_begin_action_valist): * tests/test.c: (main): Set Accept-Language header on action requests. 2007-05-26 Jorn Baayen * libgupnp/gupnp-context.c: * libgupnp/gupnp-context.h: * libgupnp/gupnp-control-point.c: * libgupnp/gupnp-control-point.h: * libgupnp/gupnp-device-info.c: * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-device-proxy.h: * libgupnp/gupnp-error.c: * libgupnp/gupnp-service-info.c: * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy.c: * libgupnp/gupnp-service-proxy.h: More gtkdoc-fu. 2007-05-26 Jorn Baayen * configure.ac: * doc/Makefile.am: * doc/gupnp-docs.sgml: Added doc preamble. 2007-05-22 Jorn Baayen * libgupnp/gupnp-device-proxy.h: * libgupnp/gupnp-service-proxy.h: Doc coverage to 100%. 2007-05-21 Jorn Baayen * libgupnp/Makefile.am: Make sure all files get packaged. * libgupnp/gupnp-context.c: (gupnp_context_class_init): * libgupnp/gupnp-context.h: * libgupnp/gupnp-control-point.c: (gupnp_control_point_class_init): * libgupnp/gupnp-control-point.h: * libgupnp/gupnp-device-info.c: (gupnp_device_info_class_init), (icon_parse), (icon_free): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-error.c: * libgupnp/gupnp-service-info.c: (gupnp_service_info_class_init), (get_url_property), (gupnp_service_info_get_service_type), (gupnp_service_info_get_id), (gupnp_service_info_get_scpd_url), (gupnp_service_info_get_control_url): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_class_init): Doc updates. 2007-05-21 Jorn Baayen * doc/Makefile.am: Hide private bits. * doc/gupnp-docs.sgml: Added. 2007-05-21 Jorn Baayen * configure.ac: Point to gupnp.org. * po/*: Added missing files. 2007-05-10 Jorn Baayen * NEWS: * README: Added some text. * libgupnp/gupnp-device-info.h: Removed device type defines. These belong in any higher level libs now. * tests/test.c: (device_proxy_available_cb), (service_proxy_available_cb), (service_proxy_unavailable_cb), (main): Added notification test and cleaned up. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (server_handler): Parse XML part of NOTIFY messages and call notify callbacks. This means that now the client side of GUPnP is feature complete. Yay! * tests/test.c: Remove old comments. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_get_element), (gupnp_service_proxy_get_url_base), (notify_data_free), (gupnp_service_proxy_init), (gupnp_service_proxy_dispose), (gupnp_service_proxy_finalize), (gupnp_service_proxy_end_action_valist), (gupnp_service_proxy_cancel_action): * libgupnp/gupnp-service-proxy.h: Add notification management. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_end_action_valist): Correct error message. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (server_handler), (subscription_expire), (subscribe_got_response), (subscribe), (unsubscribe): Emit 'subscription-lost' when appropriate. Keep track of notify sequence numbers and resubscribe when we notice dropped notifications. 2007-05-09 Jorn Baayen * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-context.c: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_finalize), (gupnp_service_proxy_remove_notify), (subscription_expire), (subscribe_got_response), (subscribe), (unsubscribe): Generate a unique path for each proxy on the server, and use soup_server_add_handler() to capture its requests instead of using a 'server-message-received' signal from GUPnPContext. 2007-05-09 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_remove_notify), (subscription_expire), (subscribe_got_response), (subscribe), (unsubscribe): Correct "Callback" URL format is subscription message. Disable Date header parsing for now as getting a local time (taking into account daylight saving) out of an RFC 1123 time is a total pain. 2007-05-09 Jorn Baayen * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-context.c: (gupnp_context_class_init), (_gupnp_context_get_session), (server_handler), (_gupnp_context_get_server): Add hidden 'server-message-received' signal, emitted whenever the SoupServer receives a message. 2007-05-09 Jorn Baayen * libgupnp/gupnp-context.c: (_gupnp_context_get_session), (default_server_handler), (_gupnp_context_get_server), (gupnp_context_get_port), (gupnp_context_set_subscription_timeout): * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_remove_notify), (make_timeout_header), (subscription_expire), (subscribe_got_response), (subscribe): Support infinite timeout locally. Add a default server handler returning 501. 2007-05-08 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose), (subscribe), (unsubscribe), (gupnp_service_proxy_set_subscribed): Send unsubscription message synchronised on dispose. 2007-05-08 Jorn Baayen * libgupnp/gupnp-context.c: (gupnp_context_init), (gupnp_context_set_property), (gupnp_context_get_property), (gupnp_context_class_init), (_gupnp_context_get_server_url), (gupnp_context_new): * libgupnp/gupnp-context.h: * libgupnp/gupnp-service-proxy.c: (subscription_expire), (subscribe_got_response), (subscribe): Added subscription-timeout property to Context and use in ServiceProxy. 2007-05-08 Jorn Baayen * libgupnp/gupnp-service-proxy.c: (subscribe_got_response): Support infinite timeouts. 2007-05-08 Jorn Baayen * libgupnp/Makefile.am: * libgupnp/gupnp-device-proxy.c: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_dispose), (gupnp_service_proxy_begin_action), (action_got_response), (gupnp_service_proxy_end_action_valist), (gupnp_service_proxy_remove_notify), (subscription_expire), (subscribe_got_response), (subscribe), (unsubscribe), (gupnp_service_proxy_set_subscribed): Implement subscription. * tests/test.c: (service_proxy_available_cb): Test subscription. 2007-05-08 Jorn Baayen * libgupnp/gupnp-context-private.h: * libgupnp/gupnp-context.c: (make_server_id), (get_ip), (get_default_host_ip), (gupnp_context_init), (gupnp_context_set_property), (gupnp_context_get_property), (gupnp_context_dispose), (gupnp_context_finalize), (gupnp_context_class_init), (_gupnp_context_get_session): * libgupnp/gupnp-context.h: Start a SOAP server on demand, and add internal API for retrieving a URL to the server itself. * tests/test.c: (main): Updated to use changed GUPnPContext constructor. 2007-05-07 Jorn Baayen * libgupnp/gupnp-device-info.c: (icon_parse), (icon_free), (gupnp_device_info_get_icon_url): * libgupnp/gupnp-device-info.h: * libgupnp/gupnp-device-proxy.c: (gupnp_device_proxy_finalize), (gupnp_device_proxy_get_element), (gupnp_device_proxy_get_url_base), (gupnp_device_proxy_init), (gupnp_device_proxy_list_devices), (gupnp_device_proxy_get_device), (gupnp_device_proxy_list_services), (gupnp_device_proxy_get_service), (_gupnp_device_proxy_find_element_for_udn), (gupnp_device_proxy_new), (_gupnp_device_proxy_new_from_element): * libgupnp/gupnp-service-info.c: (get_property), (gupnp_service_info_get_service_type), (gupnp_service_info_get_id), (gupnp_service_info_get_scpd_url), (gupnp_service_info_get_control_url): * libgupnp/gupnp-service-info.h: * libgupnp/gupnp-service-proxy-private.h: * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_action_free), (gupnp_service_proxy_get_element), (gupnp_service_proxy_get_property), (gupnp_service_proxy_dispose), (gupnp_service_proxy_finalize), (gupnp_service_proxy_class_init), (gupnp_service_proxy_send_action_valist), (gupnp_service_proxy_begin_action_valist), (gupnp_service_proxy_end_action), (gupnp_service_proxy_end_action_valist), (find_service_element_for_type), (gupnp_service_proxy_new), (_gupnp_service_proxy_new_from_element): Take URLBase into account. Make sending actions and parsing action responses work correctly. * tests/test.c: (service_proxy_available_cb), (service_proxy_unavailable_cb), (main): Add a little control test case for ContentDirectories. 2007-05-07 Jorn Baayen * libgupnp/gupnp-control-point.c: (description_loaded), (parse_usn): Correct USN parsing. * libgupnp/gupnp-service-proxy.c: (gupnp_service_proxy_begin_action_valist): Added assertion. 2007-05-03 Jorn Baayen * libgupnp/gupnp-control-point.c: (parse_usn), (gupnp_control_point_resource_available), (gupnp_control_point_class_init), (gupnp_control_point_get_context): * libgupnp/gupnp-control-point.h: * tests/test.c: (main): GSSDPServiceBrowser -> GSSDPResourceBrowser. 2007-04-25 Zeeshan Ali * libgupnp/gupnp-device-info.h: * tests/test.c: (device_proxy_available_cb): Add some device type defines. 2007-04-16 Jorn Baayen * libgupnp/gupnp-context-private.h: Added missing header. Spotted by Priit Laes.