// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/request/RegistrationRequestBody.java
// public final class RegistrationRequestBody extends RequestBody {
// 
//     @SerializedName("providerName")
//     @NonNull
//     public final String providerName;
// 
//     @SerializedName("registrationId")
//     @NonNull
//     public final String registrationId;
// 
//     public RegistrationRequestBody(@NonNull final String uuid,
//                                    @NonNull final String providerName,
//                                    @NonNull final String registrationId) {
//         super(uuid);
//         this.providerName = providerName;
//         this.registrationId = registrationId;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/request/SubscribeOrUnsubscribeRequestBody.java
// public final class SubscribeOrUnsubscribeRequestBody {
// 
//     @NonNull
//     public final String topic;
// 
//     @NonNull
//     public final String uuid;
// 
//     public SubscribeOrUnsubscribeRequestBody(@NonNull final String topic, @NonNull final String uuid) {
//         this.topic = topic;
//         this.uuid = uuid;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/request/UnregistrationRequestBody.java
// public final class UnregistrationRequestBody extends RequestBody {
// 
//     public UnregistrationRequestBody(@NonNull final String uuid) {
//         super(uuid);
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/request/push/PushMessageRequestBody.java
// public final class PushMessageRequestBody {
// 
//     @SerializedName("uuids")
//     public final Set<String> uuids;
// 
//     @SerializedName("sender")
//     public final String sender;
// 
//     @SerializedName("message")
//     @NonNull
//     public final String message;
// 
//     public PushMessageRequestBody(@NonNull final Set<String> uuids,
//                                   @NonNull final String sender,
//                                   @NonNull final String message) {
//         this.uuids = uuids;
//         this.sender = sender;
//         this.message = message;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/response/ExistResponse.java
// public final class ExistResponse {
// 
//     @SerializedName("exist")
//     public final boolean exist;
// 
//     public ExistResponse(final boolean exist) {
//         this.exist = exist;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/response/RegistrationResponse.java
// public final class RegistrationResponse {
// 
//     @NonNull
//     public final String uuid;
// 
//     @NonNull
//     public final String providerName;
// 
//     @NonNull
//     public final String registrationId;
// 
//     public RegistrationResponse(@NonNull final String uuid,
//                                 @NonNull final String providerName,
//                                 @NonNull final String registrationId) {
//         this.uuid = uuid;
//         this.providerName = providerName;
//         this.registrationId = registrationId;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/response/TopicsResponse.java
// public final class TopicsResponse {
// 
//     @SerializedName("topics")
//     @Nullable
//     public final List<String> topics;
// 
//     public TopicsResponse(@Nullable final List<String> topics) {
//         this.topics = topics;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/response/UnregistrationResponse.java
// public final class UnregistrationResponse {
// 
//     @NonNull
//     public final String uuid;
// 
//     @Nullable
//     public final String providerName;
// 
//     @Nullable
//     public final String registrationId;
// 
//     public UnregistrationResponse(@NonNull final String uuid,
//                                   @Nullable final String providerName,
//                                   @Nullable final String registrationId) {
//         this.uuid = uuid;
//         this.providerName = providerName;
//         this.registrationId = registrationId;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/response/push/PushMessageResponse.java
// public final class PushMessageResponse {
// 
//     @Nullable
//     public final PushResult[] successed;
// 
//     @Nullable
//     public final FailedPushResult[] failed;
// 
//     @NonNull
//     public final String message;
// 
//     public PushMessageResponse(@Nullable final PushResult[] successed,
//                                @Nullable final FailedPushResult[] failed,
//                                @NonNull final String message) {
//         this.successed = successed;
//         this.failed = failed;
//         this.message = message;
//     }
// }


import retrofit.http.GET;
import retrofit.http.POST;
import retrofit.http.Query;
import android.support.annotation.NonNull;
import org.onepf.pushchat.model.request.RegistrationRequestBody;
import org.onepf.pushchat.model.request.SubscribeOrUnsubscribeRequestBody;
import org.onepf.pushchat.model.request.UnregistrationRequestBody;
import org.onepf.pushchat.model.request.push.PushMessageRequestBody;
import org.onepf.pushchat.model.response.ExistResponse;
import org.onepf.pushchat.model.response.RegistrationResponse;
import org.onepf.pushchat.model.response.TopicsResponse;
import org.onepf.pushchat.model.response.UnregistrationResponse;
import org.onepf.pushchat.model.response.push.PushMessageResponse;
import retrofit.Callback;
import retrofit.http.Body;
/*
 * Copyright 2012-2015 One Platform Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.onepf.pushchat.retrofit;




/**
 * @author Roman Savin
 * @since 19.04.2015
 */
public interface PushService {

