// Path: app/src/main/java/com/liuguangqiang/idaily/api/ServiceFactory.java
// public class ServiceFactory {
// 
//     private static String HOST_NAME = "http://news-at.zhihu.com/api/4/";
// 
//     private static final ServiceFactory instance = new ServiceFactory();
// 
//     public static ServiceFactory getInstance() {
//         return instance;
//     }
// 
//     private Retrofit retrofit;
// 
//     public ServiceFactory() {
//         createRetrofit();
//     }
// 
//     private void createRetrofit() {
//         HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
//         interceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS);
//         OkHttpClient okHttpClient = new OkHttpClient.Builder()
//                 .addInterceptor(interceptor)
//                 .build();
// 
//         retrofit = new Retrofit.Builder()
//                 .baseUrl(HOST_NAME)
//                 .client(okHttpClient)
//                 .addConverterFactory(GsonConverterFactory.create())
//                 .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
//                 .build();
//     }
// 
// 
//     public <T> T create(Class<?> clazz) {
//         return (T) retrofit.create(clazz);
//     }
// }
// 
// Path: app/src/main/java/com/liuguangqiang/idaily/entity/Story.java
// public class Story extends BaseEntity implements Parcelable {
// 
//     public int id;
// 
//     public String title;
// 
//     public int type = 0;
// 
//     public List<String> images = new ArrayList<>();
// 
//     public String image;
// 
//     public String body;
// 
//     public List<String> css;
// 
//     public String share_url;
// 
//     public String hint;
// 
//     public List<String> getCss() {
//         return css;
//     }
// 
//     public void setCss(List<String> css) {
//         this.css = css;
//     }
// 
//     public String getBody() {
//         return body;
//     }
// 
//     public void setBody(String body) {
//         this.body = body;
//     }
// 
//     public String getImage() {
//         return image;
//     }
// 
//     public void setImage(String image) {
//         this.image = image;
//     }
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// 
//     public List<String> getImages() {
//         return images;
//     }
// 
//     public void setImages(List<String> images) {
//         this.images = images;
//     }
// 
//     public int getType() {
//         return type;
//     }
// 
//     public void setType(int type) {
//         this.type = type;
//     }
// 
//     public Story() {
//     }
// 
//     public int getId() {
//         return id;
//     }
// 
//     public void setId(int id) {
//         this.id = id;
//     }
// 
//     @Override
//     public String toString() {
//         return "Story{" +
//                 "id=" + id +
//                 ", title='" + title + '\'' +
//                 ", type=" + type +
//                 ", images=" + images +
//                 ", image='" + image + '\'' +
//                 ", body='" + body + '\'' +
//                 ", css=" + css +
//                 '}';
//     }
// 
//     @Override
//     public int describeContents() {
//         return 0;
//     }
// 
//     @Override
//     public void writeToParcel(Parcel dest, int flags) {
//         dest.writeInt(this.id);
//         dest.writeString(this.title);
//         dest.writeInt(this.type);
//         dest.writeStringList(this.images);
//         dest.writeString(this.image);
//         dest.writeString(this.body);
//         dest.writeStringList(this.css);
//         dest.writeString(this.share_url);
//     }
// 
//     protected Story(Parcel in) {
//         this.id = in.readInt();
//         this.title = in.readString();
//         this.type = in.readInt();
//         this.images = in.createStringArrayList();
//         this.image = in.readString();
//         this.body = in.readString();
//         this.css = in.createStringArrayList();
//         this.share_url = in.readString();
//     }
// 
//     public static final Creator<Story> CREATOR = new Creator<Story>() {
//         public Story createFromParcel(Parcel source) {
//             return new Story(source);
//         }
// 
//         public Story[] newArray(int size) {
//             return new Story[size];
//         }
//     };
// 
//     @Override
//     public int getItemType() {
//         return StoriesAdapter.ITEM_STORY;
//     }
// }
// 
// Path: app/src/main/java/com/liuguangqiang/idaily/api/service/StoryService.java
// public interface StoryService {
// 
//     @GET("story/{story_id}")
//     Observable<Story> getStory(@Path("story_id") int storyId);
// 
// }


