Team Ai
Apppublic

devin15/cursor2api-rust

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
userinfo.rs89 linesDownload Raw Back to models
1use chrono::{DateTime, Local};2use serde::{Deserialize, Serialize};3 4#[derive(Serialize)]5#[serde(untagged)]6pub enum GetUserInfo {7    Usage(TokenProfile),8    Error { error: String },9}10 11#[derive(Serialize, Clone)]12pub struct TokenProfile {13    pub usage: UsageProfile,14    pub user: UserProfile,15    pub stripe: StripeProfile,16}17 18#[derive(Deserialize, Serialize, PartialEq, Clone)]19pub enum MembershipType {20    #[serde(rename = "free")]21    Free,22    #[serde(rename = "free_trial")]23    FreeTrial,24    #[serde(rename = "pro")]25    Pro,26    #[serde(rename = "enterprise")]27    Enterprise,28}29 30#[derive(Deserialize, Serialize, Clone)]31pub struct StripeProfile {32    #[serde(rename(deserialize = "membershipType"))]33    pub membership_type: MembershipType,34    #[serde(35        rename(deserialize = "paymentId"),36        default,37        skip_serializing_if = "Option::is_none"38    )]39    pub payment_id: Option<String>,40    #[serde(rename(deserialize = "daysRemainingOnTrial"))]41    pub days_remaining_on_trial: u32,42}43 44#[derive(Deserialize, Serialize, Clone)]45pub struct ModelUsage {46    #[serde(rename(deserialize = "numRequests", serialize = "requests"))]47    pub num_requests: u32,48    #[serde(49        rename(deserialize = "numRequestsTotal"),50        default,51        skip_serializing_if = "Option::is_none"52    )]53    pub requests_total: Option<u32>,54    #[serde(rename(deserialize = "numTokens", serialize = "tokens"))]55    pub num_tokens: u32,56    #[serde(57        rename(deserialize = "maxRequestUsage"),58        skip_serializing_if = "Option::is_none"59    )]60    pub max_requests: Option<u32>,61    #[serde(62        rename(deserialize = "maxTokenUsage"),63        skip_serializing_if = "Option::is_none"64    )]65    pub max_tokens: Option<u32>,66}67 68#[derive(Deserialize, Serialize, Clone)]69pub struct UsageProfile {70    #[serde(rename(deserialize = "gpt-4"))]71    pub premium: ModelUsage,72    #[serde(rename(deserialize = "gpt-3.5-turbo"))]73    pub standard: ModelUsage,74    #[serde(rename(deserialize = "gpt-4-32k"))]75    pub unknown: ModelUsage,76}77 78#[derive(Deserialize, Serialize, Clone)]79pub struct UserProfile {80    pub email: String,81    // pub email_verified: bool,82    pub name: String,83    #[serde(rename(serialize = "id"))]84    pub sub: String,85    pub updated_at: DateTime<Local>,86    // Image link, rendered in /logs?87    // pub picture: Option<String>,88}89