Copyright | (c) Dustin Sallings 2020 |
---|---|
License | BSD3 |
Maintainer | dustin@spy.net |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
GoPro Plus media client.
Synopsis
- list :: MonadIO m => Token -> Int -> Int -> m ([Medium], PageInfo)
- listAll :: MonadIO m => Token -> m [Medium]
- listWhile :: MonadIO m => Token -> ([Medium] -> Bool) -> m [Medium]
- medium :: (FromJSON j, MonadIO m) => Token -> MediumID -> m j
- retrieve :: (FromJSON j, MonadIO m) => Token -> String -> m j
- delete :: MonadIO m => Token -> String -> m [Error]
- fetchThumbnail :: MonadIO m => Token -> Medium -> m ByteString
- data PageInfo = PageInfo {
- _current_page :: Int
- _per_page :: Int
- _total_items :: Int
- _total_pages :: Int
- current_page :: Lens' PageInfo Int
- per_page :: Lens' PageInfo Int
- total_items :: Lens' PageInfo Int
- total_pages :: Lens' PageInfo Int
- type MediumID = Text
- data Medium = Medium {
- _medium_id :: MediumID
- _medium_camera_model :: Maybe String
- _medium_captured_at :: UTCTime
- _medium_created_at :: UTCTime
- _medium_file_size :: Maybe Int
- _medium_moments_count :: Int
- _medium_ready_to_view :: String
- _medium_source_duration :: Maybe String
- _medium_type :: String
- _medium_token :: String
- _medium_width :: Maybe Int
- _medium_height :: Maybe Int
- medium_id :: Lens' Medium MediumID
- medium_camera_model :: Lens' Medium (Maybe String)
- medium_captured_at :: Lens' Medium UTCTime
- medium_created_at :: Lens' Medium UTCTime
- medium_file_size :: Lens' Medium (Maybe Int)
- medium_moments_count :: Lens' Medium Int
- medium_ready_to_view :: Lens' Medium String
- medium_source_duration :: Lens' Medium (Maybe String)
- medium_type :: Lens' Medium String
- medium_token :: Lens' Medium String
- medium_width :: Lens' Medium (Maybe Int)
- medium_height :: Lens' Medium (Maybe Int)
- data Listing = Listing {}
- media :: Lens' Listing [Medium]
- pages :: Lens' Listing PageInfo
- data File = File {}
- file_camera_position :: Lens' File String
- file_height :: Lens' File Int
- file_width :: Lens' File Int
- file_item_number :: Lens' File Int
- file_orientation :: Lens' File Int
- file_url :: Lens' File String
- data Variation = Variation {
- _var_height :: Int
- _var_width :: Int
- _var_label :: String
- _var_quality :: String
- _var_type :: String
- _var_url :: String
- var_height :: Lens' Variation Int
- var_width :: Lens' Variation Int
- var_label :: Lens' Variation String
- var_quality :: Lens' Variation String
- var_type :: Lens' Variation String
- var_url :: Lens' Variation String
- data SpriteFrame = SpriteFrame {
- _frame_count :: Int
- _frame_height :: Int
- _frame_width :: Int
- frame_count :: Lens' SpriteFrame Int
- frame_height :: Lens' SpriteFrame Int
- frame_width :: Lens' SpriteFrame Int
- data Sprite = Sprite {}
- sprite_fps :: Lens' Sprite Double
- sprite_frame :: Lens' Sprite SpriteFrame
- sprite_height :: Lens' Sprite Int
- sprite_width :: Lens' Sprite Int
- sprite_type :: Lens' Sprite String
- sprite_urls :: Lens' Sprite [String]
- data FileStuff = FileStuff {
- _files :: [File]
- _variations :: [Variation]
- _sprites :: [Sprite]
- _sidecar_files :: [Value]
- files :: Lens' FileStuff [File]
- variations :: Lens' FileStuff [Variation]
- sprites :: Lens' FileStuff [Sprite]
- sidecar_files :: Lens' FileStuff [Value]
- data FileInfo = FileInfo {}
- fileStuff :: Lens' FileInfo FileStuff
- filename :: Lens' FileInfo String
- data Error = Error {}
- error_reason :: Lens' Error String
- error_code :: Lens' Error Int
- error_description :: Lens' Error String
- error_id :: Lens' Error String
- putRawMedium :: MonadIO m => Token -> String -> Value -> m Value
Accessing Data
list :: MonadIO m => Token -> Int -> Int -> m ([Medium], PageInfo) Source #
List a page worth of media.
listWhile :: MonadIO m => Token -> ([Medium] -> Bool) -> m [Medium] Source #
List all media while returned batches pass the given predicate.
medium :: (FromJSON j, MonadIO m) => Token -> MediumID -> m j Source #
Get the current Medium
record for the given Medium ID.
retrieve :: (FromJSON j, MonadIO m) => Token -> String -> m j Source #
Get download descriptors for a given medium. The format is
typically FileInfo
, but it can be useful to map it into something
else.
fetchThumbnail :: MonadIO m => Token -> Medium -> m ByteString Source #
Fetch thumbnail data for the given medium.
Data Types
PageInfo | |
|
Instances
Show PageInfo Source # | |
Generic PageInfo Source # | |
FromJSON PageInfo Source # | |
type Rep PageInfo Source # | |
Defined in GoPro.Plus.Media type Rep PageInfo = D1 (MetaData "PageInfo" "GoPro.Plus.Media" "gopro-plus-0.1.0.0-9fVWhLzJdYqAyZLvDbL4sd" False) (C1 (MetaCons "PageInfo" PrefixI True) ((S1 (MetaSel (Just "_current_page") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: S1 (MetaSel (Just "_per_page") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)) :*: (S1 (MetaSel (Just "_total_items") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: S1 (MetaSel (Just "_total_pages") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)))) |
Instances
Instances
Show Listing Source # | |
Generic Listing Source # | |
FromJSON Listing Source # | |
type Rep Listing Source # | |
Defined in GoPro.Plus.Media type Rep Listing = D1 (MetaData "Listing" "GoPro.Plus.Media" "gopro-plus-0.1.0.0-9fVWhLzJdYqAyZLvDbL4sd" False) (C1 (MetaCons "Listing" PrefixI True) (S1 (MetaSel (Just "_media") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Medium]) :*: S1 (MetaSel (Just "_pages") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PageInfo))) |
File | |
|
Instances
Show File Source # | |
Generic File Source # | |
FromJSON File Source # | |
type Rep File Source # | |
Defined in GoPro.Plus.Media type Rep File = D1 (MetaData "File" "GoPro.Plus.Media" "gopro-plus-0.1.0.0-9fVWhLzJdYqAyZLvDbL4sd" False) (C1 (MetaCons "File" PrefixI True) ((S1 (MetaSel (Just "_file_camera_position") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String) :*: (S1 (MetaSel (Just "_file_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: S1 (MetaSel (Just "_file_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int))) :*: (S1 (MetaSel (Just "_file_item_number") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: (S1 (MetaSel (Just "_file_orientation") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: S1 (MetaSel (Just "_file_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))))) |
Variation | |
|
Instances
Show Variation Source # | |
Generic Variation Source # | |
FromJSON Variation Source # | |
type Rep Variation Source # | |
Defined in GoPro.Plus.Media type Rep Variation = D1 (MetaData "Variation" "GoPro.Plus.Media" "gopro-plus-0.1.0.0-9fVWhLzJdYqAyZLvDbL4sd" False) (C1 (MetaCons "Variation" PrefixI True) ((S1 (MetaSel (Just "_var_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: (S1 (MetaSel (Just "_var_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: S1 (MetaSel (Just "_var_label") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))) :*: (S1 (MetaSel (Just "_var_quality") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String) :*: (S1 (MetaSel (Just "_var_type") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String) :*: S1 (MetaSel (Just "_var_url") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))))) |
data SpriteFrame Source #
SpriteFrame | |
|
Instances
Sprite | |
|
Instances
Show Sprite Source # | |
Generic Sprite Source # | |
FromJSON Sprite Source # | |
type Rep Sprite Source # | |
Defined in GoPro.Plus.Media type Rep Sprite = D1 (MetaData "Sprite" "GoPro.Plus.Media" "gopro-plus-0.1.0.0-9fVWhLzJdYqAyZLvDbL4sd" False) (C1 (MetaCons "Sprite" PrefixI True) ((S1 (MetaSel (Just "_sprite_fps") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Double) :*: (S1 (MetaSel (Just "_sprite_frame") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 SpriteFrame) :*: S1 (MetaSel (Just "_sprite_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int))) :*: (S1 (MetaSel (Just "_sprite_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: (S1 (MetaSel (Just "_sprite_type") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String) :*: S1 (MetaSel (Just "_sprite_urls") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [String]))))) |
FileStuff | |
|
Instances
Show FileStuff Source # | |
Generic FileStuff Source # | |
FromJSON FileStuff Source # | |
type Rep FileStuff Source # | |
Defined in GoPro.Plus.Media type Rep FileStuff = D1 (MetaData "FileStuff" "GoPro.Plus.Media" "gopro-plus-0.1.0.0-9fVWhLzJdYqAyZLvDbL4sd" False) (C1 (MetaCons "FileStuff" PrefixI True) ((S1 (MetaSel (Just "_files") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [File]) :*: S1 (MetaSel (Just "_variations") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Variation])) :*: (S1 (MetaSel (Just "_sprites") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Sprite]) :*: S1 (MetaSel (Just "_sidecar_files") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Value])))) |
Instances
Show FileInfo Source # | |
Generic FileInfo Source # | |
FromJSON FileInfo Source # | |
type Rep FileInfo Source # | |
Defined in GoPro.Plus.Media type Rep FileInfo = D1 (MetaData "FileInfo" "GoPro.Plus.Media" "gopro-plus-0.1.0.0-9fVWhLzJdYqAyZLvDbL4sd" False) (C1 (MetaCons "FileInfo" PrefixI True) (S1 (MetaSel (Just "_fileStuff") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FileStuff) :*: S1 (MetaSel (Just "_filename") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))) |
Error | |
|
Instances
Show Error Source # | |
Generic Error Source # | |
FromJSON Error Source # | |
type Rep Error Source # | |
Defined in GoPro.Plus.Media type Rep Error = D1 (MetaData "Error" "GoPro.Plus.Media" "gopro-plus-0.1.0.0-9fVWhLzJdYqAyZLvDbL4sd" False) (C1 (MetaCons "Error" PrefixI True) ((S1 (MetaSel (Just "_error_reason") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String) :*: S1 (MetaSel (Just "_error_code") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)) :*: (S1 (MetaSel (Just "_error_description") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String) :*: S1 (MetaSel (Just "_error_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))) |