import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import android.os.Bundle;
import com.liuguangqiang.idaily.api.ServiceFactory;
import com.liuguangqiang.idaily.entity.Story;
import com.liuguangqiang.idaily.api.service.StoryService;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getImage() {
        if (story == null) return "";

        return story.getImage();
    }

    public String getBody() {
        return getBody(storyLiveData.getValue());
    }

    public void setStory(Story story) {
        storyLiveData.postValue(story);
    }

    public Story getStory() {
        return story;
    }

    public void getStory(int id) {
        StoryService storyService = ServiceFactory.getInstance().create(StoryService.class);
        storyService.getStory(id).subscribeOn(Schedulers.io())
// Path: app/src/main/java/com/liuguangqiang/idaily/api/ServiceFactory.java
// public class ServiceFactory {
// 
//     private static String HOST_NAME = "http://news-at.zhihu.com/api/4/";
// 
//     private static final ServiceFactory instance = new ServiceFactory();
// 
//     public static ServiceFactory getInstance() {
//         return instance;
//     }
// 
//     private Retrofit retrofit;
// 
//     public ServiceFactory() {
//         createRetrofit();
//     }
// 
//     private void createRetrofit() {
//         HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
//         interceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS);
//         OkHttpClient okHttpClient = new OkHttpClient.Builder()
//                 .addInterceptor(interceptor)
//                 .build();
// 
//         retrofit = new Retrofit.Builder()
//                 .baseUrl(HOST_NAME)
//                 .client(okHttpClient)
//                 .addConverterFactory(GsonConverterFactory.create())
//                 .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
//                 .build();
//     }
// 
// 
//     public <T> T create(Class<?> clazz) {
//         return (T) retrofit.create(clazz);
//     }
// }
// 
// Path: app/src/main/java/com/liuguangqiang/idaily/entity/Story.java
// public class Story extends BaseEntity implements Parcelable {
// 
//     public int id;
// 
//     public String title;
// 
//     public int type = 0;
// 
//     public List<String> images = new ArrayList<>();
// 
//     public String image;
// 
//     public String body;
// 
//     public List<String> css;
// 
//     public String share_url;
// 
//     public String hint;
// 
//     public List<String> getCss() {
//         return css;
//     }
// 
//     public void setCss(List<String> css) {
//         this.css = css;
//     }
// 
//     public String getBody() {
//         return body;
//     }
// 
//     public void setBody(String body) {
//         this.body = body;
//     }
// 
//     public String getImage() {
//         return image;
//     }
// 
//     public void setImage(String image) {
//         this.image = image;
//     }
// 
//     public String getTitle() {
//         return title;
//     }
// 
//     public void setTitle(String title) {
//         this.title = title;
//     }
// 
//     public List<String> getImages() {
//         return images;
//     }
// 
//     public void setImages(List<String> images) {
//         this.images = images;
//     }
// 
//     public int getType() {
//         return type;
//     }
// 
//     public void setType(int type) {
//         this.type = type;
//     }
// 
//     public Story() {
//     }
// 
//     public int getId() {
//         return id;
//     }
// 
//     public void setId(int id) {
//         this.id = id;
//     }
// 
//     @Override
//     public String toString() {
//         return "Story{" +
//                 "id=" + id +
//                 ", title='" + title + '\'' +
//                 ", type=" + type +
//                 ", images=" + images +
//                 ", image='" + image + '\'' +
//                 ", body='" + body + '\'' +
//                 ", css=" + css +
//                 '}';
//     }
// 
//     @Override
//     public int describeContents() {
//         return 0;
//     }
// 
//     @Override
//     public void writeToParcel(Parcel dest, int flags) {
//         dest.writeInt(this.id);
//         dest.writeString(this.title);
//         dest.writeInt(this.type);
//         dest.writeStringList(this.images);
//         dest.writeString(this.image);
//         dest.writeString(this.body);
//         dest.writeStringList(this.css);
//         dest.writeString(this.share_url);
//     }
// 
//     protected Story(Parcel in) {
//         this.id = in.readInt();
//         this.title = in.readString();
//         this.type = in.readInt();
//         this.images = in.createStringArrayList();
//         this.image = in.readString();
//         this.body = in.readString();
//         this.css = in.createStringArrayList();
//         this.share_url = in.readString();
//     }
// 
//     public static final Creator<Story> CREATOR = new Creator<Story>() {
//         public Story createFromParcel(Parcel source) {
//             return new Story(source);
//         }
// 
//         public Story[] newArray(int size) {
//             return new Story[size];
//         }
//     };
// 
//     @Override
//     public int getItemType() {
//         return StoriesAdapter.ITEM_STORY;
//     }
// }
// 
// Path: app/src/main/java/com/liuguangqiang/idaily/api/service/StoryService.java
// public interface StoryService {
// 
//     @GET("story/{story_id}")
//     Observable<Story> getStory(@Path("story_id") int storyId);
// 
// }


// Path: app/src/main/java/com/liuguangqiang/idaily/feature/detail/StoryViewModel.java
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import android.os.Bundle;
import com.liuguangqiang.idaily.api.ServiceFactory;
import com.liuguangqiang.idaily.entity.Story;
import com.liuguangqiang.idaily.api.service.StoryService;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;


    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getImage() {
        if (story == null) return "";

        return story.getImage();
    }

    public String getBody() {
        return getBody(storyLiveData.getValue());
    }

    public void setStory(Story story) {
        storyLiveData.postValue(story);
    }

    public Story getStory() {
        return story;
    }

    public void getStory(int id) {
        StoryService storyService = ServiceFactory.getInstance().create(StoryService.class);
        storyService.getStory(id).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<Story>() {