├── .gitignore
├── CleanTalk
├── CleanTalk.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── olegsehelin.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ └── xcuserdata
│ │ └── olegsehelin.xcuserdatad
│ │ └── xcschemes
│ │ ├── CleanTalk.xcscheme
│ │ └── xcschememanagement.plist
├── CleanTalk
│ ├── CleanTalk.entitlements
│ └── CleanTalk
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ ├── 80*80-1.png
│ │ │ ├── 80*80.png
│ │ │ ├── Contents.json
│ │ │ ├── Icon-60@2x-1.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── cleantalk-logo-no-alpha.png
│ │ │ ├── defaultIcon@2x copy-1.png
│ │ │ ├── defaultIcon@2x copy-2.png
│ │ │ ├── defaultIcon@2x copy-3.png
│ │ │ ├── defaultIcon@2x copy-4.png
│ │ │ ├── defaultIcon@2x copy-5.png
│ │ │ ├── defaultIcon@2x copy-6.png
│ │ │ ├── defaultIcon@2x copy.png
│ │ │ ├── defaultIcon@2x-1.png
│ │ │ ├── defaultIcon@2x-2.png
│ │ │ ├── defaultIcon@2x-3.png
│ │ │ └── defaultIcon@2x.png
│ │ ├── Base.lproj
│ │ └── LaunchScreen.storyboard
│ │ ├── DataClasses
│ │ ├── Constants.swift
│ │ ├── DispatcherCore
│ │ │ ├── AbstractDispatcher.swift
│ │ │ ├── AbstractRequest.swift
│ │ │ ├── AbstractResponse.swift
│ │ │ ├── AlamofireDispatcher.swift
│ │ │ └── Enums.swift
│ │ ├── Models
│ │ │ ├── ChangeStatusModel.swift
│ │ │ ├── DetailStatisticModel.swift
│ │ │ ├── LoginModel.swift
│ │ │ ├── ServiceModel.swift
│ │ │ └── StatisticModel.swift
│ │ ├── ModelsManager.swift
│ │ └── Requests
│ │ │ ├── ChangeStatusRequest.swift
│ │ │ ├── DetailStatsRequest.swift
│ │ │ ├── LoginRequest.swift
│ │ │ └── MainStatsRequest.swift
│ │ ├── Info.plist
│ │ ├── Resources
│ │ ├── defaultIcon@2x.png
│ │ └── logo_iphone@2x.png
│ │ ├── ViewControllers
│ │ ├── CTDetailsViewController
│ │ │ ├── CTDetailsCell
│ │ │ │ ├── Base.lproj
│ │ │ │ │ └── CTDetailsCell.xib
│ │ │ │ ├── CTDetailsCell.swift
│ │ │ │ ├── en.lproj
│ │ │ │ │ └── CTDetailsCell.strings
│ │ │ │ └── ru.lproj
│ │ │ │ │ └── CTDetailsCell.strings
│ │ │ ├── CTDetailsViewController.swift
│ │ │ └── en.lproj
│ │ │ │ └── CTDetailsViewController.xib
│ │ ├── CTLoginViewController
│ │ │ ├── Base.lproj
│ │ │ │ ├── CTLoginViewController~ipad.xib
│ │ │ │ └── CTLoginViewController~iphone.xib
│ │ │ ├── CTLoginViewController.swift
│ │ │ ├── en.lproj
│ │ │ │ ├── CTLoginViewController~ipad.strings
│ │ │ │ └── CTLoginViewController~iphone.strings
│ │ │ └── ru.lproj
│ │ │ │ ├── CTLoginViewController~ipad.strings
│ │ │ │ └── CTLoginViewController~iphone.strings
│ │ ├── CTSFWViewController
│ │ │ ├── CTSFWCell
│ │ │ │ ├── Base.lproj
│ │ │ │ │ └── CTSFWCell.xib
│ │ │ │ ├── CTSFWCell.swift
│ │ │ │ ├── en.lproj
│ │ │ │ │ └── CTSFWCell.strings
│ │ │ │ └── ru.lproj
│ │ │ │ │ └── CTSFWCell.strings
│ │ │ ├── CTSFWViewController.swift
│ │ │ └── CTSFWViewController.xib
│ │ └── CTStatisticViewController
│ │ │ ├── Base.lproj
│ │ │ └── CTStatisticViewController.xib
│ │ │ ├── CTStatisticCell
│ │ │ ├── Base.lproj
│ │ │ │ └── CTStatisticCell.xib
│ │ │ ├── CTStatisticCell.swift
│ │ │ ├── en.lproj
│ │ │ │ └── CTStatisticCell.strings
│ │ │ └── ru.lproj
│ │ │ │ └── CTStatisticCell.strings
│ │ │ ├── CTStatisticViewController.swift
│ │ │ ├── en.lproj
│ │ │ └── CTStatisticViewController.strings
│ │ │ └── ru.lproj
│ │ │ └── CTStatisticViewController.strings
│ │ ├── en.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Localizable.strings
│ │ └── ru.lproj
│ │ ├── LaunchScreen.strings
│ │ └── Localizable.strings
├── Podfile
├── Podfile.lock
└── Pods
│ ├── Alamofire
│ ├── LICENSE
│ ├── README.md
│ └── Source
│ │ ├── AFError.swift
│ │ ├── Alamofire.swift
│ │ ├── DispatchQueue+Alamofire.swift
│ │ ├── MultipartFormData.swift
│ │ ├── NetworkReachabilityManager.swift
│ │ ├── Notifications.swift
│ │ ├── ParameterEncoding.swift
│ │ ├── Request.swift
│ │ ├── Response.swift
│ │ ├── ResponseSerialization.swift
│ │ ├── Result.swift
│ │ ├── ServerTrustPolicy.swift
│ │ ├── SessionDelegate.swift
│ │ ├── SessionManager.swift
│ │ ├── TaskDelegate.swift
│ │ ├── Timeline.swift
│ │ └── Validation.swift
│ ├── AlamofireObjectMapper
│ ├── AlamofireObjectMapper
│ │ └── AlamofireObjectMapper.swift
│ ├── LICENSE
│ └── README.md
│ ├── Manifest.lock
│ ├── ObjectMapper
│ ├── LICENSE
│ ├── README-CN.md
│ └── Sources
│ │ ├── CustomDateFormatTransform.swift
│ │ ├── DataTransform.swift
│ │ ├── DateFormatterTransform.swift
│ │ ├── DateTransform.swift
│ │ ├── DictionaryTransform.swift
│ │ ├── EnumOperators.swift
│ │ ├── EnumTransform.swift
│ │ ├── FromJSON.swift
│ │ ├── HexColorTransform.swift
│ │ ├── ISO8601DateTransform.swift
│ │ ├── ImmutableMappable.swift
│ │ ├── Map.swift
│ │ ├── MapError.swift
│ │ ├── Mappable.swift
│ │ ├── Mapper.swift
│ │ ├── NSDecimalNumberTransform.swift
│ │ ├── Operators.swift
│ │ ├── ToJSON.swift
│ │ ├── TransformOf.swift
│ │ ├── TransformOperators.swift
│ │ ├── TransformType.swift
│ │ └── URLTransform.swift
│ ├── Pods.xcodeproj
│ └── project.pbxproj
│ ├── SDWebImage
│ ├── LICENSE
│ ├── README.md
│ └── SDWebImage
│ │ ├── NSData+ImageContentType.h
│ │ ├── NSData+ImageContentType.m
│ │ ├── NSImage+WebCache.h
│ │ ├── NSImage+WebCache.m
│ │ ├── SDImageCache.h
│ │ ├── SDImageCache.m
│ │ ├── SDImageCacheConfig.h
│ │ ├── SDImageCacheConfig.m
│ │ ├── SDWebImageCompat.h
│ │ ├── SDWebImageCompat.m
│ │ ├── SDWebImageDecoder.h
│ │ ├── SDWebImageDecoder.m
│ │ ├── SDWebImageDownloader.h
│ │ ├── SDWebImageDownloader.m
│ │ ├── SDWebImageDownloaderOperation.h
│ │ ├── SDWebImageDownloaderOperation.m
│ │ ├── SDWebImageManager.h
│ │ ├── SDWebImageManager.m
│ │ ├── SDWebImageOperation.h
│ │ ├── SDWebImagePrefetcher.h
│ │ ├── SDWebImagePrefetcher.m
│ │ ├── UIButton+WebCache.h
│ │ ├── UIButton+WebCache.m
│ │ ├── UIImage+GIF.h
│ │ ├── UIImage+GIF.m
│ │ ├── UIImage+MultiFormat.h
│ │ ├── UIImage+MultiFormat.m
│ │ ├── UIImageView+HighlightedWebCache.h
│ │ ├── UIImageView+HighlightedWebCache.m
│ │ ├── UIImageView+WebCache.h
│ │ ├── UIImageView+WebCache.m
│ │ ├── UIView+WebCache.h
│ │ ├── UIView+WebCache.m
│ │ ├── UIView+WebCacheOperation.h
│ │ └── UIView+WebCacheOperation.m
│ ├── SnapKit
│ ├── LICENSE
│ ├── README.md
│ └── Source
│ │ ├── Constraint.swift
│ │ ├── ConstraintAttributes.swift
│ │ ├── ConstraintConfig.swift
│ │ ├── ConstraintConstantTarget.swift
│ │ ├── ConstraintDSL.swift
│ │ ├── ConstraintDescription.swift
│ │ ├── ConstraintInsetTarget.swift
│ │ ├── ConstraintInsets.swift
│ │ ├── ConstraintItem.swift
│ │ ├── ConstraintLayoutGuide+Extensions.swift
│ │ ├── ConstraintLayoutGuide.swift
│ │ ├── ConstraintLayoutGuideDSL.swift
│ │ ├── ConstraintLayoutSupport.swift
│ │ ├── ConstraintLayoutSupportDSL.swift
│ │ ├── ConstraintMaker.swift
│ │ ├── ConstraintMakerEditable.swift
│ │ ├── ConstraintMakerExtendable.swift
│ │ ├── ConstraintMakerFinalizable.swift
│ │ ├── ConstraintMakerPriortizable.swift
│ │ ├── ConstraintMakerRelatable.swift
│ │ ├── ConstraintMultiplierTarget.swift
│ │ ├── ConstraintOffsetTarget.swift
│ │ ├── ConstraintPriorityTarget.swift
│ │ ├── ConstraintRelatableTarget.swift
│ │ ├── ConstraintRelation.swift
│ │ ├── ConstraintView+Extensions.swift
│ │ ├── ConstraintView.swift
│ │ ├── ConstraintViewDSL.swift
│ │ ├── Debugging.swift
│ │ ├── LayoutConstraint.swift
│ │ ├── LayoutConstraintItem.swift
│ │ └── UILayoutSupport+Extensions.swift
│ └── Target Support Files
│ ├── Alamofire
│ ├── Alamofire-dummy.m
│ ├── Alamofire-prefix.pch
│ ├── Alamofire-umbrella.h
│ ├── Alamofire.modulemap
│ ├── Alamofire.xcconfig
│ └── Info.plist
│ ├── AlamofireObjectMapper
│ ├── AlamofireObjectMapper-dummy.m
│ ├── AlamofireObjectMapper-prefix.pch
│ ├── AlamofireObjectMapper-umbrella.h
│ ├── AlamofireObjectMapper.modulemap
│ ├── AlamofireObjectMapper.xcconfig
│ └── Info.plist
│ ├── ObjectMapper
│ ├── Info.plist
│ ├── ObjectMapper-dummy.m
│ ├── ObjectMapper-prefix.pch
│ ├── ObjectMapper-umbrella.h
│ ├── ObjectMapper.modulemap
│ └── ObjectMapper.xcconfig
│ ├── Pods-CleanTalk
│ ├── Info.plist
│ ├── Pods-CleanTalk-acknowledgements.markdown
│ ├── Pods-CleanTalk-acknowledgements.plist
│ ├── Pods-CleanTalk-dummy.m
│ ├── Pods-CleanTalk-frameworks.sh
│ ├── Pods-CleanTalk-resources.sh
│ ├── Pods-CleanTalk-umbrella.h
│ ├── Pods-CleanTalk.debug.xcconfig
│ ├── Pods-CleanTalk.modulemap
│ └── Pods-CleanTalk.release.xcconfig
│ ├── SDWebImage
│ ├── Info.plist
│ ├── SDWebImage-dummy.m
│ ├── SDWebImage-prefix.pch
│ ├── SDWebImage-umbrella.h
│ ├── SDWebImage.modulemap
│ └── SDWebImage.xcconfig
│ └── SnapKit
│ ├── Info.plist
│ ├── SnapKit-dummy.m
│ ├── SnapKit-prefix.pch
│ ├── SnapKit-umbrella.h
│ ├── SnapKit.modulemap
│ └── SnapKit.xcconfig
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | Expressions.xcexplist
2 | *.xcuserdata
3 | *.xcuserstate
4 | *.xcscheme
5 | *.DS_Store
6 |
7 | # Xcode
8 | build/*
9 | *.pbxuser
10 | !default.pbxuser
11 | *.mode1v3
12 | !default.mode1v3
13 | *.mode2v3
14 | !default.mode2v3
15 | *.perspectivev3
16 | !default.perspectivev3
17 | *.xcworkspace
18 | !default.xcworkspace
19 | xcuserdata
20 | profile
21 | *.moved-aside
22 |
23 | # Pods
24 | Pods/*
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk.xcodeproj/project.xcworkspace/xcuserdata/olegsehelin.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk.xcodeproj/project.xcworkspace/xcuserdata/olegsehelin.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk.xcodeproj/xcuserdata/olegsehelin.xcuserdatad/xcschemes/CleanTalk.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk.xcodeproj/xcuserdata/olegsehelin.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | CleanTalk.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 8A36C6A31E40B63D004D92CA
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | aps-environment
6 | development
7 |
8 |
9 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/80*80-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/80*80-1.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/80*80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/80*80.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "defaultIcon@2x.png",
5 | "idiom" : "iphone",
6 | "scale" : "2x",
7 | "size" : "20x20"
8 | },
9 | {
10 | "filename" : "defaultIcon@2x copy.png",
11 | "idiom" : "iphone",
12 | "scale" : "3x",
13 | "size" : "20x20"
14 | },
15 | {
16 | "filename" : "defaultIcon@2x copy-1.png",
17 | "idiom" : "iphone",
18 | "scale" : "2x",
19 | "size" : "29x29"
20 | },
21 | {
22 | "filename" : "defaultIcon@2x copy-4.png",
23 | "idiom" : "iphone",
24 | "scale" : "3x",
25 | "size" : "29x29"
26 | },
27 | {
28 | "filename" : "80*80-1.png",
29 | "idiom" : "iphone",
30 | "scale" : "2x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "filename" : "Icon-60@2x-1.png",
35 | "idiom" : "iphone",
36 | "scale" : "3x",
37 | "size" : "40x40"
38 | },
39 | {
40 | "filename" : "Icon-60@2x.png",
41 | "idiom" : "iphone",
42 | "scale" : "2x",
43 | "size" : "60x60"
44 | },
45 | {
46 | "filename" : "defaultIcon@2x copy-5.png",
47 | "idiom" : "iphone",
48 | "scale" : "3x",
49 | "size" : "60x60"
50 | },
51 | {
52 | "filename" : "defaultIcon@2x copy-3.png",
53 | "idiom" : "ipad",
54 | "scale" : "1x",
55 | "size" : "20x20"
56 | },
57 | {
58 | "filename" : "defaultIcon@2x-2.png",
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "20x20"
62 | },
63 | {
64 | "filename" : "defaultIcon@2x copy-6.png",
65 | "idiom" : "ipad",
66 | "scale" : "1x",
67 | "size" : "29x29"
68 | },
69 | {
70 | "filename" : "defaultIcon@2x copy-2.png",
71 | "idiom" : "ipad",
72 | "scale" : "2x",
73 | "size" : "29x29"
74 | },
75 | {
76 | "filename" : "defaultIcon@2x-1.png",
77 | "idiom" : "ipad",
78 | "scale" : "1x",
79 | "size" : "40x40"
80 | },
81 | {
82 | "filename" : "80*80.png",
83 | "idiom" : "ipad",
84 | "scale" : "2x",
85 | "size" : "40x40"
86 | },
87 | {
88 | "filename" : "Icon-76.png",
89 | "idiom" : "ipad",
90 | "scale" : "1x",
91 | "size" : "76x76"
92 | },
93 | {
94 | "filename" : "Icon-76@2x.png",
95 | "idiom" : "ipad",
96 | "scale" : "2x",
97 | "size" : "76x76"
98 | },
99 | {
100 | "filename" : "defaultIcon@2x-3.png",
101 | "idiom" : "ipad",
102 | "scale" : "2x",
103 | "size" : "83.5x83.5"
104 | },
105 | {
106 | "filename" : "cleantalk-logo-no-alpha.png",
107 | "idiom" : "ios-marketing",
108 | "scale" : "1x",
109 | "size" : "1024x1024"
110 | }
111 | ],
112 | "info" : {
113 | "author" : "xcode",
114 | "version" : 1
115 | }
116 | }
117 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/Icon-60@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/Icon-60@2x-1.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/cleantalk-logo-no-alpha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/cleantalk-logo-no-alpha.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy-1.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy-2.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy-3.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy-4.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy-5.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy-6.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x copy.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x-1.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x-2.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x-3.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Assets.xcassets/AppIcon.appiconset/defaultIcon@2x.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/Constants.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Constants.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 1/31/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | public enum StatisticType : Int {
12 | case enabledSpamToday = 100
13 | case enabledSpamYesterday
14 | case enabledSpamWeek
15 | case disabledSpamToday
16 | case disabledSpamYesterday
17 | case disabledSpamWeek
18 | case enabledFirewallToday
19 | case enabledFirewallYesterday
20 | case enabledFirewallWeek
21 | }
22 |
23 | struct Constants {
24 | struct URL {
25 | static let apiURL = "https://cleantalk.org/"
26 | static let registrationURL = "https://cleantalk.org/register"
27 | static let passwordURL = "https://cleantalk.org/my/reset_password"
28 | }
29 |
30 | struct Defines {
31 | static let alreadyLogin = "user_login"
32 | static let sessionId = "app_session_id"
33 | static let timeInterval = "timestamp"
34 | static let deviceToken = "device_token"
35 | static let lastLogin = "last_login"
36 | static let success = "success"
37 | static let requests = "requests"
38 | }
39 |
40 | struct Service {
41 | static let serviceName = "servicename"
42 | static let serviceIcon = "favicon_url"
43 | static let serviceId = "service_id"
44 | static let serviceStatToday = "today"
45 | static let serviceStatYesterday = "yesterday"
46 | static let serviceStatWeek = "week"
47 | static let serviceKey = "services"
48 | static let serviceAuthKey = "auth_key"
49 | }
50 |
51 | struct Statistic {
52 | static let statSpam = "spam"
53 | static let statAllow = "allow"
54 | static let statSfw = "sfw"
55 | }
56 |
57 | struct DetailStatistic {
58 | static let detailStatDate = "datetime"
59 | static let detailStatApproved = "approved"
60 | static let detailStatEmail = "sender_email"
61 | static let detailStatUser = "sender_nickname"
62 | static let detailStatType = "type"
63 | static let detailStatMessage = "message"
64 | static let detailStatRequestId = "request_id"
65 | static let detailStatAllow = "allow"
66 | }
67 |
68 | struct Update {
69 | static let updateComment = "comment"
70 | static let updateReceived = "received"
71 | }
72 |
73 | struct SFW {
74 | static let sfwIP = "ip"
75 | static let sfwCountry = "country"
76 | static let sfwPassed = "allow"
77 | static let sfwTotal = "total"
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/DispatcherCore/AbstractDispatcher.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AbstractDispatcher.swift
3 | // HelpAround
4 | //
5 | // Created by Oleg Sehelin on 2/2/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import ObjectMapper
11 |
12 | public class AbstractDispatcher {
13 |
14 | required public init() {
15 |
16 | }
17 |
18 | final public func run(request: AbstractRequest, keyPath: String?, completion: @escaping (Response) -> Void) {
19 | runRequest(request: request, keyPath: keyPath) { response in
20 | switch response {
21 | case .success(let data):
22 | if let dictionary = data as? [String : AnyObject] {
23 | if let responseObject = request.response(object: dictionary) {
24 | completion(Response.success(responseObject))
25 | return
26 | }
27 | }
28 | let error: Error = DispatcherDataError.parseError(data)
29 | completion(Response.error(error))
30 | case .error(let error):
31 | completion(Response.error(error))
32 | }
33 | }
34 | }
35 |
36 | final public func run(request: AbstractRequest, keyPath: String?, completion: @escaping (Response<[T]>) -> Void) {
37 | runRequest(request: request, keyPath: keyPath) { response in
38 | switch response {
39 | case .success(let data):
40 | var error: Error
41 | if keyPath == nil {
42 | if let array = data as? [[String : Any]] {
43 | if let responseObject = request.response(object: array) {
44 | completion(Response.success(responseObject))
45 | return
46 | }
47 | }
48 | error = DispatcherDataError.parseError(data)
49 | } else if let dictionary = data as? [String : Any], let array = dictionary[keyPath!] as? [[String : Any]] {
50 | if let responseObject = request.response(object: array) {
51 | completion(Response.success(responseObject))
52 | return
53 | }
54 | }
55 | error = DispatcherDataError.parseError(data)
56 | completion(Response.error(error))
57 | case .error(let error):
58 | completion(Response.error(error))
59 | }
60 | }
61 |
62 | }
63 |
64 | public func runRequest(request: AbstractRequest, keyPath: String?, completion: @escaping (Response) -> Void) {
65 | preconditionFailure("Override in subclass")
66 | }
67 |
68 | }
69 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/DispatcherCore/AbstractRequest.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AbstractRequest.swift
3 | // HelpAround
4 | //
5 | // Created by Oleg Sehelin on 2/2/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import ObjectMapper
11 | import Alamofire
12 |
13 | public class AbstractRequest {
14 |
15 | public typealias ResponseType = T
16 | public var serverURL : String
17 | public var encodingType: ParameterEncoding = URLEncoding.httpBody
18 |
19 | public init () {
20 | serverURL = Constants.URL.apiURL
21 | }
22 |
23 | func urlString() -> String {
24 | preconditionFailure("Override this in subclasses")
25 | }
26 |
27 | func urlParameters() -> [String : String]? {
28 | return nil
29 | }
30 |
31 | func parameters() -> [String : Any]? {
32 | return nil
33 | }
34 |
35 | public func fullUrlString() -> String {
36 | var fullUrlString : String = urlString()
37 | if let urlParameters = urlParameters() {
38 | var parametersArray : [String] = [String]()
39 | for (key, value) in urlParameters {
40 | parametersArray.append(key + "=" + value)
41 | }
42 |
43 | let parametersString = parametersArray.joined(separator: "&")
44 |
45 | fullUrlString = fullUrlString + "?" + parametersString
46 | }
47 |
48 | return fullUrlString
49 | }
50 |
51 | public func method() -> RequestMethod {
52 | preconditionFailure("Override this in subclasses")
53 | }
54 |
55 | public func headers() -> [String: String]? {
56 | return ["Content-Type" : "application/json", "Accept" : "application/json"]
57 | }
58 |
59 |
60 | public func response(object: [String : AnyObject]) -> ResponseType? {
61 | return Mapper().map(JSONObject: object)
62 | }
63 |
64 | public func response(object: [[String : Any]]) -> [ResponseType]? {
65 | return Mapper().mapArray(JSONArray: object)
66 | }
67 |
68 | }
69 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/DispatcherCore/AbstractResponse.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HARAbstractModel.swift
3 | // HelpAround
4 | //
5 | // Created by Oleg Sehelin on 2/2/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import ObjectMapper
11 |
12 | public class AbstractResponse: Mappable {
13 |
14 | public required init?(map: Map) {
15 |
16 | }
17 |
18 | public init() {
19 |
20 | }
21 |
22 | public func mapping(map: Map) {
23 | preconditionFailure("Override this in subclasses")
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/DispatcherCore/AlamofireDispatcher.swift:
--------------------------------------------------------------------------------
1 | //
2 | // File.swift
3 | // RequestDispatcher
4 | //
5 | // Created by Oleg Sehelin on 2/2/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import ObjectMapper
11 | import Alamofire
12 |
13 | class AlamofireDispatcher: AbstractDispatcher {
14 |
15 | static let shared = AlamofireDispatcher()
16 |
17 | required public init() {
18 | super.init()
19 | }
20 |
21 | override func runRequest(request: AbstractRequest, keyPath: String?, completion: @escaping (Response) -> Void) {
22 | Alamofire.request(request.serverURL + request.fullUrlString(), method: HTTPMethod(rawValue: request.method().rawValue)!, parameters: request.parameters(), encoding: request.encodingType, headers: request.headers()).responseJSON { response in
23 | switch response.result {
24 | case .success(let data):
25 | completion(Response.success(data))
26 | case .failure(let error):
27 | completion(Response.error(error))
28 | }
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/DispatcherCore/Enums.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Enums.swift
3 | // RequestDispatcher
4 | //
5 | // Created by Oleg Sehelin on 2/2/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import Alamofire
11 |
12 | //MARK: HTTP methods
13 | public enum RequestMethod: String {
14 | case options = "OPTIONS"
15 | case get = "GET"
16 | case head = "HEAD"
17 | case post = "POST"
18 | case put = "PUT"
19 | case patch = "PATCH"
20 | case delete = "DELETE"
21 | case trace = "TRACE"
22 | case connect = "CONNECT"
23 | }
24 |
25 | //MARK: Errors
26 | public enum Response {
27 | case success(T)
28 | case error(Error)
29 | }
30 |
31 | public enum DispatcherDataError : Error {
32 | case parseError(Any)
33 | }
34 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/Models/ChangeStatusModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChangeStatusModel.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 2/9/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import ObjectMapper
11 |
12 | class ChangeStatusModel: AbstractResponse {
13 | var comment: String?
14 | var received: NSNumber?
15 |
16 | public override func mapping(map: Map) {
17 | comment <- map[Constants.Update.updateComment]
18 | received <- map[Constants.Update.updateReceived]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/Models/DetailStatisticModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DetailStatisticModel.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 2/2/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import ObjectMapper
11 |
12 | class DetailStatisticModel: AbstractResponse {
13 | var date: String?
14 | var sender: String?
15 | var email: String?
16 | var type: String?
17 | var message: String?
18 | var approved: String = "2"
19 | var allow: String?
20 | var requestId: String?
21 | var sfwIp: String?
22 | var sfwCountry: String?
23 | var sfwPassed: String?
24 | var sfwTotal: String?
25 |
26 | public override func mapping(map: Map) {
27 | date <- map[Constants.DetailStatistic.detailStatDate]
28 | sender <- map[Constants.DetailStatistic.detailStatUser]
29 | email <- map[Constants.DetailStatistic.detailStatEmail]
30 | type <- map[Constants.DetailStatistic.detailStatType]
31 | message <- map[Constants.DetailStatistic.detailStatMessage]
32 | approved <- map[Constants.DetailStatistic.detailStatApproved]
33 | allow <- map[Constants.DetailStatistic.detailStatAllow]
34 | requestId <- map[Constants.DetailStatistic.detailStatRequestId]
35 | sfwIp <- map[Constants.SFW.sfwIP]
36 | sfwCountry <- map[Constants.SFW.sfwCountry]
37 | sfwPassed <- map[Constants.SFW.sfwPassed]
38 | sfwTotal <- map[Constants.SFW.sfwTotal]
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/Models/LoginModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LoginModel.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 2/2/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import ObjectMapper
11 |
12 | class LoginModel: AbstractResponse {
13 | var success: Int?
14 | var sessionId: String?
15 |
16 | public override func mapping(map: Map) {
17 | success <- map[Constants.Defines.success]
18 | sessionId <- map[Constants.Defines.sessionId]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/Models/ServiceModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // StatisticModel.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 2/2/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import ObjectMapper
11 |
12 | class ServiceModel: AbstractResponse {
13 | var siteName: String?
14 | var siteIcon: String?
15 | var detailStats: [DetailStatisticModel]?
16 | var serviceId: Int?
17 | var statsToday: StatisticModel?
18 | var statsYesterday: StatisticModel?
19 | var statsWeek: StatisticModel?
20 | var authKey: String = ""
21 |
22 | public override func mapping(map: Map) {
23 | siteName <- map[Constants.Service.serviceName]
24 | siteIcon <- map[Constants.Service.serviceIcon]
25 | serviceId <- (map[Constants.Service.serviceId], IntTransform())
26 | statsToday <- map[Constants.Service.serviceStatToday]
27 | statsYesterday <- map[Constants.Service.serviceStatYesterday]
28 | statsWeek <- map[Constants.Service.serviceStatWeek]
29 | authKey <- map[Constants.Service.serviceAuthKey]
30 | }
31 |
32 | func checkIfNeedToShowSFWView() -> Bool {
33 | return self.statsToday?.sfw != nil || self.statsYesterday?.sfw != nil || self.statsWeek?.sfw != nil
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/Models/StatisticModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // StatisticModel.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 2/2/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import ObjectMapper
11 |
12 | public class IntTransform: TransformType {
13 |
14 | public typealias Object = Int
15 | public typealias JSON = Any?
16 |
17 | public init() {}
18 |
19 | public func transformFromJSON(_ value: Any?) -> Int? {
20 |
21 | var result: Int?
22 |
23 | guard let json = value else {
24 | return result
25 | }
26 |
27 | if json is Int {
28 | result = (json as! Int)
29 | }
30 | if json is String {
31 | result = Int(json as! String)
32 | }
33 |
34 | return result
35 | }
36 |
37 | public func transformToJSON(_ value: Int?) -> Any?? {
38 |
39 | guard let object = value else {
40 | return nil
41 | }
42 |
43 | return String(object)
44 | }
45 | }
46 |
47 | class StatisticModel: AbstractResponse {
48 | var spam: Int?
49 | var allow: Int?
50 | var sfw: Int?
51 |
52 | public override func mapping(map: Map) {
53 | spam <- (map[Constants.Statistic.statSpam], IntTransform())
54 | allow <- (map[Constants.Statistic.statAllow], IntTransform())
55 | sfw <- (map[Constants.Statistic.statSfw], IntTransform())
56 | }
57 |
58 | }
59 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/ModelsManager.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ModelsManager.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 2/2/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class ModelsManager: NSObject {
12 | static let shared = ModelsManager()
13 |
14 | public var loginModel: LoginModel?
15 | public var statisticModelsList: [ServiceModel]?
16 |
17 | func showAlertMessage(withError error:Error?) {
18 | let alert = UIAlertView(title: NSLocalizedString("ERROR", comment: ""), message: error?.localizedDescription ?? NSLocalizedString("ERROR_MESSAGE", comment: ""), delegate: self, cancelButtonTitle: "Ok")
19 | alert.show()
20 | }
21 |
22 | func getSessionId() -> String? {
23 | return self.loginModel?.sessionId
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/Requests/ChangeStatusRequest.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChangeStatusRequest.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 2/9/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import Alamofire
11 |
12 | class ChangeStatusRequest: AbstractRequest {
13 | var authKey: String = ""
14 | var messageId: String = ""
15 | var status: Bool = false
16 |
17 | override init () {
18 | super.init()
19 | self.serverURL = "https://moderate.cleantalk.org/api2.0"
20 | self.encodingType = JSONEncoding.default
21 | }
22 |
23 | override func urlString() -> String {
24 | return ""
25 | }
26 |
27 | override func parameters() -> [String : Any]? {
28 | let parameters = [
29 | "method_name": "send_feedback",
30 | "auth_key": authKey,
31 | "feedback" : messageId + (self.status == true ? "1" : "0")
32 | ]
33 |
34 | return parameters
35 | }
36 |
37 | public override func method() -> RequestMethod {
38 | return .post
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/Requests/DetailStatsRequest.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DetailStatsRequest.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 2/2/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class DetailStatsRequest: AbstractRequest {
12 |
13 | public var sessionId: String?
14 | public var time: String?
15 | public var serviceId: String?
16 | public var days: String?
17 | public var index:Int = 0
18 | public var allow:Bool = false
19 | public var isSpamRequest: Bool = true
20 |
21 | override func urlString() -> String {
22 | return self.isSpamRequest == true ? "my/show_requests?app_mode=1" : "my/show_sfw?app_mode=1"
23 | }
24 |
25 | override func parameters() -> [String : Any]? {
26 | var parameters = [
27 | "start_from": self.time ?? "",
28 | "service_id" : self.serviceId ?? "",
29 | "app_session_id" : self.sessionId ?? ""
30 | ]
31 |
32 | if let day = self.days {
33 | parameters["days"] = day
34 | }
35 |
36 | if self.isSpamRequest == true {
37 | parameters["allow"] = self.allow == true ? "1" : "0"
38 | }
39 |
40 | return parameters
41 | }
42 |
43 | override func headers() -> [String : String]? {
44 | return nil
45 | }
46 |
47 | public override func method() -> RequestMethod {
48 | return .post
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/Requests/LoginRequest.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LoginRequest.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 2/2/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class LoginRequest: AbstractRequest {
12 | public var login: String?
13 | public var password: String?
14 | public var deviceToken: String?
15 |
16 | override func urlString() -> String {
17 | return "my/session?app_mode=1"
18 | }
19 |
20 | override func parameters() -> [String : Any]? {
21 | let parameters = [
22 | "login": login ?? "",
23 | "password": password ?? "",
24 | "app_device_token": deviceToken != nil ? deviceToken!.lowercased() : ""
25 | ]
26 |
27 | return parameters
28 | }
29 |
30 | override func headers() -> [String : String]? {
31 | return nil
32 | }
33 |
34 | public override func method() -> RequestMethod {
35 | return .post
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/DataClasses/Requests/MainStatsRequest.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MainStatsRequest.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 2/2/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class MainStatsRequest: AbstractRequest {
12 |
13 | public var pageNumber: Int? = 1
14 | public var sessionId: String?
15 |
16 | override func urlString() -> String {
17 | return "my/main?app_mode=1&all_results=1"
18 | }
19 |
20 | override func parameters() -> [String : Any]? {
21 | let parameters = [
22 | "app_session_id": self.sessionId ?? ""
23 | ]
24 |
25 | return parameters
26 | }
27 |
28 | override func headers() -> [String : String]? {
29 | return nil
30 | }
31 |
32 | public override func method() -> RequestMethod {
33 | return .post
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | CleanTalk
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(MARKETING_VERSION)
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | LSRequiresIPhoneOS
24 |
25 | NSAppTransportSecurity
26 |
27 | NSAllowsArbitraryLoads
28 |
29 |
30 | UILaunchStoryboardName
31 | LaunchScreen
32 | UIRequiredDeviceCapabilities
33 |
34 | armv7
35 |
36 | UIRequiresFullScreen
37 |
38 | UIStatusBarHidden
39 |
40 | UISupportedInterfaceOrientations
41 |
42 | UIInterfaceOrientationPortrait
43 |
44 | UISupportedInterfaceOrientations~ipad
45 |
46 | UIInterfaceOrientationPortrait
47 | UIInterfaceOrientationPortraitUpsideDown
48 | UIInterfaceOrientationLandscapeLeft
49 | UIInterfaceOrientationLandscapeRight
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Resources/defaultIcon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Resources/defaultIcon@2x.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/Resources/logo_iphone@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CleanTalk/ios-app/de096735b399cfaafbb5d674092a8eeb766fc2b7/CleanTalk/CleanTalk/CleanTalk/Resources/logo_iphone@2x.png
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTDetailsViewController/CTDetailsCell/en.lproj/CTDetailsCell.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UILabel"; text = "Type:"; ObjectID = "05P-Lr-bO7"; */
3 | "05P-Lr-bO7.text" = "Type:";
4 |
5 | /* Class = "UILabel"; text = "Label"; ObjectID = "Hzf-3b-b3F"; */
6 | "Hzf-3b-b3F.text" = "Label";
7 |
8 | /* Class = "UIButton"; normalTitle = "Button"; ObjectID = "Ost-us-iRl"; */
9 | "Ost-us-iRl.normalTitle" = "Button";
10 |
11 | /* Class = "UILabel"; text = "Label"; ObjectID = "S7E-p9-8LJ"; */
12 | "S7E-p9-8LJ.text" = "Label";
13 |
14 | /* Class = "UILabel"; text = "Status:"; ObjectID = "eOc-Nm-osq"; */
15 | "eOc-Nm-osq.text" = "Status:";
16 |
17 | /* Class = "UILabel"; text = "Label"; ObjectID = "gr6-fp-K3m"; */
18 | "gr6-fp-K3m.text" = "Label";
19 |
20 | /* Class = "UILabel"; text = "Sender:"; ObjectID = "gwV-wO-6it"; */
21 | "gwV-wO-6it.text" = "Sender:";
22 |
23 | /* Class = "UILabel"; text = "Label"; ObjectID = "o9D-iG-jZO"; */
24 | "o9D-iG-jZO.text" = "Label";
25 |
26 | /* Class = "UILabel"; text = "Label"; ObjectID = "psd-7J-M0h"; */
27 | "psd-7J-M0h.text" = "Label";
28 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTDetailsViewController/CTDetailsCell/ru.lproj/CTDetailsCell.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UILabel"; text = "Type:"; ObjectID = "05P-Lr-bO7"; */
3 | "05P-Lr-bO7.text" = "Тип:";
4 |
5 | /* Class = "UILabel"; text = "Label"; ObjectID = "Hzf-3b-b3F"; */
6 | "Hzf-3b-b3F.text" = "Label";
7 |
8 | /* Class = "UIButton"; normalTitle = "Button"; ObjectID = "Ost-us-iRl"; */
9 | "Ost-us-iRl.normalTitle" = "Button";
10 |
11 | /* Class = "UILabel"; text = "Label"; ObjectID = "S7E-p9-8LJ"; */
12 | "S7E-p9-8LJ.text" = "Label";
13 |
14 | /* Class = "UILabel"; text = "Status:"; ObjectID = "eOc-Nm-osq"; */
15 | "eOc-Nm-osq.text" = "Статус:";
16 |
17 | /* Class = "UILabel"; text = "Label"; ObjectID = "gr6-fp-K3m"; */
18 | "gr6-fp-K3m.text" = "Label";
19 |
20 | /* Class = "UILabel"; text = "Sender:"; ObjectID = "gwV-wO-6it"; */
21 | "gwV-wO-6it.text" = "Отправитель:";
22 |
23 | /* Class = "UILabel"; text = "Label"; ObjectID = "o9D-iG-jZO"; */
24 | "o9D-iG-jZO.text" = "Label";
25 |
26 | /* Class = "UILabel"; text = "Label"; ObjectID = "psd-7J-M0h"; */
27 | "psd-7J-M0h.text" = "Label";
28 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTDetailsViewController/CTDetailsViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CTDetailsViewController.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 2/8/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | let kDetailsCellHeight = 105.0
12 |
13 | class CTDetailsViewController: UIViewController {
14 |
15 | @IBOutlet fileprivate weak var tableView: UITableView!
16 | var dataSource: [DetailStatisticModel] = []
17 | var authKey: String = ""
18 |
19 | override func viewDidLoad() {
20 | super.viewDidLoad()
21 | self.navigationController?.navigationBar.tintColor = UIColor.black
22 | self.title = "Blacklist Review"
23 | // Do any additional setup after loading the view.
24 |
25 | self.tableView.register(UINib(nibName: "CTDetailsCell", bundle: nil), forCellReuseIdentifier: "Details Cell")
26 |
27 | self.tableView.estimatedRowHeight = CGFloat(kDetailsCellHeight)
28 | self.tableView.rowHeight = UITableView.automaticDimension
29 | }
30 |
31 | override func didReceiveMemoryWarning() {
32 | super.didReceiveMemoryWarning()
33 | // Dispose of any resources that can be recreated.
34 | }
35 | }
36 |
37 | extension CTDetailsViewController: UITableViewDataSource {
38 | func numberOfSections(in tableView: UITableView) -> Int {
39 | return 1
40 | }
41 |
42 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
43 | return self.dataSource.count
44 | }
45 |
46 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
47 | let cell = tableView.dequeueReusableCell(withIdentifier: "Details Cell", for: indexPath) as! CTDetailsCell
48 | cell.delegate = self
49 | cell.tag = indexPath.row
50 | cell.updateCellWithModel(model: self.dataSource[indexPath.row])
51 |
52 | return cell
53 | }
54 | }
55 |
56 | extension CTDetailsViewController: CTDetailCellDelegate {
57 | func updateStatusForMessage(_ messageId: String, status: Bool, cellIndex: Int) {
58 | let alert = UIAlertController(title: NSLocalizedString("REPORTED_TITLE", comment: ""), message: nil, preferredStyle: .alert)
59 |
60 | let okAction = UIAlertAction(title: NSLocalizedString("REPORTED_YES", comment: ""), style: .default, handler: { result in
61 | let request = ChangeStatusRequest()
62 | request.messageId = messageId
63 | request.status = status
64 | request.authKey = self.authKey
65 |
66 | AlamofireDispatcher.shared.run(request: request, keyPath: nil) { (responce: Response) in
67 | switch responce {
68 | case .success(let model):
69 | if model.received?.intValue == 1 {
70 | let detailsModel = self.dataSource[cellIndex]
71 | detailsModel.approved = status == true ? "1" : "0"
72 | let indexPath = IndexPath(item: cellIndex, section: 0)
73 | self.tableView.reloadRows(at: [indexPath], with: .none)
74 | }
75 | case .error(let error):
76 | ModelsManager.shared.showAlertMessage(withError: error)
77 | }
78 | }
79 | })
80 |
81 | let cancelAction = UIAlertAction(title: NSLocalizedString("REPORTED_NO", comment: ""), style: .default, handler: { result in
82 | alert.dismiss(animated: true, completion: nil)
83 | let indexPath = IndexPath(item: cellIndex, section: 0)
84 | self.tableView.reloadRows(at: [indexPath], with: .none)
85 | })
86 |
87 | alert.addAction(okAction)
88 | alert.addAction(cancelAction)
89 | self.navigationController?.present(alert, animated: true, completion: nil)
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTDetailsViewController/en.lproj/CTDetailsViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTLoginViewController/CTLoginViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CTLoginViewController.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 1/31/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class CTLoginViewController: UIViewController {
12 |
13 | override var prefersStatusBarHidden: Bool {
14 | return true
15 | }
16 |
17 | @IBOutlet fileprivate weak var passwordTextFiled: UITextField!
18 | @IBOutlet fileprivate weak var emailTextFiled: UITextField!
19 | @IBOutlet fileprivate weak var activityIndicator: UIActivityIndicatorView!
20 |
21 | override func viewDidLoad() {
22 | super.viewDidLoad()
23 |
24 | // Do any additional setup after loading the view.
25 | }
26 |
27 | override func viewWillAppear(_ animated: Bool) {
28 | super.viewWillAppear(animated)
29 | self.navigationController?.isNavigationBarHidden = true
30 |
31 |
32 | if let text = UserDefaults.standard.value(forKey: Constants.Defines.lastLogin) as? String {
33 | self.emailTextFiled.text = text
34 | }
35 | }
36 |
37 | override func didReceiveMemoryWarning() {
38 | super.didReceiveMemoryWarning()
39 | // Dispose of any resources that can be recreated.
40 | }
41 |
42 | fileprivate func openURLFromString(string: String) {
43 | let url = URL(string:string)!
44 | if UIApplication.shared.canOpenURL(url) {
45 | UIApplication.shared.openURL(url)
46 | }
47 | }
48 |
49 | //MARK - Buttons
50 | @IBAction func loginPressed() {
51 | if let email = self.emailTextFiled.text, let password = self.passwordTextFiled.text {
52 | self.activityIndicator.startAnimating()
53 |
54 | let request = LoginRequest()
55 | request.login = email
56 | request.password = password
57 | request.deviceToken = UserDefaults.standard.value(forKey: Constants.Defines.deviceToken) as? String
58 |
59 | AlamofireDispatcher.shared.run(request: request, keyPath: nil) { (response: Response) in
60 | switch response {
61 | case .success(let model):
62 | ModelsManager.shared.loginModel = model
63 | if model.success == 1 {
64 | UserDefaults.standard.setValue(model.sessionId, forKey: Constants.Defines.sessionId)
65 | UserDefaults.standard.setValue(true, forKey: Constants.Defines.alreadyLogin)
66 | let statisticVC = CTStatisticViewController(nibName: "CTStatisticViewController", bundle: nil)
67 | self.navigationController?.pushViewController(statisticVC, animated: true)
68 | self.activityIndicator.stopAnimating()
69 | } else {
70 | self.activityIndicator.stopAnimating()
71 | ModelsManager.shared.showAlertMessage(withError: nil)
72 | }
73 | case .error:
74 | self.activityIndicator.stopAnimating()
75 | ModelsManager.shared.showAlertMessage(withError: nil)
76 | }
77 | }
78 | }
79 | }
80 |
81 | @IBAction func registerPressed() {
82 | self.openURLFromString(string: Constants.URL.registrationURL)
83 | }
84 |
85 | @IBAction func resetPasswordPressed() {
86 | self.openURLFromString(string: Constants.URL.passwordURL)
87 | }
88 |
89 | }
90 |
91 | extension CTLoginViewController: UITextFieldDelegate {
92 |
93 | func textFieldShouldReturn(_ textField: UITextField) -> Bool {
94 | textField.resignFirstResponder()
95 | if textField.isEqual(self.emailTextFiled) {
96 | self.passwordTextFiled.becomeFirstResponder()
97 | }
98 |
99 | return true
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTLoginViewController/en.lproj/CTLoginViewController~ipad.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UIButton"; normalTitle = "Reset password"; ObjectID = "AMb-hb-OrQ"; */
3 | "AMb-hb-OrQ.normalTitle" = "Reset password";
4 |
5 | /* Class = "UILabel"; text = "Email:"; ObjectID = "EBN-TO-NwM"; */
6 | "EBN-TO-NwM.text" = "Email:";
7 |
8 | /* Class = "UILabel"; text = "Password:"; ObjectID = "Oed-xi-VYa"; */
9 | "Oed-xi-VYa.text" = "Password:";
10 |
11 | /* Class = "UIButton"; normalTitle = "Get an account"; ObjectID = "PtQ-El-Msx"; */
12 | "PtQ-El-Msx.normalTitle" = "Get an account";
13 |
14 | /* Class = "UIButton"; normalTitle = "Login"; ObjectID = "dmk-Ab-4mb"; */
15 | "dmk-Ab-4mb.normalTitle" = "Login";
16 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTLoginViewController/en.lproj/CTLoginViewController~iphone.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UIButton"; normalTitle = "Reset password"; ObjectID = "MBP-An-9gc"; */
3 | "MBP-An-9gc.normalTitle" = "Reset password";
4 |
5 | /* Class = "UILabel"; text = "Password:"; ObjectID = "cNX-ln-lXU"; */
6 | "cNX-ln-lXU.text" = "Password:";
7 |
8 | /* Class = "UIButton"; normalTitle = "Login"; ObjectID = "hnI-LR-eqO"; */
9 | "hnI-LR-eqO.normalTitle" = "Login";
10 |
11 | /* Class = "UIButton"; normalTitle = "Get an account"; ObjectID = "o7K-Ji-kNt"; */
12 | "o7K-Ji-kNt.normalTitle" = "Get an account";
13 |
14 | /* Class = "UILabel"; text = "Email:"; ObjectID = "ypG-WX-6JL"; */
15 | "ypG-WX-6JL.text" = "Email:";
16 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTLoginViewController/ru.lproj/CTLoginViewController~ipad.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UIButton"; normalTitle = "Reset password"; ObjectID = "AMb-hb-OrQ"; */
3 | "AMb-hb-OrQ.normalTitle" = "Reset password";
4 |
5 | /* Class = "UILabel"; text = "Email:"; ObjectID = "EBN-TO-NwM"; */
6 | "EBN-TO-NwM.text" = "Email:";
7 |
8 | /* Class = "UILabel"; text = "Password:"; ObjectID = "Oed-xi-VYa"; */
9 | "Oed-xi-VYa.text" = "Password:";
10 |
11 | /* Class = "UIButton"; normalTitle = "Get an account"; ObjectID = "PtQ-El-Msx"; */
12 | "PtQ-El-Msx.normalTitle" = "Get an account";
13 |
14 | /* Class = "UIButton"; normalTitle = "Login"; ObjectID = "dmk-Ab-4mb"; */
15 | "dmk-Ab-4mb.normalTitle" = "Login";
16 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTLoginViewController/ru.lproj/CTLoginViewController~iphone.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UIButton"; normalTitle = "Reset password"; ObjectID = "MBP-An-9gc"; */
3 | "MBP-An-9gc.normalTitle" = "Новый пароль";
4 |
5 | /* Class = "UILabel"; text = "Password:"; ObjectID = "cNX-ln-lXU"; */
6 | "cNX-ln-lXU.text" = "Пароль:";
7 |
8 | /* Class = "UIButton"; normalTitle = "Login"; ObjectID = "hnI-LR-eqO"; */
9 | "hnI-LR-eqO.normalTitle" = "Войти";
10 |
11 | /* Class = "UIButton"; normalTitle = "Get an account"; ObjectID = "o7K-Ji-kNt"; */
12 | "o7K-Ji-kNt.normalTitle" = "Новый пользователь";
13 |
14 | /* Class = "UILabel"; text = "Email:"; ObjectID = "ypG-WX-6JL"; */
15 | "ypG-WX-6JL.text" = "Логин:";
16 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTSFWViewController/CTSFWCell/CTSFWCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CTSFWCell.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 2/9/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class CTSFWCell: UITableViewCell {
12 |
13 | @IBOutlet fileprivate weak var flagLabel: UILabel!
14 | @IBOutlet fileprivate weak var dateLabel: UILabel!
15 | @IBOutlet fileprivate weak var countryLabel: UILabel!
16 | @IBOutlet fileprivate weak var ipLabel: UILabel!
17 | @IBOutlet fileprivate weak var totalLabel: UILabel!
18 | @IBOutlet fileprivate weak var passedLabel: UILabel!
19 |
20 | override func awakeFromNib() {
21 | super.awakeFromNib()
22 | // Initialization code
23 | }
24 |
25 | override func setSelected(_ selected: Bool, animated: Bool) {
26 | super.setSelected(selected, animated: animated)
27 |
28 | // Configure the view for the selected state
29 | }
30 |
31 | func updateCellWithModel(dataModel: DetailStatisticModel?) {
32 | if let model = dataModel, let code = model.sfwCountry {
33 | self.flagLabel.text = self.flag(countryCode: code)
34 | self.countryLabel.text = self.countryName(from: code)
35 | self.dateLabel.text = model.date
36 | self.ipLabel.text = model.sfwIp
37 | self.totalLabel.text = model.sfwTotal
38 | self.passedLabel.text = model.sfwPassed
39 | }
40 | }
41 |
42 | //MARK: - Helpers
43 | fileprivate func flag(countryCode: String) -> String {
44 | let base = UnicodeScalar("🇦").value - UnicodeScalar("A").value
45 |
46 | var string = ""
47 | countryCode.uppercased().unicodeScalars.forEach {
48 | if let scala = UnicodeScalar(base + $0.value) {
49 | string.append(String(describing: scala))
50 | }
51 | }
52 |
53 | return string
54 | }
55 |
56 | fileprivate func countryName(from countryCode: String) -> String {
57 | if let name = (Locale.current as NSLocale).displayName(forKey: .countryCode, value: countryCode) {
58 | return name
59 | } else {
60 | return countryCode
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTSFWViewController/CTSFWCell/en.lproj/CTSFWCell.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UILabel"; text = "Passed:"; ObjectID = "2gF-1s-iJ2"; */
3 | "2gF-1s-iJ2.text" = "Passed:";
4 |
5 | /* Class = "UILabel"; text = "Label"; ObjectID = "67S-bb-BEf"; */
6 | "67S-bb-BEf.text" = "Label";
7 |
8 | /* Class = "UILabel"; text = "IP:"; ObjectID = "7qE-jy-jkT"; */
9 | "7qE-jy-jkT.text" = "IP:";
10 |
11 | /* Class = "UILabel"; text = "Hits:"; ObjectID = "8Ss-BX-egD"; */
12 | "8Ss-BX-egD.text" = "Hits:";
13 |
14 | /* Class = "UILabel"; text = "Label"; ObjectID = "ChI-Rp-awQ"; */
15 | "ChI-Rp-awQ.text" = "Label";
16 |
17 | /* Class = "UILabel"; text = "Label"; ObjectID = "GhP-Ag-zN3"; */
18 | "GhP-Ag-zN3.text" = "Label";
19 |
20 | /* Class = "UILabel"; text = "192.168.123.234"; ObjectID = "YLN-HY-xta"; */
21 | "YLN-HY-xta.text" = "192.168.123.234";
22 |
23 | /* Class = "UILabel"; text = "L"; ObjectID = "dWh-c1-jI2"; */
24 | "dWh-c1-jI2.text" = "L";
25 |
26 | /* Class = "UILabel"; text = "Label"; ObjectID = "kgp-SA-mrn"; */
27 | "kgp-SA-mrn.text" = "Label";
28 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTSFWViewController/CTSFWCell/ru.lproj/CTSFWCell.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UILabel"; text = "Passed:"; ObjectID = "2gF-1s-iJ2"; */
3 | "2gF-1s-iJ2.text" = "Разрешённые запросы:";
4 |
5 | /* Class = "UILabel"; text = "Label"; ObjectID = "67S-bb-BEf"; */
6 | "67S-bb-BEf.text" = "Label";
7 |
8 | /* Class = "UILabel"; text = "IP:"; ObjectID = "7qE-jy-jkT"; */
9 | "7qE-jy-jkT.text" = "IP:";
10 |
11 | /* Class = "UILabel"; text = "Hits:"; ObjectID = "8Ss-BX-egD"; */
12 | "8Ss-BX-egD.text" = "Запросы:";
13 |
14 | /* Class = "UILabel"; text = "Label"; ObjectID = "ChI-Rp-awQ"; */
15 | "ChI-Rp-awQ.text" = "Label";
16 |
17 | /* Class = "UILabel"; text = "Label"; ObjectID = "GhP-Ag-zN3"; */
18 | "GhP-Ag-zN3.text" = "Label";
19 |
20 | /* Class = "UILabel"; text = "192.168.123.234"; ObjectID = "YLN-HY-xta"; */
21 | "YLN-HY-xta.text" = "192.168.123.234";
22 |
23 | /* Class = "UILabel"; text = "L"; ObjectID = "dWh-c1-jI2"; */
24 | "dWh-c1-jI2.text" = "L";
25 |
26 | /* Class = "UILabel"; text = "Label"; ObjectID = "kgp-SA-mrn"; */
27 | "kgp-SA-mrn.text" = "Label";
28 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTSFWViewController/CTSFWViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CTSFWViewController.swift
3 | // CleanTalk
4 | //
5 | // Created by Oleg Sehelin on 2/9/17.
6 | // Copyright © 2017 Oleg Sehelin. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | fileprivate let kSFWCellHeight = 80.0
12 | class CTSFWViewController: UIViewController {
13 |
14 | @IBOutlet fileprivate weak var tableView: UITableView!
15 | var dataSource: [DetailStatisticModel] = []
16 |
17 | override func viewDidLoad() {
18 | super.viewDidLoad()
19 | self.navigationController?.navigationBar.tintColor = UIColor.black
20 | self.title = "Spam FireWall Review"
21 | // Do any additional setup after loading the view.
22 |
23 | self.tableView.register(UINib(nibName: "CTSFWCell", bundle: nil), forCellReuseIdentifier: "SFW Cell")
24 | }
25 |
26 | override func didReceiveMemoryWarning() {
27 | super.didReceiveMemoryWarning()
28 | // Dispose of any resources that can be recreated.
29 | }
30 | }
31 |
32 | extension CTSFWViewController: UITableViewDataSource {
33 | func numberOfSections(in tableView: UITableView) -> Int {
34 | return 1
35 | }
36 |
37 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
38 | return self.dataSource.count
39 | }
40 |
41 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
42 | let cell = tableView.dequeueReusableCell(withIdentifier: "SFW Cell", for: indexPath) as! CTSFWCell
43 | cell.tag = indexPath.row
44 | cell.updateCellWithModel(dataModel: self.dataSource[indexPath.row])
45 |
46 | return cell
47 | }
48 | }
49 |
50 | extension CTSFWViewController: UITableViewDelegate {
51 | func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
52 | return CGFloat(kSFWCellHeight)
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTSFWViewController/CTSFWViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTStatisticViewController/CTStatisticCell/en.lproj/CTStatisticCell.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UILabel"; text = "Anti-Spam"; ObjectID = "7jS-Oi-Kuq"; */
3 | "7jS-Oi-Kuq.text" = "Anti-Spam";
4 |
5 | /* Class = "UILabel"; text = "Today"; ObjectID = "ZYE-eg-YbM"; */
6 | "ZYE-eg-YbM.text" = "Today";
7 |
8 | /* Class = "UILabel"; text = "Week"; ObjectID = "bL7-xG-r6b"; */
9 | "bL7-xG-r6b.text" = "Week";
10 |
11 | /* Class = "UILabel"; text = "•"; ObjectID = "gW3-Ik-2Pd"; */
12 | "gW3-Ik-2Pd.text" = "•";
13 |
14 | /* Class = "UILabel"; text = "•"; ObjectID = "lef-93-wl4"; */
15 | "lef-93-wl4.text" = "•";
16 |
17 | /* Class = "UILabel"; text = "SpamFireWall"; ObjectID = "p2A-Fy-Pqs"; */
18 | "p2A-Fy-Pqs.text" = "SpamFireWall";
19 |
20 | /* Class = "UILabel"; text = "Yesterday"; ObjectID = "vJs-sL-1su"; */
21 | "vJs-sL-1su.text" = "Yesterday";
22 |
23 | /* Class = "UILabel"; text = "•"; ObjectID = "vQz-q7-jpP"; */
24 | "vQz-q7-jpP.text" = "•";
25 |
26 | /* Class = "UILabel"; text = "Label"; ObjectID = "yZB-Hr-0Pk"; */
27 | "yZB-Hr-0Pk.text" = "Label";
28 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTStatisticViewController/CTStatisticCell/ru.lproj/CTStatisticCell.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UILabel"; text = "Anti-Spam"; ObjectID = "7jS-Oi-Kuq"; */
3 | "7jS-Oi-Kuq.text" = "Anti-Spam";
4 |
5 | /* Class = "UILabel"; text = "Today"; ObjectID = "ZYE-eg-YbM"; */
6 | "ZYE-eg-YbM.text" = "Сегодня";
7 |
8 | /* Class = "UILabel"; text = "Week"; ObjectID = "bL7-xG-r6b"; */
9 | "bL7-xG-r6b.text" = "Неделя";
10 |
11 | /* Class = "UILabel"; text = "•"; ObjectID = "gW3-Ik-2Pd"; */
12 | "gW3-Ik-2Pd.text" = "•";
13 |
14 | /* Class = "UILabel"; text = "•"; ObjectID = "lef-93-wl4"; */
15 | "lef-93-wl4.text" = "•";
16 |
17 | /* Class = "UILabel"; text = "SpamFireWall"; ObjectID = "p2A-Fy-Pqs"; */
18 | "p2A-Fy-Pqs.text" = "SpamFireWall";
19 |
20 | /* Class = "UILabel"; text = "Yesterday"; ObjectID = "vJs-sL-1su"; */
21 | "vJs-sL-1su.text" = "Вчера";
22 |
23 | /* Class = "UILabel"; text = "•"; ObjectID = "vQz-q7-jpP"; */
24 | "vQz-q7-jpP.text" = "•";
25 |
26 | /* Class = "UILabel"; text = "Label"; ObjectID = "yZB-Hr-0Pk"; */
27 | "yZB-Hr-0Pk.text" = "Label";
28 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTStatisticViewController/en.lproj/CTStatisticViewController.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UISearchBar"; 3Y7-zH-HyY.scopeButtonTitles[0] = "Title"; ObjectID = "3Y7-zH-HyY"; */
3 | "3Y7-zH-HyY.scopeButtonTitles[0]" = "Title";
4 |
5 | /* Class = "UISearchBar"; 3Y7-zH-HyY.scopeButtonTitles[1] = "Title"; ObjectID = "3Y7-zH-HyY"; */
6 | "3Y7-zH-HyY.scopeButtonTitles[1]" = "Title";
7 |
8 | /* Class = "UIButton"; normalTitle = "Refresh"; ObjectID = "JSo-Vp-nw6"; */
9 | "JSo-Vp-nw6.normalTitle" = "Refresh";
10 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ViewControllers/CTStatisticViewController/ru.lproj/CTStatisticViewController.strings:
--------------------------------------------------------------------------------
1 |
2 | /* Class = "UISearchBar"; 3Y7-zH-HyY.scopeButtonTitles[0] = "Title"; ObjectID = "3Y7-zH-HyY"; */
3 | "3Y7-zH-HyY.scopeButtonTitles[0]" = "Title";
4 |
5 | /* Class = "UISearchBar"; 3Y7-zH-HyY.scopeButtonTitles[1] = "Title"; ObjectID = "3Y7-zH-HyY"; */
6 | "3Y7-zH-HyY.scopeButtonTitles[1]" = "Title";
7 |
8 | /* Class = "UIButton"; normalTitle = "Refresh"; ObjectID = "JSo-Vp-nw6"; */
9 | "JSo-Vp-nw6.normalTitle" = "Обновить";
10 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/en.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | CleanTalk
4 |
5 | Created by Oleg Sehelin on 2/8/14.
6 | Copyright (c) 2014 CleanTalk. All rights reserved.
7 | */
8 |
9 | "REGISTRATION" = "Get an account";
10 | "FORGOT_PASSWORD" = "Reset password";
11 | "ERROR" = "Error";
12 | "ERROR_MESSAGE" = "Login failure, please check email and password.";
13 | "SITE" = "cleantalk.org";
14 | "LOGOUT" = "Logout";
15 | "REFRESH" = "Refresh";
16 | "TODAY" = "Today";
17 | "YESTERDAY" = "Yesterday";
18 | "WEEK" = "Week";
19 | "ERROR" = "Error";
20 | "PANEL" = "Control panel";
21 | "SPAM" = "Forbidden";
22 | "ALLOW" = "Approved";
23 | "ALLOW_BUTTON" = "Not spam";
24 | "SPAM_BUTTON" = "Spam";
25 | "REPORTED_SPAM_TEXT" = "Reported as SPAM!";
26 | "REPORTED_ALLOW_TEXT" = "Reported as not SPAM!";
27 | "REPORTED_TITLE" = "Are You shure?";
28 | "REPORTED_YES" = "Yes";
29 | "REPORTED_NO" = "No";
30 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ru.lproj/LaunchScreen.strings:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/CleanTalk/CleanTalk/CleanTalk/ru.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | CleanTalk
4 |
5 | Created by Oleg Sehelin on 2/8/14.
6 | Copyright (c) 2014 CleanTalk. All rights reserved.
7 | */
8 |
9 | "REGISTRATION" = "Новый пользователь";
10 | "FORGOT_PASSWORD" = "Новый пароль";
11 | "ERROR" = "Ошибка";
12 | "ERROR_MESSAGE" = "Ошибка авторизации, пожалуйста проверьте логин и пароль.";
13 | "SITE" = "cleantalk.org";
14 | "LOGOUT" = "Выйти";
15 | "REFRESH" = "Обновить";
16 | "TODAY" = "Сегодня";
17 | "YESTERDAY" = "Вчера";
18 | "WEEK" = "Неделя";
19 | "ERROR" = "Ошибка";
20 | "PANEL" = "Панель управления";
21 | "SPAM" = "Спам";
22 | "ALLOW" = "Одобренные";
23 | "ALLOW_BUTTON" = "Не спам";
24 | "SPAM_BUTTON" = "Спам";
25 | "REPORTED_ALLOW_TEXT" = "Отмечен как не спам!";
26 | "REPORTED_SPAM_TEXT" = "Отмечен как спам!";
27 | "REPORTED_TITLE" = "Вы уверены ?";
28 | "REPORTED_YES" = "Да";
29 | "REPORTED_NO" = "Нет";
30 |
--------------------------------------------------------------------------------
/CleanTalk/Podfile:
--------------------------------------------------------------------------------
1 | use_frameworks!
2 | target ‘CleanTalk’ do
3 | pod 'SDWebImage/Core'
4 | pod 'Alamofire'
5 | pod 'AlamofireObjectMapper'
6 | pod 'SnapKit'
7 | pod 'SDWebImage/Core'
8 | end
9 |
--------------------------------------------------------------------------------
/CleanTalk/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Alamofire (4.9.1)
3 | - AlamofireObjectMapper (5.2.1):
4 | - Alamofire (~> 4.7)
5 | - ObjectMapper (~> 3.4)
6 | - ObjectMapper (3.5.3)
7 | - SDWebImage/Core (5.8.1)
8 | - SnapKit (4.2.0)
9 |
10 | DEPENDENCIES:
11 | - Alamofire
12 | - AlamofireObjectMapper
13 | - SDWebImage/Core
14 | - SnapKit
15 |
16 | SPEC REPOS:
17 | trunk:
18 | - Alamofire
19 | - AlamofireObjectMapper
20 | - ObjectMapper
21 | - SDWebImage
22 | - SnapKit
23 |
24 | SPEC CHECKSUMS:
25 | Alamofire: 85e8a02c69d6020a0d734f6054870d7ecb75cf18
26 | AlamofireObjectMapper: 1989f690e982b71921b9253f53a4f33a9bc00d88
27 | ObjectMapper: 97111c97e054a6ee25917662106689f0b4127b37
28 | SDWebImage: e3eae2eda88578db0685a0c88597fdadd9433f05
29 | SnapKit: fe8a619752f3f27075cc9a90244d75c6c3f27e2a
30 |
31 | PODFILE CHECKSUM: a3ea1f0b74f1c60dac25db73943a2e64a1fab4fc
32 |
33 | COCOAPODS: 1.8.4
34 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Alamofire/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DispatchQueue+Alamofire.swift
3 | //
4 | // Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/)
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 | //
24 |
25 | import Dispatch
26 | import Foundation
27 |
28 | extension DispatchQueue {
29 | static var userInteractive: DispatchQueue { return DispatchQueue.global(qos: .userInteractive) }
30 | static var userInitiated: DispatchQueue { return DispatchQueue.global(qos: .userInitiated) }
31 | static var utility: DispatchQueue { return DispatchQueue.global(qos: .utility) }
32 | static var background: DispatchQueue { return DispatchQueue.global(qos: .background) }
33 |
34 | func after(_ delay: TimeInterval, execute closure: @escaping () -> Void) {
35 | asyncAfter(deadline: .now() + delay, execute: closure)
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Alamofire/Source/Notifications.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Notifications.swift
3 | //
4 | // Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/)
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 | //
24 |
25 | import Foundation
26 |
27 | extension Notification.Name {
28 | /// Used as a namespace for all `URLSessionTask` related notifications.
29 | public struct Task {
30 | /// Posted when a `URLSessionTask` is resumed. The notification `object` contains the resumed `URLSessionTask`.
31 | public static let DidResume = Notification.Name(rawValue: "org.alamofire.notification.name.task.didResume")
32 |
33 | /// Posted when a `URLSessionTask` is suspended. The notification `object` contains the suspended `URLSessionTask`.
34 | public static let DidSuspend = Notification.Name(rawValue: "org.alamofire.notification.name.task.didSuspend")
35 |
36 | /// Posted when a `URLSessionTask` is cancelled. The notification `object` contains the cancelled `URLSessionTask`.
37 | public static let DidCancel = Notification.Name(rawValue: "org.alamofire.notification.name.task.didCancel")
38 |
39 | /// Posted when a `URLSessionTask` is completed. The notification `object` contains the completed `URLSessionTask`.
40 | public static let DidComplete = Notification.Name(rawValue: "org.alamofire.notification.name.task.didComplete")
41 | }
42 | }
43 |
44 | // MARK: -
45 |
46 | extension Notification {
47 | /// Used as a namespace for all `Notification` user info dictionary keys.
48 | public struct Key {
49 | /// User info dictionary key representing the `URLSessionTask` associated with the notification.
50 | public static let Task = "org.alamofire.notification.key.task"
51 |
52 | /// User info dictionary key representing the responseData associated with the notification.
53 | public static let ResponseData = "org.alamofire.notification.key.responseData"
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/AlamofireObjectMapper/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Tristan Himmelman
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Alamofire (4.9.1)
3 | - AlamofireObjectMapper (5.2.1):
4 | - Alamofire (~> 4.7)
5 | - ObjectMapper (~> 3.4)
6 | - ObjectMapper (3.5.3)
7 | - SDWebImage/Core (5.8.1)
8 | - SnapKit (4.2.0)
9 |
10 | DEPENDENCIES:
11 | - Alamofire
12 | - AlamofireObjectMapper
13 | - SDWebImage/Core
14 | - SnapKit
15 |
16 | SPEC REPOS:
17 | trunk:
18 | - Alamofire
19 | - AlamofireObjectMapper
20 | - ObjectMapper
21 | - SDWebImage
22 | - SnapKit
23 |
24 | SPEC CHECKSUMS:
25 | Alamofire: 85e8a02c69d6020a0d734f6054870d7ecb75cf18
26 | AlamofireObjectMapper: 1989f690e982b71921b9253f53a4f33a9bc00d88
27 | ObjectMapper: 97111c97e054a6ee25917662106689f0b4127b37
28 | SDWebImage: e3eae2eda88578db0685a0c88597fdadd9433f05
29 | SnapKit: fe8a619752f3f27075cc9a90244d75c6c3f27e2a
30 |
31 | PODFILE CHECKSUM: a3ea1f0b74f1c60dac25db73943a2e64a1fab4fc
32 |
33 | COCOAPODS: 1.8.4
34 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/ObjectMapper/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 | Copyright (c) 2014 Hearst
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
5 |
6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
7 |
8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/ObjectMapper/Sources/CustomDateFormatTransform.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CustomDateFormatTransform.swift
3 | // ObjectMapper
4 | //
5 | // Created by Dan McCracken on 3/8/15.
6 | //
7 | // The MIT License (MIT)
8 | //
9 | // Copyright (c) 2014-2018 Tristan Himmelman
10 | //
11 | // Permission is hereby granted, free of charge, to any person obtaining a copy
12 | // of this software and associated documentation files (the "Software"), to deal
13 | // in the Software without restriction, including without limitation the rights
14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | // copies of the Software, and to permit persons to whom the Software is
16 | // furnished to do so, subject to the following conditions:
17 | //
18 | // The above copyright notice and this permission notice shall be included in
19 | // all copies or substantial portions of the Software.
20 | //
21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | // THE SOFTWARE.
28 |
29 | import Foundation
30 |
31 | open class CustomDateFormatTransform: DateFormatterTransform {
32 |
33 | public init(formatString: String) {
34 | let formatter = DateFormatter()
35 | formatter.locale = Locale(identifier: "en_US_POSIX")
36 | formatter.dateFormat = formatString
37 |
38 | super.init(dateFormatter: formatter)
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/ObjectMapper/Sources/DataTransform.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DataTransform.swift
3 | // ObjectMapper
4 | //
5 | // Created by Yagrushkin, Evgeny on 8/30/16.
6 | //
7 | // The MIT License (MIT)
8 | //
9 | // Copyright (c) 2014-2018 Tristan Himmelman
10 | //
11 | // Permission is hereby granted, free of charge, to any person obtaining a copy
12 | // of this software and associated documentation files (the "Software"), to deal
13 | // in the Software without restriction, including without limitation the rights
14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | // copies of the Software, and to permit persons to whom the Software is
16 | // furnished to do so, subject to the following conditions:
17 | //
18 | // The above copyright notice and this permission notice shall be included in
19 | // all copies or substantial portions of the Software.
20 | //
21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | // THE SOFTWARE.
28 |
29 | import Foundation
30 |
31 | open class DataTransform: TransformType {
32 | public typealias Object = Data
33 | public typealias JSON = String
34 |
35 | public init() {}
36 |
37 | open func transformFromJSON(_ value: Any?) -> Data? {
38 | guard let string = value as? String else{
39 | return nil
40 | }
41 | return Data(base64Encoded: string)
42 | }
43 |
44 | open func transformToJSON(_ value: Data?) -> String? {
45 | guard let data = value else{
46 | return nil
47 | }
48 | return data.base64EncodedString()
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/ObjectMapper/Sources/DateFormatterTransform.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DateFormatterTransform.swift
3 | // ObjectMapper
4 | //
5 | // Created by Tristan Himmelman on 2015-03-09.
6 | //
7 | // The MIT License (MIT)
8 | //
9 | // Copyright (c) 2014-2018 Tristan Himmelman
10 | //
11 | // Permission is hereby granted, free of charge, to any person obtaining a copy
12 | // of this software and associated documentation files (the "Software"), to deal
13 | // in the Software without restriction, including without limitation the rights
14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | // copies of the Software, and to permit persons to whom the Software is
16 | // furnished to do so, subject to the following conditions:
17 | //
18 | // The above copyright notice and this permission notice shall be included in
19 | // all copies or substantial portions of the Software.
20 | //
21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | // THE SOFTWARE.
28 |
29 | import Foundation
30 |
31 | open class DateFormatterTransform: TransformType {
32 | public typealias Object = Date
33 | public typealias JSON = String
34 |
35 | public let dateFormatter: DateFormatter
36 |
37 | public init(dateFormatter: DateFormatter) {
38 | self.dateFormatter = dateFormatter
39 | }
40 |
41 | open func transformFromJSON(_ value: Any?) -> Date? {
42 | if let dateString = value as? String {
43 | return dateFormatter.date(from: dateString)
44 | }
45 | return nil
46 | }
47 |
48 | open func transformToJSON(_ value: Date?) -> String? {
49 | if let date = value {
50 | return dateFormatter.string(from: date)
51 | }
52 | return nil
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/ObjectMapper/Sources/DateTransform.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DateTransform.swift
3 | // ObjectMapper
4 | //
5 | // Created by Tristan Himmelman on 2014-10-13.
6 | //
7 | // The MIT License (MIT)
8 | //
9 | // Copyright (c) 2014-2018 Tristan Himmelman
10 | //
11 | // Permission is hereby granted, free of charge, to any person obtaining a copy
12 | // of this software and associated documentation files (the "Software"), to deal
13 | // in the Software without restriction, including without limitation the rights
14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | // copies of the Software, and to permit persons to whom the Software is
16 | // furnished to do so, subject to the following conditions:
17 | //
18 | // The above copyright notice and this permission notice shall be included in
19 | // all copies or substantial portions of the Software.
20 | //
21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | // THE SOFTWARE.
28 |
29 | import Foundation
30 |
31 | open class DateTransform: TransformType {
32 | public typealias Object = Date
33 | public typealias JSON = Double
34 |
35 | public enum Unit: TimeInterval {
36 | case seconds = 1
37 | case milliseconds = 1_000
38 |
39 | func addScale(to interval: TimeInterval) -> TimeInterval {
40 | return interval * rawValue
41 | }
42 |
43 | func removeScale(from interval: TimeInterval) -> TimeInterval {
44 | return interval / rawValue
45 | }
46 | }
47 |
48 | private let unit: Unit
49 |
50 | public init(unit: Unit = .seconds) {
51 | self.unit = unit
52 | }
53 |
54 | open func transformFromJSON(_ value: Any?) -> Date? {
55 | var timeInterval: TimeInterval?
56 | if let timeInt = value as? Double {
57 | timeInterval = TimeInterval(timeInt)
58 | }
59 |
60 | if let timeStr = value as? String {
61 | timeInterval = TimeInterval(atof(timeStr))
62 | }
63 |
64 | return timeInterval.flatMap {
65 | return Date(timeIntervalSince1970: unit.removeScale(from: $0))
66 | }
67 | }
68 |
69 | open func transformToJSON(_ value: Date?) -> Double? {
70 | if let date = value {
71 | return Double(unit.addScale(to: date.timeIntervalSince1970))
72 | }
73 | return nil
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/ObjectMapper/Sources/DictionaryTransform.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DictionaryTransform.swift
3 | // ObjectMapper
4 | //
5 | // Created by Milen Halachev on 7/20/16.
6 | //
7 | // Copyright (c) 2014-2018 Tristan Himmelman
8 | //
9 | // Permission is hereby granted, free of charge, to any person obtaining a copy
10 | // of this software and associated documentation files (the "Software"), to deal
11 | // in the Software without restriction, including without limitation the rights
12 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13 | // copies of the Software, and to permit persons to whom the Software is
14 | // furnished to do so, subject to the following conditions:
15 | //
16 | // The above copyright notice and this permission notice shall be included in
17 | // all copies or substantial portions of the Software.
18 | //
19 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25 | // THE SOFTWARE.
26 |
27 | import Foundation
28 |
29 | ///Transforms [String: AnyObject] <-> [Key: Value] where Key is RawRepresentable as String, Value is Mappable
30 | public struct DictionaryTransform: TransformType where Key: Hashable, Key: RawRepresentable, Key.RawValue == String, Value: Mappable {
31 |
32 | public init() {
33 |
34 | }
35 |
36 | public func transformFromJSON(_ value: Any?) -> [Key: Value]? {
37 |
38 | guard let json = value as? [String: Any] else {
39 |
40 | return nil
41 | }
42 |
43 | let result = json.reduce([:]) { (result, element) -> [Key: Value] in
44 |
45 | guard
46 | let key = Key(rawValue: element.0),
47 | let valueJSON = element.1 as? [String: Any],
48 | let value = Value(JSON: valueJSON)
49 | else {
50 |
51 | return result
52 | }
53 |
54 | var result = result
55 | result[key] = value
56 | return result
57 | }
58 |
59 | return result
60 | }
61 |
62 | public func transformToJSON(_ value: [Key: Value]?) -> Any? {
63 |
64 | let result = value?.reduce([:]) { (result, element) -> [String: Any] in
65 |
66 | let key = element.0.rawValue
67 | let value = element.1.toJSON()
68 |
69 | var result = result
70 | result[key] = value
71 | return result
72 | }
73 |
74 | return result
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/ObjectMapper/Sources/EnumTransform.swift:
--------------------------------------------------------------------------------
1 | //
2 | // EnumTransform.swift
3 | // ObjectMapper
4 | //
5 | // Created by Kaan Dedeoglu on 3/20/15.
6 | //
7 | // The MIT License (MIT)
8 | //
9 | // Copyright (c) 2014-2018 Tristan Himmelman
10 | //
11 | // Permission is hereby granted, free of charge, to any person obtaining a copy
12 | // of this software and associated documentation files (the "Software"), to deal
13 | // in the Software without restriction, including without limitation the rights
14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | // copies of the Software, and to permit persons to whom the Software is
16 | // furnished to do so, subject to the following conditions:
17 | //
18 | // The above copyright notice and this permission notice shall be included in
19 | // all copies or substantial portions of the Software.
20 | //
21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | // THE SOFTWARE.
28 |
29 | import Foundation
30 |
31 | open class EnumTransform: TransformType {
32 | public typealias Object = T
33 | public typealias JSON = T.RawValue
34 |
35 | public init() {}
36 |
37 | open func transformFromJSON(_ value: Any?) -> T? {
38 | if let raw = value as? T.RawValue {
39 | return T(rawValue: raw)
40 | }
41 | return nil
42 | }
43 |
44 | open func transformToJSON(_ value: T?) -> T.RawValue? {
45 | if let obj = value {
46 | return obj.rawValue
47 | }
48 | return nil
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/ObjectMapper/Sources/ISO8601DateTransform.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ISO8601DateTransform.swift
3 | // ObjectMapper
4 | //
5 | // Created by Jean-Pierre Mouilleseaux on 21 Nov 2014.
6 | //
7 | // The MIT License (MIT)
8 | //
9 | // Copyright (c) 2014-2018 Tristan Himmelman
10 | //
11 | // Permission is hereby granted, free of charge, to any person obtaining a copy
12 | // of this software and associated documentation files (the "Software"), to deal
13 | // in the Software without restriction, including without limitation the rights
14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | // copies of the Software, and to permit persons to whom the Software is
16 | // furnished to do so, subject to the following conditions:
17 | //
18 | // The above copyright notice and this permission notice shall be included in
19 | // all copies or substantial portions of the Software.
20 | //
21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | // THE SOFTWARE.
28 |
29 | import Foundation
30 |
31 | public extension DateFormatter {
32 | convenience init(withFormat format : String, locale : String) {
33 | self.init()
34 | self.locale = Locale(identifier: locale)
35 | dateFormat = format
36 | }
37 | }
38 |
39 | open class ISO8601DateTransform: DateFormatterTransform {
40 |
41 | static let reusableISODateFormatter = DateFormatter(withFormat: "yyyy-MM-dd'T'HH:mm:ssZZZZZ", locale: "en_US_POSIX")
42 |
43 | public init() {
44 | super.init(dateFormatter: ISO8601DateTransform.reusableISODateFormatter)
45 | }
46 | }
47 |
48 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/ObjectMapper/Sources/MapError.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MapError.swift
3 | // ObjectMapper
4 | //
5 | // Created by Tristan Himmelman on 2016-09-26.
6 | //
7 | // The MIT License (MIT)
8 | //
9 | // Copyright (c) 2014-2018 Tristan Himmelman
10 | //
11 | // Permission is hereby granted, free of charge, to any person obtaining a copy
12 | // of this software and associated documentation files (the "Software"), to deal
13 | // in the Software without restriction, including without limitation the rights
14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | // copies of the Software, and to permit persons to whom the Software is
16 | // furnished to do so, subject to the following conditions:
17 | //
18 | // The above copyright notice and this permission notice shall be included in
19 | // all copies or substantial portions of the Software.
20 | //
21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | // THE SOFTWARE.
28 |
29 | import Foundation
30 |
31 | public struct MapError: Error {
32 | public var key: String?
33 | public var currentValue: Any?
34 | public var reason: String?
35 | public var file: StaticString?
36 | public var function: StaticString?
37 | public var line: UInt?
38 |
39 | public init(key: String?, currentValue: Any?, reason: String?, file: StaticString? = nil, function: StaticString? = nil, line: UInt? = nil) {
40 | self.key = key
41 | self.currentValue = currentValue
42 | self.reason = reason
43 | self.file = file
44 | self.function = function
45 | self.line = line
46 | }
47 | }
48 |
49 | extension MapError: CustomStringConvertible {
50 |
51 | private var location: String? {
52 | guard let file = file, let function = function, let line = line else { return nil }
53 | let fileName = ((String(describing: file).components(separatedBy: "/").last ?? "").components(separatedBy: ".").first ?? "")
54 | return "\(fileName).\(function):\(line)"
55 | }
56 |
57 | public var description: String {
58 | let info: [(String, Any?)] = [
59 | ("- reason", reason),
60 | ("- location", location),
61 | ("- key", key),
62 | ("- currentValue", currentValue),
63 | ]
64 | let infoString = info.map { "\($0.0): \($0.1 ?? "nil")" }.joined(separator: "\n")
65 | return "Got an error while mapping.\n\(infoString)"
66 | }
67 |
68 | }
69 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/ObjectMapper/Sources/NSDecimalNumberTransform.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TransformOf.swift
3 | // ObjectMapper
4 | //
5 | // Created by Tristan Himmelman on 8/22/16.
6 | //
7 | // The MIT License (MIT)
8 | //
9 | // Copyright (c) 2014-2018 Tristan Himmelman
10 | //
11 | // Permission is hereby granted, free of charge, to any person obtaining a copy
12 | // of this software and associated documentation files (the "Software"), to deal
13 | // in the Software without restriction, including without limitation the rights
14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | // copies of the Software, and to permit persons to whom the Software is
16 | // furnished to do so, subject to the following conditions:
17 | //
18 | // The above copyright notice and this permission notice shall be included in
19 | // all copies or substantial portions of the Software.
20 | //
21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | // THE SOFTWARE.
28 |
29 | import Foundation
30 |
31 | open class NSDecimalNumberTransform: TransformType {
32 | public typealias Object = NSDecimalNumber
33 | public typealias JSON = String
34 |
35 | public init() {}
36 |
37 | open func transformFromJSON(_ value: Any?) -> NSDecimalNumber? {
38 | if let string = value as? String {
39 | return NSDecimalNumber(string: string)
40 | } else if let number = value as? NSNumber {
41 | return NSDecimalNumber(decimal: number.decimalValue)
42 | } else if let double = value as? Double {
43 | return NSDecimalNumber(floatLiteral: double)
44 | }
45 | return nil
46 | }
47 |
48 | open func transformToJSON(_ value: NSDecimalNumber?) -> String? {
49 | guard let value = value else { return nil }
50 | return value.description
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/ObjectMapper/Sources/TransformOf.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TransformOf.swift
3 | // ObjectMapper
4 | //
5 | // Created by Syo Ikeda on 1/23/15.
6 | //
7 | // The MIT License (MIT)
8 | //
9 | // Copyright (c) 2014-2018 Tristan Himmelman
10 | //
11 | // Permission is hereby granted, free of charge, to any person obtaining a copy
12 | // of this software and associated documentation files (the "Software"), to deal
13 | // in the Software without restriction, including without limitation the rights
14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | // copies of the Software, and to permit persons to whom the Software is
16 | // furnished to do so, subject to the following conditions:
17 | //
18 | // The above copyright notice and this permission notice shall be included in
19 | // all copies or substantial portions of the Software.
20 | //
21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | // THE SOFTWARE.
28 |
29 | open class TransformOf: TransformType {
30 | public typealias Object = ObjectType
31 | public typealias JSON = JSONType
32 |
33 | private let fromJSON: (JSONType?) -> ObjectType?
34 | private let toJSON: (ObjectType?) -> JSONType?
35 |
36 | public init(fromJSON: @escaping(JSONType?) -> ObjectType?, toJSON: @escaping(ObjectType?) -> JSONType?) {
37 | self.fromJSON = fromJSON
38 | self.toJSON = toJSON
39 | }
40 |
41 | open func transformFromJSON(_ value: Any?) -> ObjectType? {
42 | return fromJSON(value as? JSONType)
43 | }
44 |
45 | open func transformToJSON(_ value: ObjectType?) -> JSONType? {
46 | return toJSON(value)
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/ObjectMapper/Sources/TransformType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TransformType.swift
3 | // ObjectMapper
4 | //
5 | // Created by Syo Ikeda on 2/4/15.
6 | //
7 | // The MIT License (MIT)
8 | //
9 | // Copyright (c) 2014-2018 Tristan Himmelman
10 | //
11 | // Permission is hereby granted, free of charge, to any person obtaining a copy
12 | // of this software and associated documentation files (the "Software"), to deal
13 | // in the Software without restriction, including without limitation the rights
14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | // copies of the Software, and to permit persons to whom the Software is
16 | // furnished to do so, subject to the following conditions:
17 | //
18 | // The above copyright notice and this permission notice shall be included in
19 | // all copies or substantial portions of the Software.
20 | //
21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | // THE SOFTWARE.
28 |
29 | public protocol TransformType {
30 | associatedtype Object
31 | associatedtype JSON
32 |
33 | func transformFromJSON(_ value: Any?) -> Object?
34 | func transformToJSON(_ value: Object?) -> JSON?
35 | }
36 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/ObjectMapper/Sources/URLTransform.swift:
--------------------------------------------------------------------------------
1 | //
2 | // URLTransform.swift
3 | // ObjectMapper
4 | //
5 | // Created by Tristan Himmelman on 2014-10-27.
6 | //
7 | // The MIT License (MIT)
8 | //
9 | // Copyright (c) 2014-2018 Tristan Himmelman
10 | //
11 | // Permission is hereby granted, free of charge, to any person obtaining a copy
12 | // of this software and associated documentation files (the "Software"), to deal
13 | // in the Software without restriction, including without limitation the rights
14 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | // copies of the Software, and to permit persons to whom the Software is
16 | // furnished to do so, subject to the following conditions:
17 | //
18 | // The above copyright notice and this permission notice shall be included in
19 | // all copies or substantial portions of the Software.
20 | //
21 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | // THE SOFTWARE.
28 |
29 | import Foundation
30 |
31 | open class URLTransform: TransformType {
32 | public typealias Object = URL
33 | public typealias JSON = String
34 | private let shouldEncodeURLString: Bool
35 | private let allowedCharacterSet: CharacterSet
36 |
37 | /**
38 | Initializes the URLTransform with an option to encode URL strings before converting them to an NSURL
39 | - parameter shouldEncodeUrlString: when true (the default) the string is encoded before passing
40 | to `NSURL(string:)`
41 | - returns: an initialized transformer
42 | */
43 | public init(shouldEncodeURLString: Bool = false, allowedCharacterSet: CharacterSet = .urlQueryAllowed) {
44 | self.shouldEncodeURLString = shouldEncodeURLString
45 | self.allowedCharacterSet = allowedCharacterSet
46 | }
47 |
48 | open func transformFromJSON(_ value: Any?) -> URL? {
49 | guard let URLString = value as? String else { return nil }
50 |
51 | if !shouldEncodeURLString {
52 | return URL(string: URLString)
53 | }
54 |
55 | guard let escapedURLString = URLString.addingPercentEncoding(withAllowedCharacters: allowedCharacterSet) else {
56 | return nil
57 | }
58 | return URL(string: escapedURLString)
59 | }
60 |
61 | open func transformToJSON(_ value: URL?) -> String? {
62 | if let URL = value {
63 | return URL.absoluteString
64 | }
65 | return nil
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009-2018 Olivier Poitrey rs@dailymotion.com
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is furnished
8 | to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
21 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Fabrice Aneche
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import
11 | #import "SDWebImageCompat.h"
12 |
13 | typedef NS_ENUM(NSInteger, SDImageFormat) {
14 | SDImageFormatUndefined = -1,
15 | SDImageFormatJPEG = 0,
16 | SDImageFormatPNG,
17 | SDImageFormatGIF,
18 | SDImageFormatTIFF,
19 | SDImageFormatWebP
20 | };
21 |
22 | @interface NSData (ImageContentType)
23 |
24 | /**
25 | * Return image format
26 | *
27 | * @param data the input image data
28 | *
29 | * @return the image format as `SDImageFormat` (enum)
30 | */
31 | + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data;
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/NSData+ImageContentType.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Fabrice Aneche
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "NSData+ImageContentType.h"
11 |
12 |
13 | @implementation NSData (ImageContentType)
14 |
15 | + (SDImageFormat)sd_imageFormatForImageData:(nullable NSData *)data {
16 | if (!data) {
17 | return SDImageFormatUndefined;
18 | }
19 |
20 | uint8_t c;
21 | [data getBytes:&c length:1];
22 | switch (c) {
23 | case 0xFF:
24 | return SDImageFormatJPEG;
25 | case 0x89:
26 | return SDImageFormatPNG;
27 | case 0x47:
28 | return SDImageFormatGIF;
29 | case 0x49:
30 | case 0x4D:
31 | return SDImageFormatTIFF;
32 | case 0x52:
33 | // R as RIFF for WEBP
34 | if (data.length < 12) {
35 | return SDImageFormatUndefined;
36 | }
37 |
38 | NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
39 | if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
40 | return SDImageFormatWebP;
41 | }
42 | }
43 | return SDImageFormatUndefined;
44 | }
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/NSImage+WebCache.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_MAC
12 |
13 | #import
14 |
15 | @interface NSImage (WebCache)
16 |
17 | - (CGImageRef)CGImage;
18 | - (NSArray *)images;
19 | - (BOOL)isGIF;
20 |
21 | @end
22 |
23 | #endif
24 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/NSImage+WebCache.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "NSImage+WebCache.h"
10 |
11 | #if SD_MAC
12 |
13 | @implementation NSImage (WebCache)
14 |
15 | - (CGImageRef)CGImage {
16 | NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height);
17 | CGImageRef cgImage = [self CGImageForProposedRect:&imageRect context:NULL hints:nil];
18 | return cgImage;
19 | }
20 |
21 | - (NSArray *)images {
22 | return nil;
23 | }
24 |
25 | - (BOOL)isGIF {
26 | return NO;
27 | }
28 |
29 | @end
30 |
31 | #endif
32 |
33 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.h:
--------------------------------------------------------------------------------
1 | //
2 | // SDImageCacheConfig.h
3 | // SDWebImage
4 | //
5 | // Created by Bogdan on 09/09/16.
6 | // Copyright © 2016 Dailymotion. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "SDWebImageCompat.h"
11 |
12 | @interface SDImageCacheConfig : NSObject
13 |
14 | /**
15 | * Decompressing images that are downloaded and cached can improve performance but can consume lot of memory.
16 | * Defaults to YES. Set this to NO if you are experiencing a crash due to excessive memory consumption.
17 | */
18 | @property (assign, nonatomic) BOOL shouldDecompressImages;
19 |
20 | /**
21 | * disable iCloud backup [defaults to YES]
22 | */
23 | @property (assign, nonatomic) BOOL shouldDisableiCloud;
24 |
25 | /**
26 | * use memory cache [defaults to YES]
27 | */
28 | @property (assign, nonatomic) BOOL shouldCacheImagesInMemory;
29 |
30 | /**
31 | * The maximum length of time to keep an image in the cache, in seconds
32 | */
33 | @property (assign, nonatomic) NSInteger maxCacheAge;
34 |
35 | /**
36 | * The maximum size of the cache, in bytes.
37 | */
38 | @property (assign, nonatomic) NSUInteger maxCacheSize;
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/SDImageCacheConfig.m:
--------------------------------------------------------------------------------
1 | //
2 | // SDImageCacheConfig.m
3 | // SDWebImage
4 | //
5 | // Created by Bogdan on 09/09/16.
6 | // Copyright © 2016 Dailymotion. All rights reserved.
7 | //
8 |
9 | #import "SDImageCacheConfig.h"
10 |
11 | static const NSInteger kDefaultCacheMaxCacheAge = 60 * 60 * 24 * 7; // 1 week
12 |
13 | @implementation SDImageCacheConfig
14 |
15 | - (instancetype)init {
16 | if (self = [super init]) {
17 | _shouldDecompressImages = YES;
18 | _shouldDisableiCloud = YES;
19 | _shouldCacheImagesInMemory = YES;
20 | _maxCacheAge = kDefaultCacheMaxCacheAge;
21 | _maxCacheSize = 0;
22 | }
23 | return self;
24 | }
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/SDWebImageCompat.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Jamie Pinkham
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import
11 |
12 | #ifdef __OBJC_GC__
13 | #error SDWebImage does not support Objective-C Garbage Collection
14 | #endif
15 |
16 | // Apple's defines from TargetConditionals.h are a bit weird.
17 | // Seems like TARGET_OS_MAC is always defined (on all platforms).
18 | // To determine if we are running on OSX, we can only relly on TARGET_OS_IPHONE=0 and all the other platforms
19 | #if !TARGET_OS_IPHONE && !TARGET_OS_IOS && !TARGET_OS_TV && !TARGET_OS_WATCH
20 | #define SD_MAC 1
21 | #else
22 | #define SD_MAC 0
23 | #endif
24 |
25 | // iOS and tvOS are very similar, UIKit exists on both platforms
26 | // Note: watchOS also has UIKit, but it's very limited
27 | #if TARGET_OS_IOS || TARGET_OS_TV
28 | #define SD_UIKIT 1
29 | #else
30 | #define SD_UIKIT 0
31 | #endif
32 |
33 | #if TARGET_OS_IOS
34 | #define SD_IOS 1
35 | #else
36 | #define SD_IOS 0
37 | #endif
38 |
39 | #if TARGET_OS_TV
40 | #define SD_TV 1
41 | #else
42 | #define SD_TV 0
43 | #endif
44 |
45 | #if TARGET_OS_WATCH
46 | #define SD_WATCH 1
47 | #else
48 | #define SD_WATCH 0
49 | #endif
50 |
51 |
52 | #if SD_MAC
53 | #import
54 | #ifndef UIImage
55 | #define UIImage NSImage
56 | #endif
57 | #ifndef UIImageView
58 | #define UIImageView NSImageView
59 | #endif
60 | #ifndef UIView
61 | #define UIView NSView
62 | #endif
63 | #else
64 | #if __IPHONE_OS_VERSION_MIN_REQUIRED != 20000 && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0
65 | #error SDWebImage doesn't support Deployment Target version < 5.0
66 | #endif
67 |
68 | #if SD_UIKIT
69 | #import
70 | #endif
71 | #if SD_WATCH
72 | #import
73 | #endif
74 | #endif
75 |
76 | #ifndef NS_ENUM
77 | #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
78 | #endif
79 |
80 | #ifndef NS_OPTIONS
81 | #define NS_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type
82 | #endif
83 |
84 | #if OS_OBJECT_USE_OBJC
85 | #undef SDDispatchQueueRelease
86 | #undef SDDispatchQueueSetterSementics
87 | #define SDDispatchQueueRelease(q)
88 | #define SDDispatchQueueSetterSementics strong
89 | #else
90 | #undef SDDispatchQueueRelease
91 | #undef SDDispatchQueueSetterSementics
92 | #define SDDispatchQueueRelease(q) (dispatch_release(q))
93 | #define SDDispatchQueueSetterSementics assign
94 | #endif
95 |
96 | extern UIImage *SDScaledImageForKey(NSString *key, UIImage *image);
97 |
98 | typedef void(^SDWebImageNoParamsBlock)();
99 |
100 | extern NSString *const SDWebImageErrorDomain;
101 |
102 | #ifndef dispatch_main_async_safe
103 | #define dispatch_main_async_safe(block)\
104 | if (strcmp(dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL), dispatch_queue_get_label(dispatch_get_main_queue())) == 0) {\
105 | block();\
106 | } else {\
107 | dispatch_async(dispatch_get_main_queue(), block);\
108 | }
109 | #endif
110 |
111 | static int64_t kAsyncTestTimeout = 5;
112 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/SDWebImageCompat.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if !__has_feature(objc_arc)
12 | #error SDWebImage is ARC only. Either turn on ARC for the project or use -fobjc-arc flag
13 | #endif
14 |
15 | inline UIImage *SDScaledImageForKey(NSString * _Nullable key, UIImage * _Nullable image) {
16 | if (!image) {
17 | return nil;
18 | }
19 |
20 | #if SD_MAC
21 | return image;
22 | #elif SD_UIKIT || SD_WATCH
23 | if ((image.images).count > 0) {
24 | NSMutableArray *scaledImages = [NSMutableArray array];
25 |
26 | for (UIImage *tempImage in image.images) {
27 | [scaledImages addObject:SDScaledImageForKey(key, tempImage)];
28 | }
29 |
30 | return [UIImage animatedImageWithImages:scaledImages duration:image.duration];
31 | }
32 | else {
33 | #if SD_WATCH
34 | if ([[WKInterfaceDevice currentDevice] respondsToSelector:@selector(screenScale)]) {
35 | #elif SD_UIKIT
36 | if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
37 | #endif
38 | CGFloat scale = 1;
39 | if (key.length >= 8) {
40 | NSRange range = [key rangeOfString:@"@2x."];
41 | if (range.location != NSNotFound) {
42 | scale = 2.0;
43 | }
44 |
45 | range = [key rangeOfString:@"@3x."];
46 | if (range.location != NSNotFound) {
47 | scale = 3.0;
48 | }
49 | }
50 |
51 | UIImage *scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:image.imageOrientation];
52 | image = scaledImage;
53 | }
54 | return image;
55 | }
56 | #endif
57 | }
58 |
59 | NSString *const SDWebImageErrorDomain = @"SDWebImageErrorDomain";
60 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/SDWebImageDecoder.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) james
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import
11 | #import "SDWebImageCompat.h"
12 |
13 | @interface UIImage (ForceDecode)
14 |
15 | + (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image;
16 |
17 | + (nullable UIImage *)decodedAndScaledDownImageWithImage:(nullable UIImage *)image;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/SDWebImageOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import
10 |
11 | @protocol SDWebImageOperation
12 |
13 | - (void)cancel;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/UIImage+GIF.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Laurin Brandner
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "SDWebImageCompat.h"
11 |
12 | @interface UIImage (GIF)
13 |
14 | /**
15 | * Compatibility method - creates an animated UIImage from an NSData, it will only contain the 1st frame image
16 | */
17 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data;
18 |
19 | /**
20 | * Checks if an UIImage instance is a GIF. Will use the `images` array
21 | */
22 | - (BOOL)isGIF;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/UIImage+GIF.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | * (c) Laurin Brandner
5 | *
6 | * For the full copyright and license information, please view the LICENSE
7 | * file that was distributed with this source code.
8 | */
9 |
10 | #import "UIImage+GIF.h"
11 | #import
12 | #import "objc/runtime.h"
13 | #import "NSImage+WebCache.h"
14 |
15 | @implementation UIImage (GIF)
16 |
17 | + (UIImage *)sd_animatedGIFWithData:(NSData *)data {
18 | if (!data) {
19 | return nil;
20 | }
21 |
22 | CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);
23 |
24 | size_t count = CGImageSourceGetCount(source);
25 |
26 | UIImage *staticImage;
27 |
28 | if (count <= 1) {
29 | staticImage = [[UIImage alloc] initWithData:data];
30 | } else {
31 | // we will only retrieve the 1st frame. the full GIF support is available via the FLAnimatedImageView category.
32 | // this here is only code to allow drawing animated images as static ones
33 | #if SD_WATCH
34 | CGFloat scale = 1;
35 | scale = [WKInterfaceDevice currentDevice].screenScale;
36 | #elif SD_UIKIT
37 | CGFloat scale = 1;
38 | scale = [UIScreen mainScreen].scale;
39 | #endif
40 |
41 | CGImageRef CGImage = CGImageSourceCreateImageAtIndex(source, 0, NULL);
42 | #if SD_UIKIT || SD_WATCH
43 | UIImage *frameImage = [UIImage imageWithCGImage:CGImage scale:scale orientation:UIImageOrientationUp];
44 | staticImage = [UIImage animatedImageWithImages:@[frameImage] duration:0.0f];
45 | #elif SD_MAC
46 | staticImage = [[UIImage alloc] initWithCGImage:CGImage size:NSZeroSize];
47 | #endif
48 | CGImageRelease(CGImage);
49 | }
50 |
51 | CFRelease(source);
52 |
53 | return staticImage;
54 | }
55 |
56 | - (BOOL)isGIF {
57 | return (self.images != nil);
58 | }
59 |
60 | @end
61 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/UIImage+MultiFormat.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 | #import "NSData+ImageContentType.h"
11 |
12 | @interface UIImage (MultiFormat)
13 |
14 | + (nullable UIImage *)sd_imageWithData:(nullable NSData *)data;
15 | - (nullable NSData *)sd_imageData;
16 | - (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/UIImageView+HighlightedWebCache.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIImageView+HighlightedWebCache.h"
10 |
11 | #if SD_UIKIT
12 |
13 | #import "UIView+WebCacheOperation.h"
14 | #import "UIView+WebCache.h"
15 |
16 | @implementation UIImageView (HighlightedWebCache)
17 |
18 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url {
19 | [self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:nil];
20 | }
21 |
22 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url options:(SDWebImageOptions)options {
23 | [self sd_setHighlightedImageWithURL:url options:options progress:nil completed:nil];
24 | }
25 |
26 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url completed:(nullable SDExternalCompletionBlock)completedBlock {
27 | [self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:completedBlock];
28 | }
29 |
30 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url options:(SDWebImageOptions)options completed:(nullable SDExternalCompletionBlock)completedBlock {
31 | [self sd_setHighlightedImageWithURL:url options:options progress:nil completed:completedBlock];
32 | }
33 |
34 | - (void)sd_setHighlightedImageWithURL:(nullable NSURL *)url
35 | options:(SDWebImageOptions)options
36 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
37 | completed:(nullable SDExternalCompletionBlock)completedBlock {
38 | __weak typeof(self)weakSelf = self;
39 | [self sd_internalSetImageWithURL:url
40 | placeholderImage:nil
41 | options:options
42 | operationKey:@"UIImageViewImageOperationHighlighted"
43 | setImageBlock:^(UIImage *image, NSData *imageData) {
44 | weakSelf.highlightedImage = image;
45 | }
46 | progress:progressBlock
47 | completed:completedBlock];
48 | }
49 |
50 | @end
51 |
52 | #endif
53 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/UIView+WebCache.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 |
13 | #import "SDWebImageManager.h"
14 |
15 | typedef void(^SDSetImageBlock)(UIImage * _Nullable image, NSData * _Nullable imageData);
16 |
17 | @interface UIView (WebCache)
18 |
19 | /**
20 | * Get the current image URL.
21 | *
22 | * Note that because of the limitations of categories this property can get out of sync
23 | * if you use setImage: directly.
24 | */
25 | - (nullable NSURL *)sd_imageURL;
26 |
27 | /**
28 | * Set the imageView `image` with an `url` and optionally a placeholder image.
29 | *
30 | * The download is asynchronous and cached.
31 | *
32 | * @param url The url for the image.
33 | * @param placeholder The image to be set initially, until the image request finishes.
34 | * @param options The options to use when downloading the image. @see SDWebImageOptions for the possible values.
35 | * @param operationKey A string to be used as the operation key. If nil, will use the class name
36 | * @param setImageBlock Block used for custom set image code
37 | * @param progressBlock A block called while image is downloading
38 | * @note the progress block is executed on a background queue
39 | * @param completedBlock A block called when operation has been completed. This block has no return value
40 | * and takes the requested UIImage as first parameter. In case of error the image parameter
41 | * is nil and the second parameter may contain an NSError. The third parameter is a Boolean
42 | * indicating if the image was retrieved from the local cache or from the network.
43 | * The fourth parameter is the original image url.
44 | */
45 | - (void)sd_internalSetImageWithURL:(nullable NSURL *)url
46 | placeholderImage:(nullable UIImage *)placeholder
47 | options:(SDWebImageOptions)options
48 | operationKey:(nullable NSString *)operationKey
49 | setImageBlock:(nullable SDSetImageBlock)setImageBlock
50 | progress:(nullable SDWebImageDownloaderProgressBlock)progressBlock
51 | completed:(nullable SDExternalCompletionBlock)completedBlock;
52 |
53 | /**
54 | * Cancel the current download
55 | */
56 | - (void)sd_cancelCurrentImageLoad;
57 |
58 | #if SD_UIKIT
59 |
60 | #pragma mark - Activity indicator
61 |
62 | /**
63 | * Show activity UIActivityIndicatorView
64 | */
65 | - (void)sd_setShowActivityIndicatorView:(BOOL)show;
66 |
67 | /**
68 | * set desired UIActivityIndicatorViewStyle
69 | *
70 | * @param style The style of the UIActivityIndicatorView
71 | */
72 | - (void)sd_setIndicatorStyle:(UIActivityIndicatorViewStyle)style;
73 |
74 | - (BOOL)sd_showActivityIndicatorView;
75 | - (void)sd_addActivityIndicator;
76 | - (void)sd_removeActivityIndicator;
77 |
78 | #endif
79 |
80 | @end
81 |
82 | #endif
83 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "SDWebImageCompat.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 |
13 | #import "SDWebImageManager.h"
14 |
15 | @interface UIView (WebCacheOperation)
16 |
17 | /**
18 | * Set the image load operation (storage in a UIView based dictionary)
19 | *
20 | * @param operation the operation
21 | * @param key key for storing the operation
22 | */
23 | - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key;
24 |
25 | /**
26 | * Cancel all operations for the current UIView and key
27 | *
28 | * @param key key for identifying the operations
29 | */
30 | - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key;
31 |
32 | /**
33 | * Just remove the operations corresponding to the current UIView and key without cancelling them
34 | *
35 | * @param key key for identifying the operations
36 | */
37 | - (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key;
38 |
39 | @end
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SDWebImage/SDWebImage/UIView+WebCacheOperation.m:
--------------------------------------------------------------------------------
1 | /*
2 | * This file is part of the SDWebImage package.
3 | * (c) Olivier Poitrey
4 | *
5 | * For the full copyright and license information, please view the LICENSE
6 | * file that was distributed with this source code.
7 | */
8 |
9 | #import "UIView+WebCacheOperation.h"
10 |
11 | #if SD_UIKIT || SD_MAC
12 |
13 | #import "objc/runtime.h"
14 |
15 | static char loadOperationKey;
16 |
17 | typedef NSMutableDictionary SDOperationsDictionary;
18 |
19 | @implementation UIView (WebCacheOperation)
20 |
21 | - (SDOperationsDictionary *)operationDictionary {
22 | SDOperationsDictionary *operations = objc_getAssociatedObject(self, &loadOperationKey);
23 | if (operations) {
24 | return operations;
25 | }
26 | operations = [NSMutableDictionary dictionary];
27 | objc_setAssociatedObject(self, &loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
28 | return operations;
29 | }
30 |
31 | - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key {
32 | if (key) {
33 | [self sd_cancelImageLoadOperationWithKey:key];
34 | if (operation) {
35 | SDOperationsDictionary *operationDictionary = [self operationDictionary];
36 | operationDictionary[key] = operation;
37 | }
38 | }
39 | }
40 |
41 | - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key {
42 | // Cancel in progress downloader from queue
43 | SDOperationsDictionary *operationDictionary = [self operationDictionary];
44 | id operations = operationDictionary[key];
45 | if (operations) {
46 | if ([operations isKindOfClass:[NSArray class]]) {
47 | for (id operation in operations) {
48 | if (operation) {
49 | [operation cancel];
50 | }
51 | }
52 | } else if ([operations conformsToProtocol:@protocol(SDWebImageOperation)]){
53 | [(id) operations cancel];
54 | }
55 | [operationDictionary removeObjectForKey:key];
56 | }
57 | }
58 |
59 | - (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key {
60 | if (key) {
61 | SDOperationsDictionary *operationDictionary = [self operationDictionary];
62 | [operationDictionary removeObjectForKey:key];
63 | }
64 | }
65 |
66 | @end
67 |
68 | #endif
69 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | SnapKit is a DSL to make Auto Layout easy on both iOS and OS X.
4 |
5 | [](https://travis-ci.org/SnapKit/SnapKit)
6 | [](https://github.com/SnapKit/SnapKit)
7 | [](https://cocoapods.org/pods/SnapKit)
8 | [](https://github.com/Carthage/Carthage)
9 |
10 | #### ⚠️ **To use with Swift 3.x please ensure you are using >= 3.0.0** ⚠️
11 | #### ⚠️ **To use with Swift 4.x please ensure you are using >= 4.0.0** ⚠️
12 |
13 | ## Contents
14 |
15 | - [Requirements](#requirements)
16 | - [Migration Guides](#migration-guides)
17 | - [Communication](#communication)
18 | - [Installation](#installation)
19 | - [Usage](#usage)
20 | - [Credits](#credits)
21 | - [License](#license)
22 |
23 | ## Requirements
24 |
25 | - iOS 8.0+ / Mac OS X 10.11+ / tvOS 9.0+
26 | - Xcode 9.0+
27 | - Swift 3.0+
28 |
29 | ## Communication
30 |
31 | - If you **need help**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/snapkit). (Tag 'snapkit')
32 | - If you'd like to **ask a general question**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/snapkit).
33 | - If you **found a bug**, open an issue.
34 | - If you **have a feature request**, open an issue.
35 | - If you **want to contribute**, submit a pull request.
36 |
37 |
38 | ## Installation
39 |
40 | ### CocoaPods
41 |
42 | [CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects. You can install it with the following command:
43 |
44 | ```bash
45 | $ gem install cocoapods
46 | ```
47 |
48 | > CocoaPods 1.1.0+ is required to build SnapKit 4.0.0+.
49 |
50 | To integrate SnapKit into your Xcode project using CocoaPods, specify it in your `Podfile`:
51 |
52 | ```ruby
53 | source 'https://github.com/CocoaPods/Specs.git'
54 | platform :ios, '10.0'
55 | use_frameworks!
56 |
57 | target '' do
58 | pod 'SnapKit', '~> 4.0.0'
59 | end
60 | ```
61 |
62 | Then, run the following command:
63 |
64 | ```bash
65 | $ pod install
66 | ```
67 |
68 | ### Carthage
69 |
70 | [Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
71 |
72 | You can install Carthage with [Homebrew](http://brew.sh/) using the following command:
73 |
74 | ```bash
75 | $ brew update
76 | $ brew install carthage
77 | ```
78 |
79 | To integrate SnapKit into your Xcode project using Carthage, specify it in your `Cartfile`:
80 |
81 | ```ogdl
82 | github "SnapKit/SnapKit" ~> 4.0.0
83 | ```
84 |
85 | Run `carthage update` to build the framework and drag the built `SnapKit.framework` into your Xcode project.
86 |
87 | ### Manually
88 |
89 | If you prefer not to use either of the aforementioned dependency managers, you can integrate SnapKit into your project manually.
90 |
91 | ---
92 |
93 | ## Usage
94 |
95 | ### Quick Start
96 |
97 | ```swift
98 | import SnapKit
99 |
100 | class MyViewController: UIViewController {
101 |
102 | lazy var box = UIView()
103 |
104 | override func viewDidLoad() {
105 | super.viewDidLoad()
106 |
107 | self.view.addSubview(box)
108 | box.snp.makeConstraints { (make) -> Void in
109 | make.width.height.equalTo(50)
110 | make.center.equalTo(self.view)
111 | }
112 | }
113 |
114 | }
115 | ```
116 |
117 | ### Resources
118 |
119 | - [Documentation](http://snapkit.io/docs/)
120 | - [F.A.Q.](http://snapkit.io/faq/)
121 |
122 | ## Credits
123 |
124 | - Robert Payne ([@robertjpayne](https://twitter.com/robertjpayne))
125 | - Many other contributors
126 |
127 | ## License
128 |
129 | SnapKit is released under the MIT license. See LICENSE for details.
130 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintConfig.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | public typealias ConstraintInterfaceLayoutDirection = UIUserInterfaceLayoutDirection
27 | #else
28 | import AppKit
29 | public typealias ConstraintInterfaceLayoutDirection = NSUserInterfaceLayoutDirection
30 | #endif
31 |
32 |
33 | public struct ConstraintConfig {
34 |
35 | public static var interfaceLayoutDirection: ConstraintInterfaceLayoutDirection = .leftToRight
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintDescription.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | public class ConstraintDescription {
32 |
33 | internal let item: LayoutConstraintItem
34 | internal var attributes: ConstraintAttributes
35 | internal var relation: ConstraintRelation? = nil
36 | internal var sourceLocation: (String, UInt)? = nil
37 | internal var label: String? = nil
38 | internal var related: ConstraintItem? = nil
39 | internal var multiplier: ConstraintMultiplierTarget = 1.0
40 | internal var constant: ConstraintConstantTarget = 0.0
41 | internal var priority: ConstraintPriorityTarget = 1000.0
42 | internal lazy var constraint: Constraint? = {
43 | guard let relation = self.relation,
44 | let related = self.related,
45 | let sourceLocation = self.sourceLocation else {
46 | return nil
47 | }
48 | let from = ConstraintItem(target: self.item, attributes: self.attributes)
49 |
50 | return Constraint(
51 | from: from,
52 | to: related,
53 | relation: relation,
54 | sourceLocation: sourceLocation,
55 | label: self.label,
56 | multiplier: self.multiplier,
57 | constant: self.constant,
58 | priority: self.priority
59 | )
60 | }()
61 |
62 | // MARK: Initialization
63 |
64 | internal init(item: LayoutConstraintItem, attributes: ConstraintAttributes) {
65 | self.item = item
66 | self.attributes = attributes
67 | }
68 |
69 | }
70 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintInsetTarget.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | public protocol ConstraintInsetTarget: ConstraintConstantTarget {
32 | }
33 |
34 | extension Int: ConstraintInsetTarget {
35 | }
36 |
37 | extension UInt: ConstraintInsetTarget {
38 | }
39 |
40 | extension Float: ConstraintInsetTarget {
41 | }
42 |
43 | extension Double: ConstraintInsetTarget {
44 | }
45 |
46 | extension CGFloat: ConstraintInsetTarget {
47 | }
48 |
49 | extension ConstraintInsets: ConstraintInsetTarget {
50 | }
51 |
52 | extension ConstraintInsetTarget {
53 |
54 | internal var constraintInsetTargetValue: ConstraintInsets {
55 | if let amount = self as? ConstraintInsets {
56 | return amount
57 | } else if let amount = self as? Float {
58 | return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount))
59 | } else if let amount = self as? Double {
60 | return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount))
61 | } else if let amount = self as? CGFloat {
62 | return ConstraintInsets(top: amount, left: amount, bottom: amount, right: amount)
63 | } else if let amount = self as? Int {
64 | return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount))
65 | } else if let amount = self as? UInt {
66 | return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount))
67 | } else {
68 | return ConstraintInsets(top: 0, left: 0, bottom: 0, right: 0)
69 | }
70 | }
71 |
72 | }
73 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintInsets.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | #if os(iOS) || os(tvOS)
32 | public typealias ConstraintInsets = UIEdgeInsets
33 | #else
34 | public typealias ConstraintInsets = NSEdgeInsets
35 | #endif
36 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintItem.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | public final class ConstraintItem {
32 |
33 | internal weak var target: AnyObject?
34 | internal let attributes: ConstraintAttributes
35 |
36 | internal init(target: AnyObject?, attributes: ConstraintAttributes) {
37 | self.target = target
38 | self.attributes = attributes
39 | }
40 |
41 | internal var layoutConstraintItem: LayoutConstraintItem? {
42 | return self.target as? LayoutConstraintItem
43 | }
44 |
45 | }
46 |
47 | public func ==(lhs: ConstraintItem, rhs: ConstraintItem) -> Bool {
48 | // pointer equality
49 | guard lhs !== rhs else {
50 | return true
51 | }
52 |
53 | // must both have valid targets and identical attributes
54 | guard let target1 = lhs.target,
55 | let target2 = rhs.target,
56 | target1 === target2 && lhs.attributes == rhs.attributes else {
57 | return false
58 | }
59 |
60 | return true
61 | }
62 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #endif
27 |
28 |
29 | @available(iOS 9.0, OSX 10.11, *)
30 | public extension ConstraintLayoutGuide {
31 |
32 | public var snp: ConstraintLayoutGuideDSL {
33 | return ConstraintLayoutGuideDSL(guide: self)
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintLayoutGuide.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | #if os(iOS) || os(tvOS)
32 | @available(iOS 9.0, *)
33 | public typealias ConstraintLayoutGuide = UILayoutGuide
34 | #else
35 | @available(OSX 10.11, *)
36 | public typealias ConstraintLayoutGuide = NSLayoutGuide
37 | #endif
38 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintLayoutGuideDSL.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | @available(iOS 9.0, OSX 10.11, *)
32 | public struct ConstraintLayoutGuideDSL: ConstraintAttributesDSL {
33 |
34 | @discardableResult
35 | public func prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] {
36 | return ConstraintMaker.prepareConstraints(item: self.guide, closure: closure)
37 | }
38 |
39 | public func makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) {
40 | ConstraintMaker.makeConstraints(item: self.guide, closure: closure)
41 | }
42 |
43 | public func remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) {
44 | ConstraintMaker.remakeConstraints(item: self.guide, closure: closure)
45 | }
46 |
47 | public func updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) {
48 | ConstraintMaker.updateConstraints(item: self.guide, closure: closure)
49 | }
50 |
51 | public func removeConstraints() {
52 | ConstraintMaker.removeConstraints(item: self.guide)
53 | }
54 |
55 | public var target: AnyObject? {
56 | return self.guide
57 | }
58 |
59 | internal let guide: ConstraintLayoutGuide
60 |
61 | internal init(guide: ConstraintLayoutGuide) {
62 | self.guide = guide
63 |
64 | }
65 |
66 | }
67 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintLayoutSupport.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | #if os(iOS) || os(tvOS)
32 | @available(iOS 8.0, *)
33 | public typealias ConstraintLayoutSupport = UILayoutSupport
34 | #else
35 | public class ConstraintLayoutSupport {}
36 | #endif
37 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintLayoutSupportDSL.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | @available(iOS 8.0, *)
32 | public struct ConstraintLayoutSupportDSL: ConstraintDSL {
33 |
34 | public var target: AnyObject? {
35 | return self.support
36 | }
37 |
38 | internal let support: ConstraintLayoutSupport
39 |
40 | internal init(support: ConstraintLayoutSupport) {
41 | self.support = support
42 |
43 | }
44 |
45 | public var top: ConstraintItem {
46 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.top)
47 | }
48 |
49 | public var bottom: ConstraintItem {
50 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottom)
51 | }
52 |
53 | public var height: ConstraintItem {
54 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.height)
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintMakerEditable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | public class ConstraintMakerEditable: ConstraintMakerPriortizable {
32 |
33 | @discardableResult
34 | public func multipliedBy(_ amount: ConstraintMultiplierTarget) -> ConstraintMakerEditable {
35 | self.description.multiplier = amount
36 | return self
37 | }
38 |
39 | @discardableResult
40 | public func dividedBy(_ amount: ConstraintMultiplierTarget) -> ConstraintMakerEditable {
41 | return self.multipliedBy(1.0 / amount.constraintMultiplierTargetValue)
42 | }
43 |
44 | @discardableResult
45 | public func offset(_ amount: ConstraintOffsetTarget) -> ConstraintMakerEditable {
46 | self.description.constant = amount.constraintOffsetTargetValue
47 | return self
48 | }
49 |
50 | @discardableResult
51 | public func inset(_ amount: ConstraintInsetTarget) -> ConstraintMakerEditable {
52 | self.description.constant = amount.constraintInsetTargetValue
53 | return self
54 | }
55 |
56 | }
57 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintMakerFinalizable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | public class ConstraintMakerFinalizable {
32 |
33 | internal let description: ConstraintDescription
34 |
35 | internal init(_ description: ConstraintDescription) {
36 | self.description = description
37 | }
38 |
39 | @discardableResult
40 | public func labeled(_ label: String) -> ConstraintMakerFinalizable {
41 | self.description.label = label
42 | return self
43 | }
44 |
45 | public var constraint: Constraint {
46 | return self.description.constraint!
47 | }
48 |
49 | }
50 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintMakerPriortizable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | public class ConstraintMakerPriortizable: ConstraintMakerFinalizable {
32 |
33 | @discardableResult
34 | public func priority(_ amount: ConstraintPriority) -> ConstraintMakerFinalizable {
35 | self.description.priority = amount.value
36 | return self
37 | }
38 |
39 | @discardableResult
40 | public func priority(_ amount: ConstraintPriorityTarget) -> ConstraintMakerFinalizable {
41 | self.description.priority = amount
42 | return self
43 | }
44 |
45 | @available(*, deprecated:3.0, message:"Use priority(.required) instead.")
46 | @discardableResult
47 | public func priorityRequired() -> ConstraintMakerFinalizable {
48 | return self.priority(.required)
49 | }
50 |
51 | @available(*, deprecated:3.0, message:"Use priority(.high) instead.")
52 | @discardableResult
53 | public func priorityHigh() -> ConstraintMakerFinalizable {
54 | return self.priority(.high)
55 | }
56 |
57 | @available(*, deprecated:3.0, message:"Use priority(.medium) instead.")
58 | @discardableResult
59 | public func priorityMedium() -> ConstraintMakerFinalizable {
60 | return self.priority(.medium)
61 | }
62 |
63 | @available(*, deprecated:3.0, message:"Use priority(.low) instead.")
64 | @discardableResult
65 | public func priorityLow() -> ConstraintMakerFinalizable {
66 | return self.priority(.low)
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintMultiplierTarget.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | public protocol ConstraintMultiplierTarget {
32 |
33 | var constraintMultiplierTargetValue: CGFloat { get }
34 |
35 | }
36 |
37 | extension Int: ConstraintMultiplierTarget {
38 |
39 | public var constraintMultiplierTargetValue: CGFloat {
40 | return CGFloat(self)
41 | }
42 |
43 | }
44 |
45 | extension UInt: ConstraintMultiplierTarget {
46 |
47 | public var constraintMultiplierTargetValue: CGFloat {
48 | return CGFloat(self)
49 | }
50 |
51 | }
52 |
53 | extension Float: ConstraintMultiplierTarget {
54 |
55 | public var constraintMultiplierTargetValue: CGFloat {
56 | return CGFloat(self)
57 | }
58 |
59 | }
60 |
61 | extension Double: ConstraintMultiplierTarget {
62 |
63 | public var constraintMultiplierTargetValue: CGFloat {
64 | return CGFloat(self)
65 | }
66 |
67 | }
68 |
69 | extension CGFloat: ConstraintMultiplierTarget {
70 |
71 | public var constraintMultiplierTargetValue: CGFloat {
72 | return self
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintOffsetTarget.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | public protocol ConstraintOffsetTarget: ConstraintConstantTarget {
32 | }
33 |
34 | extension Int: ConstraintOffsetTarget {
35 | }
36 |
37 | extension UInt: ConstraintOffsetTarget {
38 | }
39 |
40 | extension Float: ConstraintOffsetTarget {
41 | }
42 |
43 | extension Double: ConstraintOffsetTarget {
44 | }
45 |
46 | extension CGFloat: ConstraintOffsetTarget {
47 | }
48 |
49 | extension ConstraintOffsetTarget {
50 |
51 | internal var constraintOffsetTargetValue: CGFloat {
52 | let offset: CGFloat
53 | if let amount = self as? Float {
54 | offset = CGFloat(amount)
55 | } else if let amount = self as? Double {
56 | offset = CGFloat(amount)
57 | } else if let amount = self as? CGFloat {
58 | offset = CGFloat(amount)
59 | } else if let amount = self as? Int {
60 | offset = CGFloat(amount)
61 | } else if let amount = self as? UInt {
62 | offset = CGFloat(amount)
63 | } else {
64 | offset = 0.0
65 | }
66 | return offset
67 | }
68 |
69 | }
70 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintPriorityTarget.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | public protocol ConstraintPriorityTarget {
32 |
33 | var constraintPriorityTargetValue: Float { get }
34 |
35 | }
36 |
37 | extension Int: ConstraintPriorityTarget {
38 |
39 | public var constraintPriorityTargetValue: Float {
40 | return Float(self)
41 | }
42 |
43 | }
44 |
45 | extension UInt: ConstraintPriorityTarget {
46 |
47 | public var constraintPriorityTargetValue: Float {
48 | return Float(self)
49 | }
50 |
51 | }
52 |
53 | extension Float: ConstraintPriorityTarget {
54 |
55 | public var constraintPriorityTargetValue: Float {
56 | return self
57 | }
58 |
59 | }
60 |
61 | extension Double: ConstraintPriorityTarget {
62 |
63 | public var constraintPriorityTargetValue: Float {
64 | return Float(self)
65 | }
66 |
67 | }
68 |
69 | extension CGFloat: ConstraintPriorityTarget {
70 |
71 | public var constraintPriorityTargetValue: Float {
72 | return Float(self)
73 | }
74 |
75 | }
76 |
77 | #if os(iOS) || os(tvOS)
78 | extension UILayoutPriority: ConstraintPriorityTarget {
79 |
80 | public var constraintPriorityTargetValue: Float {
81 | return self.rawValue
82 | }
83 |
84 | }
85 | #endif
86 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintRelatableTarget.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | public protocol ConstraintRelatableTarget {
32 | }
33 |
34 | extension Int: ConstraintRelatableTarget {
35 | }
36 |
37 | extension UInt: ConstraintRelatableTarget {
38 | }
39 |
40 | extension Float: ConstraintRelatableTarget {
41 | }
42 |
43 | extension Double: ConstraintRelatableTarget {
44 | }
45 |
46 | extension CGFloat: ConstraintRelatableTarget {
47 | }
48 |
49 | extension CGSize: ConstraintRelatableTarget {
50 | }
51 |
52 | extension CGPoint: ConstraintRelatableTarget {
53 | }
54 |
55 | extension ConstraintInsets: ConstraintRelatableTarget {
56 | }
57 |
58 | extension ConstraintItem: ConstraintRelatableTarget {
59 | }
60 |
61 | extension ConstraintView: ConstraintRelatableTarget {
62 | }
63 |
64 | @available(iOS 9.0, OSX 10.11, *)
65 | extension ConstraintLayoutGuide: ConstraintRelatableTarget {
66 | }
67 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintRelation.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | internal enum ConstraintRelation : Int {
32 | case equal = 1
33 | case lessThanOrEqual
34 | case greaterThanOrEqual
35 |
36 | internal var layoutRelation: LayoutRelation {
37 | get {
38 | switch(self) {
39 | case .equal:
40 | return .equal
41 | case .lessThanOrEqual:
42 | return .lessThanOrEqual
43 | case .greaterThanOrEqual:
44 | return .greaterThanOrEqual
45 | }
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/ConstraintView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | #if os(iOS) || os(tvOS)
32 | public typealias ConstraintView = UIView
33 | #else
34 | public typealias ConstraintView = NSView
35 | #endif
36 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/LayoutConstraint.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | public class LayoutConstraint : NSLayoutConstraint {
32 |
33 | public var label: String? {
34 | get {
35 | return self.identifier
36 | }
37 | set {
38 | self.identifier = newValue
39 | }
40 | }
41 |
42 | internal weak var constraint: Constraint? = nil
43 |
44 | }
45 |
46 | internal func ==(lhs: LayoutConstraint, rhs: LayoutConstraint) -> Bool {
47 | guard lhs.firstItem === rhs.firstItem &&
48 | lhs.secondItem === rhs.secondItem &&
49 | lhs.firstAttribute == rhs.firstAttribute &&
50 | lhs.secondAttribute == rhs.secondAttribute &&
51 | lhs.relation == rhs.relation &&
52 | lhs.priority == rhs.priority &&
53 | lhs.multiplier == rhs.multiplier else {
54 | return false
55 | }
56 | return true
57 | }
58 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/LayoutConstraintItem.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #else
27 | import AppKit
28 | #endif
29 |
30 |
31 | public protocol LayoutConstraintItem: class {
32 | }
33 |
34 | @available(iOS 9.0, OSX 10.11, *)
35 | extension ConstraintLayoutGuide : LayoutConstraintItem {
36 | }
37 |
38 | extension ConstraintView : LayoutConstraintItem {
39 | }
40 |
41 |
42 | extension LayoutConstraintItem {
43 |
44 | internal func prepare() {
45 | if let view = self as? ConstraintView {
46 | view.translatesAutoresizingMaskIntoConstraints = false
47 | }
48 | }
49 |
50 | internal var superview: ConstraintView? {
51 | if let view = self as? ConstraintView {
52 | return view.superview
53 | }
54 |
55 | if #available(iOS 9.0, OSX 10.11, *), let guide = self as? ConstraintLayoutGuide {
56 | return guide.owningView
57 | }
58 |
59 | return nil
60 | }
61 | internal var constraints: [Constraint] {
62 | return self.constraintsSet.allObjects as! [Constraint]
63 | }
64 |
65 | internal func add(constraints: [Constraint]) {
66 | let constraintsSet = self.constraintsSet
67 | for constraint in constraints {
68 | constraintsSet.add(constraint)
69 | }
70 | }
71 |
72 | internal func remove(constraints: [Constraint]) {
73 | let constraintsSet = self.constraintsSet
74 | for constraint in constraints {
75 | constraintsSet.remove(constraint)
76 | }
77 | }
78 |
79 | private var constraintsSet: NSMutableSet {
80 | let constraintsSet: NSMutableSet
81 |
82 | if let existing = objc_getAssociatedObject(self, &constraintsKey) as? NSMutableSet {
83 | constraintsSet = existing
84 | } else {
85 | constraintsSet = NSMutableSet()
86 | objc_setAssociatedObject(self, &constraintsKey, constraintsSet, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
87 | }
88 | return constraintsSet
89 |
90 | }
91 |
92 | }
93 | private var constraintsKey: UInt8 = 0
94 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/SnapKit/Source/UILayoutSupport+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SnapKit
3 | //
4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit
5 | //
6 | // Permission is hereby granted, free of charge, to any person obtaining a copy
7 | // of this software and associated documentation files (the "Software"), to deal
8 | // in the Software without restriction, including without limitation the rights
9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | // copies of the Software, and to permit persons to whom the Software is
11 | // furnished to do so, subject to the following conditions:
12 | //
13 | // The above copyright notice and this permission notice shall be included in
14 | // all copies or substantial portions of the Software.
15 | //
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | // THE SOFTWARE.
23 |
24 | #if os(iOS) || os(tvOS)
25 | import UIKit
26 | #endif
27 |
28 |
29 | @available(iOS 8.0, *)
30 | public extension ConstraintLayoutSupport {
31 |
32 | public var snp: ConstraintLayoutSupportDSL {
33 | return ConstraintLayoutSupportDSL(support: self)
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/Alamofire/Alamofire-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Alamofire : NSObject
3 | @end
4 | @implementation PodsDummy_Alamofire
5 | @end
6 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double AlamofireVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/Alamofire/Alamofire.modulemap:
--------------------------------------------------------------------------------
1 | framework module Alamofire {
2 | umbrella header "Alamofire-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/Alamofire/Alamofire.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Alamofire
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/Alamofire/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 4.3.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/AlamofireObjectMapper/AlamofireObjectMapper-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_AlamofireObjectMapper : NSObject
3 | @end
4 | @implementation PodsDummy_AlamofireObjectMapper
5 | @end
6 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/AlamofireObjectMapper/AlamofireObjectMapper-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/AlamofireObjectMapper/AlamofireObjectMapper-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double AlamofireObjectMapperVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char AlamofireObjectMapperVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/AlamofireObjectMapper/AlamofireObjectMapper.modulemap:
--------------------------------------------------------------------------------
1 | framework module AlamofireObjectMapper {
2 | umbrella header "AlamofireObjectMapper-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/AlamofireObjectMapper/AlamofireObjectMapper.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AlamofireObjectMapper
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/AlamofireObjectMapper
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/AlamofireObjectMapper/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 4.0.1
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/ObjectMapper/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 2.2.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/ObjectMapper/ObjectMapper-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_ObjectMapper : NSObject
3 | @end
4 | @implementation PodsDummy_ObjectMapper
5 | @end
6 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/ObjectMapper/ObjectMapper-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/ObjectMapper/ObjectMapper-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double ObjectMapperVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char ObjectMapperVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/ObjectMapper/ObjectMapper.modulemap:
--------------------------------------------------------------------------------
1 | framework module ObjectMapper {
2 | umbrella header "ObjectMapper-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/ObjectMapper/ObjectMapper.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/ObjectMapper
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/Pods-CleanTalk/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/Pods-CleanTalk/Pods-CleanTalk-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_CleanTalk : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_CleanTalk
5 | @end
6 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/Pods-CleanTalk/Pods-CleanTalk-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_CleanTalkVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_CleanTalkVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/Pods-CleanTalk/Pods-CleanTalk.debug.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/AlamofireObjectMapper" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AlamofireObjectMapper/AlamofireObjectMapper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers"
5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
6 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "AlamofireObjectMapper" -framework "ImageIO" -framework "ObjectMapper" -framework "SDWebImage" -framework "SnapKit"
7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
8 | PODS_BUILD_DIR = ${BUILD_DIR}
9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
11 | PODS_ROOT = ${SRCROOT}/Pods
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/Pods-CleanTalk/Pods-CleanTalk.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_CleanTalk {
2 | umbrella header "Pods-CleanTalk-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/Pods-CleanTalk/Pods-CleanTalk.release.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/AlamofireObjectMapper" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/AlamofireObjectMapper/AlamofireObjectMapper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers"
5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
6 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "AlamofireObjectMapper" -framework "ImageIO" -framework "ObjectMapper" -framework "SDWebImage" -framework "SnapKit"
7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
8 | PODS_BUILD_DIR = ${BUILD_DIR}
9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
11 | PODS_ROOT = ${SRCROOT}/Pods
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/SDWebImage/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 4.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/SDWebImage/SDWebImage-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SDWebImage : NSObject
3 | @end
4 | @implementation PodsDummy_SDWebImage
5 | @end
6 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/SDWebImage/SDWebImage-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/SDWebImage/SDWebImage-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "NSButton+WebCache.h"
14 | #import "NSData+ImageContentType.h"
15 | #import "NSImage+Compatibility.h"
16 | #import "SDAnimatedImage.h"
17 | #import "SDAnimatedImagePlayer.h"
18 | #import "SDAnimatedImageRep.h"
19 | #import "SDAnimatedImageView+WebCache.h"
20 | #import "SDAnimatedImageView.h"
21 | #import "SDDiskCache.h"
22 | #import "SDGraphicsImageRenderer.h"
23 | #import "SDImageAPNGCoder.h"
24 | #import "SDImageCache.h"
25 | #import "SDImageCacheConfig.h"
26 | #import "SDImageCacheDefine.h"
27 | #import "SDImageCachesManager.h"
28 | #import "SDImageCoder.h"
29 | #import "SDImageCoderHelper.h"
30 | #import "SDImageCodersManager.h"
31 | #import "SDImageFrame.h"
32 | #import "SDImageGIFCoder.h"
33 | #import "SDImageGraphics.h"
34 | #import "SDImageHEICCoder.h"
35 | #import "SDImageIOAnimatedCoder.h"
36 | #import "SDImageIOCoder.h"
37 | #import "SDImageLoader.h"
38 | #import "SDImageLoadersManager.h"
39 | #import "SDImageTransformer.h"
40 | #import "SDMemoryCache.h"
41 | #import "SDWebImageCacheKeyFilter.h"
42 | #import "SDWebImageCacheSerializer.h"
43 | #import "SDWebImageCompat.h"
44 | #import "SDWebImageDefine.h"
45 | #import "SDWebImageDownloader.h"
46 | #import "SDWebImageDownloaderConfig.h"
47 | #import "SDWebImageDownloaderDecryptor.h"
48 | #import "SDWebImageDownloaderOperation.h"
49 | #import "SDWebImageDownloaderRequestModifier.h"
50 | #import "SDWebImageDownloaderResponseModifier.h"
51 | #import "SDWebImageError.h"
52 | #import "SDWebImageIndicator.h"
53 | #import "SDWebImageManager.h"
54 | #import "SDWebImageOperation.h"
55 | #import "SDWebImageOptionsProcessor.h"
56 | #import "SDWebImagePrefetcher.h"
57 | #import "SDWebImageTransition.h"
58 | #import "UIButton+WebCache.h"
59 | #import "UIImage+ExtendedCacheData.h"
60 | #import "UIImage+ForceDecode.h"
61 | #import "UIImage+GIF.h"
62 | #import "UIImage+MemoryCacheCost.h"
63 | #import "UIImage+Metadata.h"
64 | #import "UIImage+MultiFormat.h"
65 | #import "UIImage+Transform.h"
66 | #import "UIImageView+HighlightedWebCache.h"
67 | #import "UIImageView+WebCache.h"
68 | #import "UIView+WebCache.h"
69 | #import "UIView+WebCacheOperation.h"
70 | #import "SDWebImage.h"
71 |
72 | FOUNDATION_EXPORT double SDWebImageVersionNumber;
73 | FOUNDATION_EXPORT const unsigned char SDWebImageVersionString[];
74 |
75 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/SDWebImage/SDWebImage.modulemap:
--------------------------------------------------------------------------------
1 | framework module SDWebImage {
2 | umbrella header "SDWebImage-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage
2 | DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_LDFLAGS = $(inherited) -framework "ImageIO"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | SUPPORTS_MACCATALYST = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/SnapKit/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 3.1.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/SnapKit/SnapKit-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_SnapKit : NSObject
3 | @end
4 | @implementation PodsDummy_SnapKit
5 | @end
6 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/SnapKit/SnapKit-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/SnapKit/SnapKit-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double SnapKitVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char SnapKitVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/SnapKit/SnapKit.modulemap:
--------------------------------------------------------------------------------
1 | framework module SnapKit {
2 | umbrella header "SnapKit-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/CleanTalk/Pods/Target Support Files/SnapKit/SnapKit.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SnapKit
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapKit
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ios-app
2 | =======
3 | iOS app to control comments/signups/contacts/orders on a web-site via CleanTalk anti-spam app.
4 |
--------------------------------------------------------------------------------