package com.getirkit.irkit.net;

import retrofit.Callback;
import retrofit.http.Body;
import retrofit.http.GET;
import retrofit.http.POST;
import retrofit.mime.TypedInput;

/**
 * IRKit Device HTTP APIのインタフェースです。
 * Interface for IRKit Device HTTP API.
 *
 * <p>Example:
 * <pre><code>
 * IRHTTPClient httpClient = IRKit.sharedInstance().getHTTPClient();
 *
 * // Set base URL
 * httpClient.setDeviceAPIEndpoint("http://192.168.1.1"); // IRKit IP address
 * // Or from IRPeripheral
 * httpClient.setDeviceAPIEndpoint(peripheral.getDeviceAPIEndpoint());
 *
 * // Get Device HTTP API service
 * IRDeviceAPIService deviceAPI = httpClient.getDeviceAPIService();
 *
 * // Request parameters
 * IRDeviceAPIService.PostMessagesRequest req = new IRDeviceAPIService.PostMessagesRequest();
 * req.format = "raw";
 * req.freq = 38.0f;
 * req.data = new int[] {
 *     18031, 8755, 1190, 1190, 1190, // ...
 * };
 *
 * // Send POST /messages
 * deviceAPI.postMessages(req, new Callback<IRDeviceAPIService.PostMessagesResponse>() {
 *     {@literal @}Override
 *     public void success(IRDeviceAPIService.PostMessagesResponse postMessagesResponse, Response response) {
 *         // Success
 *     }
 *
 *     {@literal @}Override
 *     public void failure(RetrofitError error) {
 *         // Error
 *     }
 * });
 * </code></pre></p>
 *
 * @see <a href="http://getirkit.com/#IRKit-Device-API">IRKit Device HTTP API</a>
 */
public interface IRDeviceAPIService {
    /**
     * postKeys()のレスポンスです。
     * Response of postKeys().
     *
     * @see #postKeys(Callback)
     */
    class PostKeysResponse {
        public String clienttoken;
    }

    /**
     * clienttoken を取得します。
     *
     * @param callback
     */
    @POST("/keys")
    void postKeys(Callback<PostKeysResponse> callback);

    /**
     * getMessages()のレスポンスです。
     * Response of getMessages().
     *
     * @see #getMessages(Callback)
     */
    class GetMessagesResponse {
        public String format;
        public double freq;
        public int[] data;
    }

    /**
     * 最も新しい受信した赤外線信号を返します。Long pollingには対応していません。
     *
     * @param callback
     */
    @GET("/messages")
    void getMessages(Callback<GetMessagesResponse> callback);

    /**
     * postMessages()のリクエストパラメータです。
     * Request parameters for postMessages().
     *
     * @see #postMessages(PostMessagesRequest, Callback)
     */
    public static class PostMessagesRequest {
        public String format;
        public float freq;
        public int[] data;
    }

    /**
     * postMessages()のレスポンスです。
     * Response of postMessages().
     *
     * @see #postMessages(PostMessagesRequest, Callback)
     */
    public static class PostMessagesResponse {
    }

    /**
     * 赤外線信号を送信します。
     *
     * @param request
     * @param callback
     */
    @POST("/messages")
    void postMessages(@Body PostMessagesRequest request, Callback<PostMessagesResponse> callback);

    /**
     * postWifi()のレスポンスです。
     * Response of postWifi().
     *
     * @see #postWifi(TypedInput, Callback)
     */
    public static class PostWifiResponse {
    }

    /**
     * IRKitをWi-Fiに接続させます。
     *
     * @param callback
     */
    @POST("/wifi")
    void postWifi(@Body TypedInput body, Callback<PostWifiResponse> callback);
}

@@ -3262,11 +3262,479 @@
 llback);
+%0A%0A    /**%0A     * getHome()%E3%81%AE%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B9%E3%81%A7%E3%81%99%E3%80%82%0A     *%0A     * @see #getHome(Callback)%0A     */%0A    public static class GetHomeResponse %7B%0A    %7D%0A%0A    /**%0A     * %22/%22%EF%BC%88%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8%EF%BC%89%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E5%AE%9F%E8%B3%AA%E7%9A%84%E3%81%AA%E5%BD%B1%E9%9F%BF%E3%81%AE%E3%81%AA%E3%81%84%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%81%A7%E3%81%99%E3%80%82%E6%8E%A5%E7%B6%9A%E7%A2%BA%E8%AA%8D%E3%82%84%E3%83%98%E3%83%83%E3%83%80%E5%8F%96%E5%BE%97%E7%94%A8%E3%81%AB%E4%BD%BF%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%0A     * Fetches %22/%22 (root). This request has no effect. Used for checking connection or retrieving headers.%0A     *%0A     * @param callback %E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B9%E3%82%92%E5%8F%97%E3%81%91%E5%8F%96%E3%82%8B%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%80%82 Callback for receiving the response.%0A     */%0A    @GET(%22/%22)%0A    void getHome(Callback%3CGetHomeResponse%3E callback);
 %0A%7D%0A

Add IRDeviceAPIService#getHome()