    @POST("/register")
    void register(@Body @NonNull final RegistrationRequestBody body,
                  @NonNull final Callback<RegistrationResponse> callback);

// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/request/RegistrationRequestBody.java
// public final class RegistrationRequestBody extends RequestBody {
// 
//     @SerializedName("providerName")
//     @NonNull
//     public final String providerName;
// 
//     @SerializedName("registrationId")
//     @NonNull
//     public final String registrationId;
// 
//     public RegistrationRequestBody(@NonNull final String uuid,
//                                    @NonNull final String providerName,
//                                    @NonNull final String registrationId) {
//         super(uuid);
//         this.providerName = providerName;
//         this.registrationId = registrationId;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/request/SubscribeOrUnsubscribeRequestBody.java
// public final class SubscribeOrUnsubscribeRequestBody {
// 
//     @NonNull
//     public final String topic;
// 
//     @NonNull
//     public final String uuid;
// 
//     public SubscribeOrUnsubscribeRequestBody(@NonNull final String topic, @NonNull final String uuid) {
//         this.topic = topic;
//         this.uuid = uuid;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/request/UnregistrationRequestBody.java
// public final class UnregistrationRequestBody extends RequestBody {
// 
//     public UnregistrationRequestBody(@NonNull final String uuid) {
//         super(uuid);
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/request/push/PushMessageRequestBody.java
// public final class PushMessageRequestBody {
// 
//     @SerializedName("uuids")
//     public final Set<String> uuids;
// 
//     @SerializedName("sender")
//     public final String sender;
// 
//     @SerializedName("message")
//     @NonNull
//     public final String message;
// 
//     public PushMessageRequestBody(@NonNull final Set<String> uuids,
//                                   @NonNull final String sender,
//                                   @NonNull final String message) {
//         this.uuids = uuids;
//         this.sender = sender;
//         this.message = message;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/response/ExistResponse.java
// public final class ExistResponse {
// 
//     @SerializedName("exist")
//     public final boolean exist;
// 
//     public ExistResponse(final boolean exist) {
//         this.exist = exist;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/response/RegistrationResponse.java
// public final class RegistrationResponse {
// 
//     @NonNull
//     public final String uuid;
// 
//     @NonNull
//     public final String providerName;
// 
//     @NonNull
//     public final String registrationId;
// 
//     public RegistrationResponse(@NonNull final String uuid,
//                                 @NonNull final String providerName,
//                                 @NonNull final String registrationId) {
//         this.uuid = uuid;
//         this.providerName = providerName;
//         this.registrationId = registrationId;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/response/TopicsResponse.java
// public final class TopicsResponse {
// 
//     @SerializedName("topics")
//     @Nullable
//     public final List<String> topics;
// 
//     public TopicsResponse(@Nullable final List<String> topics) {
//         this.topics = topics;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/response/UnregistrationResponse.java
// public final class UnregistrationResponse {
// 
//     @NonNull
//     public final String uuid;
// 
//     @Nullable
//     public final String providerName;
// 
//     @Nullable
//     public final String registrationId;
// 
//     public UnregistrationResponse(@NonNull final String uuid,
//                                   @Nullable final String providerName,
//                                   @Nullable final String registrationId) {
//         this.uuid = uuid;
//         this.providerName = providerName;
//         this.registrationId = registrationId;
//     }
// }
// 
// Path: samples/pushchat/src/main/java/org/onepf/pushchat/model/response/push/PushMessageResponse.java
// public final class PushMessageResponse {
// 
//     @Nullable
//     public final PushResult[] successed;
// 
//     @Nullable
//     public final FailedPushResult[] failed;
// 
//     @NonNull
//     public final String message;
// 
//     public PushMessageResponse(@Nullable final PushResult[] successed,
//                                @Nullable final FailedPushResult[] failed,
//                                @NonNull final String message) {
//         this.successed = successed;
//         this.failed = failed;
//         this.message = message;
//     }
// }


// Path: samples/pushchat/src/main/java/org/onepf/pushchat/retrofit/PushService.java
import retrofit.http.GET;
import retrofit.http.POST;
import retrofit.http.Query;
import android.support.annotation.NonNull;
import org.onepf.pushchat.model.request.RegistrationRequestBody;
import org.onepf.pushchat.model.request.SubscribeOrUnsubscribeRequestBody;
import org.onepf.pushchat.model.request.UnregistrationRequestBody;
import org.onepf.pushchat.model.request.push.PushMessageRequestBody;
import org.onepf.pushchat.model.response.ExistResponse;
import org.onepf.pushchat.model.response.RegistrationResponse;
import org.onepf.pushchat.model.response.TopicsResponse;
import org.onepf.pushchat.model.response.UnregistrationResponse;
import org.onepf.pushchat.model.response.push.PushMessageResponse;
import retrofit.Callback;
import retrofit.http.Body;

/*
 * Copyright 2012-2015 One Platform Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.onepf.pushchat.retrofit;




/**
 * @author Roman Savin
 * @since 19.04.2015
 */
public interface PushService {

    @POST("/register")
    void register(@Body @NonNull final RegistrationRequestBody body,
                  @NonNull final Callback<RegistrationResponse> callback);

    @POST("/unregister")