• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package kotlinx.benchmarks.model
2 
3 import kotlinx.serialization.*
4 import kotlinx.serialization.json.*
5 
mainnull6 fun main() {
7     val s = MacroTwitterFeed::class.java.getResource("/twitter_macro.json").readBytes().decodeToString()
8     println(Json.decodeFromString<MacroTwitterFeed>(s))
9 }
10 
11 /*
12  * Data model for twitter.json feed
13  */
14 
15 @Serializable
16 data class Twitter(
17     val search_metadata: SearchMetadata,
18     val statuses: List<Status>
19 )
20 
21 @Serializable
22 data class SearchMetadata(
23     val completed_in: Double,
24     val count: Int,
25     val max_id: Long,
26     val max_id_str: String,
27     val next_results: String,
28     val query: String,
29     val refresh_url: String,
30     val since_id: Int,
31     val since_id_str: String
32 )
33 
34 @Serializable
35 data class Status(
36     val created_at: String,
37     val entities: Entities,
38     val favorited: Boolean,
39     val id: Long,
40     val id_str: String,
41     val possibly_sensitive: Boolean = false,
42     val retweet_count: Int,
43     val retweeted: Boolean,
44     val source: String,
45     val text: String,
46     val truncated: Boolean,
47     val user: User
48 )
49 
50 @Serializable
51 data class Entities(
52     val hashtags: List<Hashtag>,
53     val media: List<Media> = emptyList(),
54     val urls: List<Url>,
55     val user_mentions: List<UserMention>
56 )
57 
58 @Serializable
59 data class User(
60     val contributors_enabled: Boolean,
61     val created_at: String,
62     val default_profile: Boolean,
63     val default_profile_image: Boolean,
64     val description: String,
65     val favourites_count: Int,
66     val follow_request_sent: Boolean,
67     val followers_count: Int,
68     val following: Boolean,
69     val friends_count: Int,
70     val geo_enabled: Boolean,
71     val id: Int,
72     val id_str: String,
73     val is_translator: Boolean,
74     val lang: String,
75     val listed_count: Int,
76     val location: String,
77     val name: String,
78     val notifications: Boolean,
79     val profile_background_color: String,
80     val profile_background_image_url: String,
81     val profile_background_image_url_https: String,
82     val profile_background_tile: Boolean,
83     val profile_image_url: String,
84     val profile_image_url_https: String,
85     val profile_link_color: String,
86     val profile_sidebar_border_color: String,
87     val profile_sidebar_fill_color: String,
88     val profile_text_color: String,
89     val profile_use_background_image: Boolean,
90     val url: String? = null,
91     val `protected`: Boolean,
92     val screen_name: String,
93     val show_all_inline_media: Boolean,
94     val statuses_count: Int,
95     val time_zone: String?,
96     val utc_offset: Int?,
97     val verified: Boolean
98 )
99 
100 @Serializable
101 data class Hashtag(
102     val indices: List<Int>,
103     val text: String
104 )
105 
106 @Serializable
107 data class Media(
108     val display_url: String,
109     val expanded_url: String,
110     val id: Long,
111     val id_str: String,
112     val indices: List<Int>,
113     val media_url: String,
114     val media_url_https: String,
115     val sizes: Sizes,
116     val type: String,
117     val url: String
118 )
119 
120 @Serializable
121 data class Url(
122     val display_url: String,
123     val expanded_url: String,
124     val indices: List<Int>,
125     val url: String
126 )
127 
128 @Serializable
129 data class UserMention(
130     val id: Int,
131     val id_str: String,
132     val indices: List<Int>,
133     val name: String,
134     val screen_name: String
135 )
136 
137 @Serializable
138 data class Sizes(
139     val large: Large,
140     val medium: Medium,
141     val small: Small,
142     val thumb: Thumb
143 )
144 
145 @Serializable
146 data class Large(
147     val h: Int,
148     val resize: String,
149     val w: Int
150 )
151 
152 @Serializable
153 data class Medium(
154     val h: Int,
155     val resize: String,
156     val w: Int
157 )
158 
159 @Serializable
160 data class Small(
161     val h: Int,
162     val resize: String,
163     val w: Int
164 )
165 
166 @Serializable
167 data class Thumb(
168     val h: Int,
169     val resize: String,
170     val w: Int
171 )
172